2

私の考えは、cronjob を作成して、30 分ごとにデータベースの増分バックアップを取得することです。

ドキュメントによるとmysqlbackup、最初にデータベースの完全バックアップを作成してから、後で増分を取得する必要があるため、次のようにしました。

mysqlbackup --defaults-file=.my.cnf --compress \
   --socket=/var/lib/mysql/mysql.sock --no-locking \
   --compress-level=9 --databases=employees \
   --show-progress=stdout --backup-dir=/home/user/backup backup

次に、バックアップ ディレクトリに移動して増分ディレクトリを作成し、次のコマンドを実行して増分を取得します。

mysqlbackup --defaults-file=.my.cnf --incremental --no-locking \
  --databases=employees --socket=/var/lib/mysql/mysql.sock \
  --incremental-base=dir:backup/ \
  --incremental-backup-dir=backup/incrementals/ \
  backup

すべてが期待どおりに見えますが、もう一度実行しようとすると、次のエラーが発生します。

 mysqlbackup: ERROR: Backup directory already exists and is not empty.
 Remove backup directory and retry.

私がインクリメンタルを実行している主な理由は、バックアップ ファイルが 1 つしかないためです。これは理想的なシナリオではありません。特に、毎回インクリメンタル ディレクトリを削除する cronjob を作成したくないためです。新しい増分バックアップを取得します。

私の質問は、コマンドを実行するたびに増分バックアップを作成し、データベースで変更されたものを含む新しいファイルを作成するにはどうすればよいですか?

4

1 に答える 1

1

この同じ問題に遭遇し、別のオプション --with-timestamp を追加して、バックアップ ディレクトリに一意のファイル名を作成する必要がありました。

于 2018-12-11T19:23:35.217 に答える