web-dev-qa-db-ja.com

MySQLはinnobackupexを使用して増分バックアップのみを復元します

製品をAWSに移行していますが、1.5TBのMySQLデータベースがあります。ダウンタイムを最小限に抑えてAWSに移行したいと思います。以下を実現する予定です。

  1. Percona XtraBackupinnobackupexを使用して完全バックアップを1つ作成します。
  2. AWSノードで復元します。
  3. 次に、最終的な移行の日に、増分バックアップを取り、AWSノードに復元します。

だから私の質問は、この方法で可能ですか?

私の調査によると、「増分」バックアップのみを復元することはできません。 Perconaが説明したように、完全バックアップを作成してから増分バックアップを作成し、それらを準備して、宛先で復元できる1つの完全バックアップを取得する必要があります。

1
xs2rashid

まず、増分バックアップを作成するには、増分バックアップを作成しているサーバーで完全バックアップを保持する必要があることを理解しましょう。

SERVER(A)で完全バックアップを取りますが、AWSSERVER(B)にプッシュすることができます。それは問題ではありませんが、インクリメンタルを取得するには、完全バックアップコピーをソースバックアップとして保持する必要があります。

[〜#〜] update [〜#〜]

以下はインクリメンタルのアプローチです。あなたが持っているアイデアが実行可能なものであるかどうかにかかわらず、あなたはあなたの答えを得ることができます。

  1. Xtrabackupフルバックアップが実行された後。

mkdir -p/backup /

innobackupex --defaults-file =/etc/my.cnf --user = mysql --password = ‘****’/backup /

ここから/ backup/2017-06-01_18-01-52完全バックアップセットを取得します。

  1. 完全バックアップで増分バックアップを取ります。

mkdir -p/backup/INCR

innobackupex --defaults-file =/etc/my.cnf --user = mysql --password = '*****' --incremental/backup/INCR --incremental-basedir =/backup/2017-06-01_18 -01-52 --slave-info

ここから/ backup/INCR/2017-06-01_18-10-41 /インクリメンタルデルタデータが取得されます。

  1. バックアップをマージする

innobackupex --defaults-file =/etc/my.cnf --user = mysql --password = '*****' --apply-log-only/backup/2017-06-01_18-01-52 /- -incremental-dir =/backup/INCR/2017-06-01_18-10-41 /

ここから/ backup/2017-06-01_18-01-52/2017-06-01_18-22-29最終バックアップセットが親(FULL BACKUP)にマージされ、そこからサブディレクトリが作成されます。

  1. 最終バックアップセットにログを適用します。

innobackupex --defaults-file =/etc/my.cnf --user = mysql --password = '*****' --apply-log/backup/2017-06-01_18-01-52/2017-06 -01_18-22-29

  1. これが最終的なデータセットです:/ backup/2017-06-01_18-01-52/2017-06-01_18-22-29/*、データディレクトリをこのデータセットに置き換えます-> 1〜4ステップごとにエラーと完了したOKは、すべての出力で見つかります。テストDBで結果の増分バックアップデータをテストし、それを復元して、サーバーがエラーメッセージなしで起動するかどうかを確認します。

My.cnfが/ mysql/data /を指している場合

  • service mysqld stop
  • mv/mysql/data/*/tmp/MOVED /
  • cp -r/backup/2017-06-01_18-01-52/2017-06-01_18-22-29/*/mysql/data /
  • chown -R mysql:mysql/mysql/data /
  • chmod -R 775/mysql/data /
  • service mysqld start
  • Mysqlにログインします

エラーログを確認し、いくつかの選択クエリを実行します。

1
Mannoj

環境とビジネスが許せば、別の方法で行うこともできます。

  1. バイナリログが有効になっている場合は、マスター情報(バイナリログの位置)を使用して、ソースサーバー(A)からPerconaの完全バックアップを取得します。

  2. ターゲットマシン(AWS)でバックアップを復元します。

  3. ターゲットマシンをソースマシンのスレーブにします(A)。

  4. 同期したら、すべてのアプリケーションの呼び出しを数分間停止し、ターゲット(B)を実際のマスターとして作成して読み取りと書き込みの呼び出しを受け入れます。

0
akumar