MariaDBのデータベース移行

mysqldump vs mariabackup

MySQL/MariaDBのデータベースのバックアップ・リストアの方法としては、古くからmysqldumpが有名で、この方法が広く知られています。
ただ、この方式はすべてのデータのSQL文を生成する方式のため、データサイズが大きくなりやすく、またリストア時にINSERT文を全て実行するため非常に時間がかかってしまうという問題点があります。

一方、MySQLから分裂したMariaDBではmariabackupというコマンドがあります。
mariabackupは使用できる環境が限られますが、バイナリデータでリストアするため、mysqldumpと比べて短時間で終了するというメリットがあります。特にリストアは非常に速いです。

私は両方使ったうえで、mariabbackupの方をお勧めします。

手順

[元] 移行元データベース
[先] 移行先データベース

[元・先] サーバーバージョンの最新化

yum update mariadb-server

[元・先] 必要なパッケージをインストール
qpressは圧縮・解凍する際に内部で使用する

yum install mariadb-backup
yum install qpress

[元] バックアップ
–compress を付けて圧縮する

mariabackup --backup --compress -h localhost -u root -p'E77fHpW6$nsV' --target-dir=/tmp/backup

[元] tarで1ファイルに固める

tar -cvf backup.tar /tmp/backup

[元] scp や rsync で移行先サーバーに送信
ここでは scp を採用

scp backup.tar.gz yourname@192.168.0.10:/home/yourname/

[先] tarを解凍

tar -xvf backup.tar

[先] 既存のデータベースのデータを削除
デフォルトは /var/lib/mysql にデータが保存されている。

sudo systemctl stop mariadb
rm -rf /var/lib/mysql/

[先] 圧縮したデータベースを解凍

mariabackup --decompress --remove-original --target-dir=tmp/backup

[先] データの正常性確認

mariabackup --prepare --target-dir=tmp/backup

[先] リストア

sudo mariabackup --move-back --target-dir=tmp/backup

[先] リストア時のユーザーとなってしまっているので、権限を戻す

sudo chown -R mysql. /var/lib/mysql/

[先] 再起動してデータ読み込み

sudo systemctl restart mariadb

最後にデータが移行されているか確認

[元] ゴミ掃除

rm backup.tar
rm -rf /tmp/backup

[先] ゴミ掃除

rm backup.tar
rm -rf /home/aaaaa/tmp/backup

私の環境では、50GB当たり30分程度で終了しました。

めちゃくちゃ楽!!

参考

mariabackupでバックアップ・リストアする - とほほのWWW入門
Mariabackupによるバックアップ/リストアでMariaDBレプリケーション環境構築
MariaDB(MySQL)でレプリケーション環境を構成していると、ふとした拍子にSlaveへの同期がエラーで停止してしまうことがたびたび起こります。都度、同期の原因を調査・解消してレプリケーション再

コメント

タイトルとURLをコピーしました