ssdbクラスター+ keepalivedビルド実際の戦闘-5。バックアップと復元
環境
オペレーティングシステム:CentOS Linuxリリース7.6.1810(コア)
ssdb:1.9.7
keepalived:keepalived-2.0.16
IP:
マスター:10.11.100.87
スレーブ:10.11.100.88
vip:10.11.100.89
バックアップと復元
参照:SSDBデータのバックアップ(エクスポート/インポート)
ssdb公式は2つのバックアップソリューションを提供します:エクスポートとssdb-dump
バックアップのエクスポート
エクスポートバックアップでは、組み込みのssdb-cliツールを使用してssdbサーバーに接続し、バックアップ作業を実行します。エクスポートするコンテンツは、キー間隔に従ってフィルタリングできます。
1.データを作成する
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> set a 1
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set b 2
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set c 3
ok
(0.002 sec)
ssdb 10.11.100.87:8888> q
bye.
2.バックアップを実行します
バックアップスクリプトを直接実行する
ssdb 10.11.100.87:8888> export backup.ssdb
100%
done.
生成されたファイルを表示します。
[root@localhost ssdb]# ls
api deps ssdb_cli ssdb.conf ssdb-server var_slave
backup.ssdb log.txt ssdb-cli ssdb-dump ssdb_slave.conf
_cpy_ ssdb-bench ssdb-cli.cpy ssdb-repair var
[root@localhost ssdb]# cat backup.ssdb
set a 1
set b 2
set c 3
元のエクスポートステートメントは、setステートメントを使用してデータを保存することです。
さらに、キー間隔でデータベースをエクスポートする必要がある場合は、-iオプションを使用する必要があります。
ssdb 127.0.0.1:8888> export -i backup.ssdb
input KV range[start, end]:
start(inclusive, default none): a
end(inclusive, default none): z
input HASH range:
start(inclusive, default none):
end(inclusive, default none):
input ZSET range:
start(inclusive, default none):
end(inclusive, default none):
input QUEUE range:
start(inclusive, default none):
end(inclusive, default none):
コマンドexport -i backup.ssdbは、間隔[a、z]でKV、すべてのHASH、ZSET、QUEUEをエクスポートします
3.データ変更
データを変更し、aを削除し、dを追加します。
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> get a
1
(0.001 sec)
ssdb 10.11.100.87:8888> del a
ok
(0.002 sec)
ssdb 10.11.100.87:8888> set d 4
ok
(0.001 sec)
4.インポート
バックアップスクリプトをデータベースにインポートします。
ssdb 10.11.100.87:8888> import backup.ssdb
33%
66%
100%
done.
5.検証
確認ステータス:
ssdb 10.11.100.87:8888> get a
1
(0.001 sec)
ssdb 10.11.100.87:8888> get d
4
(0.001 sec)
以前に削除されたaは復元されましたが、バックアップの後に追加されたdはまだ存在しています。。。
この種類のexport-importコマンドは、バックアップ中にのみデータをsetステートメントに変換することを説明します。これは、リカバリ中にsetステートメントを実行することと同じです。この場合、新しく追加されたデータはバックアップ後に削除されません。
バックアップ時の状態を完全に復元したい場合は、データベースを完全に空にする必要があります。
ssdb-dumpバックアップ
インストールが完了した後、ssdbデータベースは独自のssdb-dumpコマンドを持ち、ツールディレクトリに保存されます。使用方法:
./tools/ssdb-dump ip port output_folder
オプション:
- ip-ssdbサーバーによって監視されるIPアドレス
- port-ssdbサーバーが待機するポート番号
- バックアップデータが作成されるoutput_folder-localディレクトリ
例:
./tools/ssdb-dump 127.0.0.1 8888 ./output_folder
ssdb-dumpがこのディレクトリを作成するため、ディレクトリoutput_folderは存在してはなりません。エクスポート後、このディレクトリには2つのサブディレクトリがあり、データディレクトリにはデータが含まれ、空のメタディレクトリがあります。
1.データを作成する
また、初期データを生成します。
[root@localhost ssdb]# ./ssdb-cli -h 10.11.100.87 -p 8888
ssdb (cli) - ssdb command line tool.
Copyright (c) 2012-2016 ssdb.io
'h' or 'help' for help, 'q' to quit.
ssdb-server 1.9.7
ssdb 10.11.100.87:8888> set a 1
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set b 2
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set c 3
ok
(0.001 sec)
2.バックアップを実行します
エクスポート:
[root@localhost ssdb]# ./ssdb-dump 10.11.100.87 8888 ./backup.ssdb
ssdb-dump - SSDB backup command
Copyright (c) 2012-2015 ssdb.io
recv begin...
received 1 entry(s)
received 3 entry(s)
recv end
total dumped 3 entry(s)
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
compacting data...
Compactions
Level Files Size(MB) Time(sec) Read(MB) Write(MB)
--------------------------------------------------
2 1 0 0 0 0
backup has been made to folder: ./backup.ssdb
backup.ssdbフォルダーが生成され、データディレクトリにはデータが含まれ、メタディレクトリは空のディレクトリです。
[root@localhost ssdb]# cd backup.ssdb/
[root@localhost backup.ssdb]# ls
data meta
[root@localhost backup.ssdb]# ls data/
000004.log 000005.ldb CURRENT LOCK LOG MANIFEST-000002
[root@localhost backup.ssdb]# ls meta/
3.データ変更
データを変更し、aを削除し、dを追加します。
ssdb 10.11.100.87:8888> del a
ok
(0.001 sec)
ssdb 10.11.100.87:8888> set d 4
ok
(0.001 sec)
4.インポート
work_dirを置き換えて、サービスを再起動します。
[root@localhost ssdb]# ./ssdb-server ssdb.conf -s stop
ssdb-server 1.9.7
Copyright (c) 2012-2015 ssdb.io
[root@localhost ssdb]# mv var var.bak
[root@localhost ssdb]# mv backup.ssdb var
[root@localhost ssdb]# ./ssdb-server -d ssdb.conf
ssdb-server 1.9.7
Copyright (c) 2012-2015 ssdb.io
5.検証
ssdb 10.11.100.87:8888> get a
1
(0.002 sec)
ssdb 10.11.100.87:8888> get d
not_found
(0.002 sec)
バックアップ状態に完全に復元