** バックアップ方針
以下のファイルのダンプレストアを実施すると過程します
DBUser:root** 事前に確認
DBPass:なし
DBHost:localhost
フルダンプ:/home/taterole/fulldump/2018-01-01-1
差分ダンプ:/home/taterole/increment/2018-01-02-1
差分ダンプ:/home/taterole/increment/2018-01-03-1
差分ダンプ:/home/taterole/increment/2018-01-04-1
差分ダンプ:/home/taterole/increment/2018-01-05-1
差分ダンプ:/home/taterole/increment/2018-01-06-1
- openfilesの確認をしておく
# ulimit -n- /etc/security/limits.confに追記
======================================================
1024
======================================================
■DB数がすると、デフォの1024では"too many open files"が出るかも
-- バックアップ
# cp -pi /etc/security/limits.conf{,.`date +%Y%m%d`}-- 2行追記
# sed -i \-- 差分
-e '/student - maxlogins/a *\t\tsoft\tnofile\t\t8192' \
-e '/student - maxlogins/a *\t\thard\tnofile\t\t8192' \
limits.conf
======================================================
#ftp hard nproc 0
#@student - maxlogins 4 ← この行の下に
* soft nofile 8192 ← ソフトリミット8192
* hard nofile 8192 ← ハードリミット8192
======================================================
# diff /etc/security/limits.conf{.`date +%Y%m%d`,}** バックアップ方法
======================================================
--- /etc/security/limits.conf.YYYYMMDD YYYY-MM-DD XX:XX:XX.000000000 +0900
+++ /etc/security/limits.conf YYYY-MM-DD XX:XX:XX.000000000 +0900
@@ -57,5 +57,7 @@
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
+* soft nofile 8192
+* hard nofile 8192
# End of file
======================================================
■こんな感じで2行追記されてるはず
- フルダンプ
# xtrabackup --user=root --backup --galera-info --target-dir=/home/taterole/fulldump/2018-01-01-1 --no-lock- 差分バックアップ(初回)
# xtrabackup --user=root --backup --galera-info --target-dir=/home/taterole/increment/2018-01-02-1 --incremental-basedir=/home/taterole/fulldump/2018-01-01-1 --no-lock- 差分バックアップ(二回目以降)
■初回差分バックアップは、--incremental-basedirにフルダンプの取得先を指定
# xtrabackup --user=root --backup --galera-info \** 復旧データの結合作業
--target-dir=/home/taterole/increment/2018-01-03-1 \
--incremental-basedir=/home/taterole/increment/2018-01-02-1 --no-lock
# xtrabackup --user=root --backup --galera-info \
--target-dir=/home/taterole/increment/2018-01-04-1 \
--incremental-basedir=/home/taterole/increment/2018-01-03-1 --no-lock
# xtrabackup --user=root --backup --galera-info \
--target-dir=/home/taterole/increment/2018-01-05-1 \
--incremental-basedir=/home/taterole/increment/2018-01-04-1 --no-lock
# xtrabackup --user=root --backup --galera-info \
--target-dir=/home/taterole/increment/2018-01-06-1 \
--incremental-basedir=/home/taterole/increment/2018-01-05-1 --no-lock
■二回目移行の差分バックアップは、--incremental-basedirに前回の差分バックアップの取得先を指定する
- ベースダンプファイルのプリペア
# xtrabackup --user=root --prepare --apply-log-only --target-dir=/home/taterole/fulldump/2018-01-01-1- ベースダンプファイルに差分ダンプを結合しプリペア(ベースにどんどん古い順から結合を行っていきます)
# xtrabackup --user=root --prepare --apply-log-only \** 全体リストア(MySQLの停止が必要)
--target-dir=/home/taterole/fulldump/2018-01-01-1 \
--incremental-dir=/home/taterole/increment/2018-01-02-1
# xtrabackup --user=root --prepare --apply-log-only \
--target-dir=/home/taterole/fulldump/2018-01-01-1 \
--incremental-dir=/home/taterole/increment/2018-01-03-1
# xtrabackup --user=root --prepare --apply-log-only \
--target-dir=/home/taterole/fulldump/2018-01-01-1 \
--incremental-dir=/home/taterole/increment/2018-01-04-1
# xtrabackup --user=root --prepare --apply-log-only \
--target-dir=/home/taterole/fulldump/2018-01-01-1 \
--incremental-dir=/home/taterole/increment/2018-01-05-1
# xtrabackup --user=root --prepare --apply-log-only \
--target-dir=/home/taterole/fulldump/2018-01-01-1 \
--incremental-dir=/home/taterole/increment/2018-01-06-1
■差分ファイルが複数ある場合は、古い順に結合を実施
- MySQLの停止
# service mysql stop- MySQLディレクトリをリネーム
# mv /var/lib/mysql{,_bkup}- 結合済みのディレクトリをMySQLディレクトリに戻す
# xtrabackup --copy-back --target-dir=/home/taterole/fulldump/2018-01-01-1- 所有者の変更
# chown -R mysql:mysql /var/lib/mysql- MySQLの起動
# service mysql start
** データベース個別リストア(データベースへの書き込みがないことを確認した後に作業を行う) [#w56ddd8d]
- MySQLの停止(絶対にアクセスが無い自信があればオンラインで可能でした)
# service mysql stop- 既存のデータベースファイル格納ディレクトリを移動
# mv /var/lib/mysql/cool_ranko_db /tmp/cool_ranko_db- 結合済みのバックアップファイルから対象のデータベースディレクトリを、mysqlのディレクリに移動
# rsync -av /home/taterole/fulldump/2018-01-01-1/cool_ranko_db /var/lib/mysql/- 権限及びパーミッションの変更を行う
# chown -R mysql:mysql /var/lib/mysql/cool_ranko_db && chmod 700 cool_ranko_db- MySQLの起動
# service mysql start
** 補足
- フルと差分どっちがいいのか
大量のデータベースをダンプする場合、- なぜinnobackupexを使わずxtrabackupを使うのか
時間:差分ダンプ>フルダンプ
容量:フルダンプ>差分ダンプ
となります。
リストアする場合は、結合等の手間を含めると当然
時間:フルダンプ>差分ダンプ
となりますので、容量が許すのであればフルダンプで都度取得しておくのがいいかもしれません。
バージョンアップした際にラッピングされたコマンドは、変更点がわかりにくいという欠点があるためです** おわり
それとどこかのアメリカ語のコミュニティで未来のバージョンでinnodbbackupexはなくなるよ。的な
発言を見た気がするからです(ソース失念…夢かも)
innobackupexは2.1くらいからxtrabackupへのシンボリックリンクに変わっていて、どっちを使っても同じ動作になっていますが、非推奨(xtrabackupの方を使ってね)になっています。
返信削除https://www.percona.com/doc/percona-xtrabackup/LATEST/innobackupex/innobackupex_script.html
ありがとうございます。
削除URLまでありがとうございます。確認させていただきました。