はじめに
Amazon EC2で稼働しているMariaDB Galera Clusterのバックアップ/リストアプランについて考えています。
- mysqldump
- Percona Xtrabackup
- Clusterグループのメンバーノードを切り離してbackup
- データベースのテーブルをFLUSH TABLES WITH READ LOCKしてストレージのスナップショットバックアップ
今回は
今回はAmazon EBSを利用していることも有り[4.]を試してみました。
やり方は昔からあるLVM Snapshotを用いたパターンと同じです
※ご参考「SQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup」
ちなみにGalera Clusterには未サポートの機能があります。
MariaDB Galera Cluster – Known Limitations – MariaDB Knowledge Base
いくつかのLockコマンドはサポート対象外となっていますが FLUSH TABLES WITH READ LOCKはサポートされているので、問題なく利用できると考えています。
backup やってみる
2台または3台で構成するGalera Clusterのうち、どれか1台で下記コマンドを実行します. (wsrep_cluster_address=gcomm://ではないメンバーノードが良いと思います)
バックアップの実行
mysql -u root -p mysql> FLUSH TABLES WITH READ LOCK mysql> system sync mysql> system sync mysql> system sync <このポイントでEBS Snapshotを取得> mysql> UNLOCK TABLES mysql> exit
リストア試してみる
リストア
- mysqlを停止
- EBS スナップショットからcreate volume
- volumeをattach
- attachしたvolumeをmount
- service mysql start(wsrepがマスタよりデータ同期してくれる)
これでOKでしたよう。
問題
- マスタ死んだら直近までリストアできない。galera.cacheコピーしていいのかねと思ったら循環型…
と思ったらふつーにlog-binが効いた。
Galera Cluster + mysql slave(backup用途)の構成でいけそうかな?
清書しよう..
元記事はこちらです。
「MariaDB Galera Clusterのバックアップ・リストア – EBS Snapshotパターン」