share facebook facebook2 twitter menu hatena pocket slack

2015.08.27 THU

Couchbase 3.0.1 cbbackupの話とcbbackupwrapper実行中のエラー Error with backup for running cbbackup

岸上 健太郎

WRITTEN BY岸上 健太郎

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

岸上 健太郎

岸上 健太郎

頑張るぞ!