MySQL Clusterは、メモリテーブルであっても、かなりディスク容量を消費する。
(6.2までは、ざっくりと「メモリテーブル見積」*10。メモリを32GB積んで、30GBほどをMySQL Clusterに割り当てたら、ざっくり300GBほどのHDDがあると良い。)
というわけで、MySQL Clusterのバックアップは「取りっぱなし」では、HDD容量を圧迫するので、MySQL Clusterのメンテナンス用スクリプトを作ってみた。
#!/bin/shbkupdir=`find /export/home/mysql-cluster/BACKUP/ -name "BACKUP*" |wc -l`
echo "The number of backup dir under BACKUP is:" $bkupdir
if [ $bkupdir -gt 0 ];
thencp -pr /export/home/mysql-cluster/BACKUP/* /xxxxx/mysql-cluster-backup/
rm -r /export/home/mysql-cluster/BACKUP/*
find /xxxxx/mysql-cluster-backup/ -mtime +0 -name "BACKUP*" -exec rm -r {} \;else
echo "The BACKUP-X directory is none."
fi
想定シナリオは以下の通り。
・1日に1回(MySQL Clusterの)バックアップを取得する
・バックアップファイルは、/export/home/mysql-cluster/BACKUP/以下に1世代、/xxxxx/mysql-cluster-backup以下に1世代、の合計2世代保持
・各Data Nodeで実行する
Data Nodeは通常冗長化構成をとるので、「冗長化されているData Nodeが全てダウン」かつ「LCPでフラッシュしているイメージが使用不可でクラッシュリカバリできない」場合に、初めてバックアップファイルが必要となる。
なので、とりあえずは2世代で。
ちなみに、Management Nodeを2重化しておけば、バックアップ取得は、以下で可能。
ndb_mgm -e -c "xxxxx;yyyyy" "start backup"
xxxxxのManagement Nodeがダウンしているときは、yyyyyのManagement Nodeを経由して、バックアップコマンドがData Nodeへ発行される。