私はLinuxを持っていますcentos 6.4
サーバーとmysql5.6
私はこのような毎時のmysqlデータベースバックアップを作成するためのcronジョブを持っています
そのPythonで
os.popen("mysqldump -u %s --password=%s -h %s -e --opt --skip-lock-tables --skip-extended-insert -c %s | gzip -c > %s.gz" % (username, password, hostname, database, filename))
問題は、データがほとんど変更されないことですが、すべてのデータベースを24回バックアップする必要があるたびに、スペースがかかりすぎます。
そのための最良の選択肢は何ですか
データベースの完全バックアップを週に1回実行してから、増分バックアップのみを実行するように、増分バックアップを作成する方法はありますか。
単一のデータベースを復元する必要がある場合は、それも実行できるように、個別のデータベース用に個別のファイルが必要です。
非常に単純です:binlogging。バイナリログを少なくとも1日(場合によってはそれ以上)保持するようにmysqlを設定します。次に、バックアップを変更してmysqldumpを実行せず、xtrabackupなどを使用します。
これにより、バックアップスケジュールを1日1回に減らしても、binlogを使用して任意の時点にロールフォワードできる可能性があります。
ほとんどの状況で1時間ごとにバックアップするのはかなりばかげています。たぶん、別のノードへのmysqlレプリケーションを検討する必要があります。
Xtrabackupを使用して 増分バックアップ を実行できます。単一のデータベースを復元するには、完全バックアップと増分バックアップ(すべてのデータベースを含む)を準備してから、xtrabackupディレクトリをdatadirとして使用してMySQLを実行し、必要な単一データベースのmysqldumpを取得します。
スペースを節約したい場合は、フルバックアップを1時間ごとに続行できますが、 lessfs のような重複排除されたファイルシステムに対して実行できます。パーティションを簡単に切り分けて、lessfs
でフォーマット/マウントし、スペースなしで1時間ごとに復元できるようにしながら、重複排除を処理させることができます。