MySQL Cluster のバックアップ
曰く「クラスタ構成ということは、最悪2台以上のサーバが同じデータを保持するんだからバックアップいらねーだろが!」
曰く「じゃあ全台同時に死んだとき全責任とってくれるんだろうな、あ?」
曰く「ケンカうってんのかハイスラでバラバラにしてやろうか!」
曰く「まただよ(笑)」
という訳で、MySQL Cluster でバックアップを定期的に取得する方法です。前置きはこの際置いておくんだ、重要なことじゃない
。
#!/bin/sh #バックアップ実行時の日付を取得(YYYYMMDD) today=`date +%Y%m%d` #バックアップ実行時から14日前の日付 daysago=`date --date "14 days ago" +%Y%m%d` #バックアップの実行 ndb_mgm -c xxx.xxx.xxx.xxx -e "START BACKUP ${TODAY}" #14日前のバックアップファイルをポウ rm -rf /var/lib/mysql-cluster/BACKUP-$DAYSAGO
こんなとこかなー。上記のスクリプトだと14世代バックアップのはずです(2週間)。
ndb_mgm のオプションに「-e(--execute=)」で、ndb_mgm のシェルに直接命令を渡せるようです。あとは、ダブルクオートで囲ってやる必要があるっぽいので、ダブルクオート内で変数を認識させる為に ${TODAY} ってな感じでシェルスクリプトの変数を記述します。これで「BACKUP-20100701」のよーな感じのバックアップが出来上がります。バックアップが生成されるパスは、config.ini に記述したパス以下にバックアップ毎にディレクトリが生成されます。
MySQL Cluster をご利用で「おいィ?!」と言われてしまっている人は、相手を説得するのがめんどいなら、さっさとバックアップを取得しちまうといいですよ!
ちなみに
MySQLDUMP を利用すると、データベースをロックしてしまうはずなので、実行したサーバに存在するノードが。クラスタから切り離されます。なむなむ。