メムキャッシュだよぉーって言っておいて実は動いていたのは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, in 
    pump_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