メムキャッシュだよぉーって言っておいて実は動いていたのはCouchbaseでした!
というのを夢見る俺ですこんばんは。moxiで負荷分散されてたのどんな気持ち?って聞いてみたい。
今回はCouchbaseのバックアップツールである cbbackup
とwrapper tool cbbackupwrapper
についての話です。
cbbackupのパッチ@Couchbase 3.0.1
Couchbase社の 河村さん に教えてもらったのですが
Couchbase 3.0/3.0.1のcbbackupには不具合があり, cbbackupwrapperに対してPatchが提供されています。
https://issues.couchbase.com/browse/MB-15345
このパッチを適用すると cbbackupwrapper
に --sequential
オプションが追加され, vBucketのバックアップ並列度を指定することができるようになります。
cbbackup/cbbackupwrapperを使っていて、 MB-15345
のパッチを適用してない方は是非適用しましょう。
自分はCouchbase Community Edition 3.0.1を使ってますが、パッチを当てていないcbbackupで1レコード20KBのデータが1000万件あるCouchbaseサーバをc4.xlarge
のバックアップサーバにインストールしたcbbackupでバックアップしたところ、バックアップサーバのCPU使用率が100%になり無応答になる悲惨な状況を経験しました。
この問題を回避するため、重い腰を上げてパッチを当てようとしたところ、そもそもCouchbase Server Community 3.0.1(RHEL)にはcbbackupwrapper/cbrestorewrapperがインストールされていなかったので、Couchbase社が公開しているcouchbaes-cliのgithubリポジトリのCLIをcloneして使ってます。
https://github.com/couchbase/couchbase-cli
--sequential
オプションの代わりに --parallelism
と --number
オプションが追加されています。
上記リポジトリをcloneして cbbackupwrapper
を使ったところ、2000万件のデータをc4.2xlargeのバックアップサーバから約90分で取得できるようになりました。
cbbackupwrapperの引数を調整したらもう少し高速化できるかなーと考えてるところです。
これで解決かなーとと思いきや
Couchbase社のcouchbase-cliリポジトリにあるcbbackupwrapperを使ってたらある日からつらみが発生
あくまでも2000万件はテストで作ったデータなので、実データを cbbackupwrapper
で吸い上げみたところError with backup for running
という見慣れぬエラーメッセージが出力されていました。
- コマンド
$ cd /usr/local/couchbase-cli $ ./cbbackupwrapper -u **** -p **** http://192.168.0.11:8091 --path=/usr/local/couchbase-cli /mnt/cbbackup Error with backup for running /usr/local/couchbase-cli/cbbackup -v -t 1 --vbucket-list=[900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,9 19,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,944,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961 ,962,963,964,965,966,967,968,969,970,971,972,973,974,975,976,977,978,979,980,981,982,983,984,985,986,987,988,989,990,991,992,993,994,995,996,997,998,999] http://192.168.0.11:8091 /mnt/cbbackup/900-999 -u **** -p **** -m diff -b orenobucket 2>/mnt/cbbackup/logs/900-999.err Error with backup for running /usr/local/couchbase-cli/cbbackup -v -t 1 --vbucket-list=[1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,10 15,1016,1017,1018,1019,1020,1021,1022,1023] http://192.168.0.11:8091 /mnt/cbbackup/1000-1023 -u **** -p **** -m diff -b orenobucket 2>/mnt/cbbackup/log/1000-1023.err SUCCESSFULLY COMPLETED! $ echo $? 0
- cbbackupwrapperが出力するログ
各vBucketのメッセージ数とバイト数を見る限り、バックアップは問題なく取得できていそうですが、pythonのtrace backがなんだろう。
bucket: orenobucket, msgs transferred... : total | last | per sec batch : 7950 | 7950 | 16.3 byte : 3123659280 | 3123659280 | 6400204.6 msg : 459774 | 459774 | 942.1 Traceback (most recent call last): File "/usr/local/couchbase-cli/cbbackup", line 12, inpump_transfer.exit_handler(pump_transfer.Backup().main(sys.argv)) File "/usr/local/couchbase-cli/pump_transfer.py", line 94, in main rv = pumpStation.run() File "/usr/local/couchbase-cli/pump.py", line 140, in run self.transfer_bucket_index(source_bucket, source_map, sink_map) File "/usr/local/couchbase-cli/pump.py", line 265, in transfer_bucket_index source_bucket, source_map) File "/usr/local/couchbase-cli/pump_dcp.py", line 92, in provide_index err, index_server = pump.filter_server(opts, source_spec, 'index') File "/usr/local/couchbase-cli/pump.py", line 1050, in filter_server if filtor in node["services"] and node["status"] == "healthy": KeyError: 'services'
OSはAmazon Linux.システムのPythonは2.7.9
いきなり発生してつらあじ。
とりあえずcbrestorewrapperでリストアできるか試してみる・・・
元記事はこちら
「Couchbase 3.0.1 cbbackupの話とcbbackupwrapper実行中のエラー Error with backup for running cbbackup」