SSDBデータをTendisソリューションに移行する方法

1. 序文#

SSDBは、個人的に開発されたオープンソースの高性能KVストレージデータベースです。 redisプロトコルとの互換性、データハードディスクストレージのサポート、および使いやすさにより、業界で一定の評判を得ています。 SSDBの主な解決策は、Redisのストレージの問題です。最下層はストレージ用のLevelDBに基づいているため、データストレージのコストを大幅に削減できます。具体的な製品の紹介については、公式Webサイトを参照してください。

Tendisは、Tencent Cloudによって発売されたRedisハイブリッドストレージバージョンの製品であり、ネイティブのredisクラスタープロトコルと100%互換性があり、Redisの使用習慣を考慮しながら、大量のデータの低コストストレージを満たします。ほとんどの中小規模の顧客にとって、redisは頻繁に使用され、キャッシュされるデータの量は日々増加しており、彼らが直面するデータコストも増加しています。 Tendisの発売は、そのような顧客の問題点を解決するための製品です。具体的な商品紹介は【公式サイトドキュメント】(https://cloud.tencent.com/document/product/239/44392?from=10680)をご参照ください。

SSDBとTendisの主な違いは次のとおりです。

比較項目 傾向 SSDB
製品タイプ クラウドサービス オープンソース
製品チーム TencentCloudDatabase製品エキスパートチーム 個人
製品の反復 ビジネス側は注意を払う必要はありません 個人的なエネルギーは限られており、問題は時間内に解決できず、ビジネス側はソースコードに精通している必要があります
redis互換 redis-clusterプロトコル互換 redisプロトコル互換
ストレージタイプ RocksDBに基づくビルド LevelDBに基づくビルド
大容量データストレージ PBレベル、安定したパフォーマンス GBレベル、マスタースレーブシングルインスタンスデータ仕様が100 + GBに達すると、パフォーマンスが大幅に低下します
ストレージレイヤーのパフォーマンスの低下は小さく、アーキテクチャが決定され、キャッシュレイヤー(redis)とストレージレイヤー(rocksdb)が分離され、ビジネスはキャッシュレイヤーと直接対話します 大規模、ビジネスはLevelDBと直接対話し、圧縮などのストレージレイヤーの一部のメカニズムはリソースを消費しますさらに深刻なことに、ビジネスの読み取りと書き込みがブロックされ、データの同期やバックアップなどの他のものもノードに大きな影響を与えます

上記の比較項目の一部のみを示します。ssdbのテストプロセスで見つかった最大の問題は、実装が厳密ではない場所が多いことです。データ量が多くなると、LevelDBレイヤーの圧縮、メモリOOMの問題など、ビジネスへの影響は比較的大きくなります。これはコミュニティでよくある問題です。 SSDBソースコードに精通し、特定のビジネスニーズを満たすために対応する変更を加える必要があります。これにより、ビジネス側により高い要件が課せられ、ビジネス自体に集中できなくなります。これが、SSDBデータ移行プログラムが設計されている理由です。

2. 移行手順#

SSDBは、LevelDBに基づいて開発されたRedis準拠のKVストレージ製品です。製品アーキテクチャモデルは、Redis標準のシングルインスタンスと同じです。つまり、シングルマスターおよびマスタースレーブ同期アーキテクチャをサポートします。 Tendisは、Redisクラスターアーキテクチャと同様に、クラスターモードに属しています。単一インスタンスバージョンのRedisとクラスターバージョンのRedisにはいくつかの違いがあります。たとえば、すべてのキーは元々単一のマスターインスタンスに分散されていましたが、スロットはクラスター内の複数のノードインスタンスに分割され、元のようにキーがさらに分割されます。トランザクションとパイプラインを含む一部のロジックが影響を受ける可能性があります。ビジネス側でトランザクションとパイプラインに関連するコードロジックが多数ある場合は、インスタンスのクラスターバージョンに適応する方法を検討する必要があります。これには特定のビジネス分析が含まれるため、この記事では紹介しません。他の非標準バージョンのredisは、キーやスキャンなどのコマンドをサポートしています。クラスターバージョンの実装ロジックもシングルインスタンスバージョンとは異なり、特別な処理が必要です。

3. 移行準備#

3.1 移行ツール##

移行プロセス中は、サードパーティのオープンソース同期ツール[ssdb-port](https://github.com/imneov/ssdb-port)が依存します。オープンソースツールに基づいて、大きなキーと10億レベルのキーの同期効率に適応するためにいくつかのソースコード変換が行われました。ツールの説明:

3.2 Redisツール##

Tendisインスタンスへの接続とログインに使用され、現在は Redis-4.xバージョンのプロトコルと互換性があります。公式ウェブサイトからredisソースコードパッケージをダウンロードしてコンパイルするだけです。公式のコンパイルとインストールのチュートリアルを参照してください。

3.2 環境への準備##

3.2.1 Tencent Cloud Account

検証移行計画はTencentCloud環境に依存しており、関連するTencent Cloudリソースを申請するには、事前にTencentCloudアカウントを申請する必要があります。アカウントの申請方法については、TencentCloudの公式ウェブサイトチュートリアルをご覧ください。

3.2.2 Tencent CloudCVM環境アプリケーション###

移行計画では、SSDB環境と関連する移行ツールをインストールする必要があり、データソースの検証としてCVMリソースを適用する必要があります。仕様:2C4G、Centos 7.X、またはCentOS8.X。

3.2.3 テンディスインスタンスに申し込む###

移行計画では、宛先データソースとしてTendisに依存し、最小構成のTendisインスタンス(4スライス/ 64GBメモリ/ 200GBディスク)を申請し、フローに従って課金する必要があります。現在、Tendisは北京、上海、広州、香港に配備されています。

3.2.4 redisインストール###

テンディスインスタンスへのテスト接続は、ネイティブのredis-cliに依存します。redis-cliを直接コンパイルまたはダウンロードするには、redisソースコードパッケージをダウンロードする必要があります。 Tendisと互換性のあるRedisバージョンは 4.xです。

3.2.5 SSDBのインストール###

公式ウェブサイト、バージョン: 1.9.8、[ダウンロードリンク](https://github.com/ideawu/ssdb)からソースコードパッケージをダウンロードします。ダウンロード後、ソースコードパッケージ ssdb-master.zipをCVMマシンにアップロードし、解凍、コンパイル、インストールします。次のように:

unzip ssdb-master.zip
cd ssdb-master
make
make install
# デフォルトでインストールされます/usr/local/ssdbディレクトリ
cd /usr/local/ssdb
# ssdbを起動します-server
. /ssdb-server -d ./ssdb.conf -s start

# ssdbコマンドラインを入力します
. /ssdb-cli

SSDB-Server構成ファイルの内容は次のとおりです。

work_dir =./var
pidfile =./var/ssdb.pid
server:
	ip:127.0.0.1
 # デフォルトでポート8888を開始します
	port:8888
replication:
	binlog: yes
	sync_speed:-1
	slaveof:
logger:
	level: debug
	output: log.txt
	rotate:
		size:1000000000
leveldb:
	cache_size:500
	write_buffer_size:64
	compaction_speed:1000
	compression: yes

上記の手順から、SSDBのコンパイルと起動の方法はredisに似ており、簡単に開始できます。構成パラメーターの設定については、SSDB公式Webサイトの説明を参照してください。上記ではデフォルトのパラメーターが使用されています。

3.2.5 移行ツールのインストール###

移行ツール[iphon-v2](https://tendis-public-1258272208.cos.ap-guangzhou.myqcloud.com/siphon_v2)をダウンロードします。ツールをCVMマシンの対応するディレクトリにコピーします。ツールは次のように使用されます。

Usage:
	siphon sync [--pprof=0.0.0.0:6060][--ncpu=N][--parallel=M]--from=MASTER    --target=TARGET [--frompassword=MASTERPASSWORD][--targetpassword=SLAVEPASSWORD][--hashlen=len][--dry=isdry]

Options:--pprof								Set pprof addr and port,like 0.0.0.0:6060.-p M,--parallel=M                	Set the number of parallel, connection to redis.default is 10.-f MASTER,--from=MASTER          	Set host:port of master .-t TARGET,--target=TARGET        	Set host:port of target .-F MASTERPASSWORD,--frompassword	Set password of master .-T SLAVEPASSWORD,--targetpassword	Set password of target .-H LEN,--hashlen=len               Set Hash field append length .-d isdry,--dry=isdry               Just read from ssdb, not write target.

ネイティブのものと比較して、 -H -dの2つのパラメータがあります。

siphon-v2を使用するための特定のコマンドは次のとおりです。

#- p:同時スレッド数の制御、-f:ssdbを指定します-サーバーアドレス、-t:宛先テンディスアドレスを指定します,-T:テンディスインスタンスのパスワードを指定してください
. /siphon_v2  sync  -p 1-f 127.0.0.1:8888-t 172.16.16.47:6379-T tendis@pwd

4. 移行テスト#

4.1 SSDBデータシミュレーション##

ssdb-serverにログインし、コマンドを使用していくつかのデータを書き込みます。次のように:

[ root@VM-16-44-centos]# cd /usr/local/ssdb
[ root@VM-16-44-centos ssdb]# ./ssdb-cli
ssdb(cli)- ssdb command line tool.Copyright(c)2012-2016 ssdb.io

' h' or 'help'for help,'q' to quit.

ssdb-server 1.9.8

ssdb 127.0.0.1:8888> hset myhash k1 v1
ok(0.000 sec)
ssdb 127.0.0.1:8888> hset myhash k2 v2
ok(0.000 sec)
ssdb 127.0.0.1:8888> hset myhash k3 v3
ok(0.000 sec)

4.2 移行ツールを開始します##

新しい端末を開いてCVMにログインし、次のコマンドを実行して移行ツールを起動します。

. /siphon_v2  sync  -p 1-f 127.0.0.1:8888-t 172.16.16.47:6379-T tendis@pwd

起動後、以下に示すように、コンソール出力が表示されます。

siphon_start.png

図の赤いボックスは、完全なデータ同期プロセスを示しています。

4.3 Tendisデータビュー##

次に、新しい端末を開いてCVMにログインし、Tendisインスタンスにログインして、完全なデータ同期の結果を表示します。

[ root@VM-16-44-centos ~]# redis-cli -h 172.16.16.47-p 6379-a tendis@pwd
Warning: Using a password with'-a' option on the command line interfacemay not be safe.172.16.16.47:6379> hget myhash k1
" v1"172.16.16.47:6379> hget myhash k2
" v2"172.16.16.47:6379> hget myhash k3
" v3"172.16.16.47:6379>

上記の結果から、Tendisはssdb-serverに挿入されたばかりのデータを同期しました。

4.4 インクリメンタルデータ同期##

インクリメンタルデータの場合、移行ツールは最初に全量のデータを同期し、次にプロセスは終了せず、新しいデータの生成を待機し、Tendisへのインクリメンタル同期を実行します。

5. 移行の概要#

この記事では、少量のデータの同期プロセスのみをシミュレートします。実際のビジネス移行プロセスでは、次のように考慮すべき多くの問題があります。

Tencent Cloudは、ビジネスデータの作成と移行において多くの経験を蓄積してきました。また、DTSサービスなど、顧客に公開されているツールも多数あります。データ移行に関する相談や支援が必要な場合は、対応するサービスについていつでもTencentCloudカスタマーサービスに相談できます。

undefined

Recommended Posts

SSDBデータをTendisソリューションに移行する方法
Ubuntu14.04でDockerデータボリュームを使用する方法
Pythonはどのようにデータをjsonファイルに保存しますか
Ubuntu14.04でRedisデータをバックアップおよび復元する方法
Ubuntu20.04にアップグレードする方法
Ubuntu20.04にアップグレードする方法