MySQLサーバーをDebianサーバーで毎日バックアップする必要があります。そこにはたくさんのスクリプトがあることは知っていますが、SQLファイルとして毎日バックアップし、各バックアップを別々に(ファイル名として現在の日付?)同じフォルダーに配置して、各バックアップで1つのファイルを上書きしないようにする必要があります。
よろしく
私は常に使用しています automysqlbackup.sh mysqldumpを毎日実行し、1週間保持し、1か月間毎週バックアップを保持し、1年間毎月バックアップを保持します-またはそう...すべて非常に手間がかかりません!
何かのようなもの:
for db in $(mysql -e "show databases" -B --skip-column-names); do
mysqldump --opt --databases "$db" \
| gzip -3 --rsyncable > "/var/backup/$db-$(date +%Y-%m-%d).sql.gz"
done
その後、cronジョブでそれを使用して、毎日バックアップを実行できます。
Mysqldumpにすべてのデータベースを1つのファイルにダンプさせることはできますが、問題が発生した場合に1つのデータベースだけを復元することは非常に困難です。 rsyncを介してファイルを別のサーバーにコピーする場合は、-rsyncableオプションが本当に必要です。 rsyncよりもパフォーマンスが向上する代わりに、ディスクスペースを浪費します。これは主に、rsyncが転送するデータのブロックを計算する方法と関係があります。
ファイル名に日付を使用しないことを除いて、上記のスクリプトと非常によく似たものを使用します。これにより、古いバックアップのクリーンアップに対処する必要があります。 backuppcを使用して、古いコピーを保持します。すでにリモートバックアップソリューションをお持ちでない限り、backuppcを検討することを強くお勧めします。
Zmanda Recovery Manager(zrm-mysql)を試してみることもできます。
一見複雑すぎるように見えますが、ZRMのCommunity Editionを使用して、多数のリモートMySQLサーバー用に完全に暗号化された適切に管理された集中バックアップソリューションを作成しました。
トピックに関する詳細情報は、HowtoForgeにあります。例:
http://www.howtoforge.com/mysql-backups-with-zrm-2.
乾杯
私が以前行ったことの1つは、バックアップファイルが生成された後にバックアップファイルoff-serverを電子メールで送信することでした。そうすれば、サーバーが停止した場合でも、別のサーバーに最新のバックアップがあります。 rsyncまたはその他の方法を使用して、バックアップアーカイブを別のマシンに移動することもできます。
RSNAPSHOT.orgのrsnapshotを使用します。 「apt-getinstallrsnapshot」から入手できます。
マシンのSSHキーを設定した後は、チャームのように機能し、SSHを介して機能します... Webサイトには、MySQLをバックアップするためのスクリプトがいくつか用意されています。これらは、特定のニーズに合わせて変更できます。
rsnapshotは、ローカルシステムとリモートシステムのバックアップを作成するためのファイルシステムスナップショットユーティリティです。
Rsyncとハードリンクを使用すると、複数の完全バックアップを即座に利用できるようにすることができます。必要なディスク容量は、1つの完全バックアップと増分の容量よりもわずかに多くなります。
構成によっては、わずか数分でセットアップすることも可能です。ファイルは、rootユーザーが関与することなく、ファイルを所有するユーザーが復元できます。
または、すべてのデータベースを1つのSQLファイルにまとめたい場合:
mysqldump -u -p --opt --all-databases>/path/to/backup/$(date -Imin).sql
次に、1週間分のバックアップのみを保持します。
/ path/to/backup -type -f -mtime + 7-deleteを検索します
Davidは私にはよく見えますが、参考のためにさらにいくつかあります(2番目はすべてのデータベースをバックアップしますが、Davidのmysqlオプションは私が思うsedコマンドよりも優れています):
例1:
#!/bin/bash
#Create local backups of the mysql drupal database for easy restore
#KMB 2008
dumpdir='/root/drupaldumps'
backupdir='/root/drupal_backups'
myuser='drupal'
mypass='SECRET'
dumpfile="${dumpdir}/drupal-$(date +%s).sql"
mysqldump -udrupal -p${mypass} drupal > $dumpfile
mv $dumpfile ${backupdir}/
find $backupdir -name '*.sql*' -type f -mtime +7 -exec rm {} +
例2:
#!/bin/bash
#KMB March 2009
umask u=rw,g=,o=
dumpdir='/root/db_backups'
backupdir='/root/db_backups/dumps'
myuser='backup_user'
mypass='SUPER_SECRET'
while read database; do
dumpfile="${dumpdir}/${database}-$(date +%s).sql.bz2"
mysqldump -u $myuser -p${mypass} $database | bzip2 > $dumpfile
mv $dumpfile ${backupdir}/
done < <(mysql -u $myuser -p${mypass} -e 'show databases' -s | sed '1d;$d')
find $backupdir -name '*.sql.bz2*' -type f -mtime +7 -exec rm {} \;
スクリプトを crontab に追加することを忘れないでください
15 0 * * * /path/to/script.sh