データベースサーバーのバックアッププロセスを自動化するスクリプトを作成する必要があります。現在、サーバーには19個のデータベースがあり、スクリプトが考慮する以外の特定のスキーマが生成されるのを防ぐために、「スキーマの表示」クエリにリストされているすべてのデータベースをバックアップしたいと思います。
私の考えは、各パターンを1日2回(例:0h00や12h00)ダンプして圧縮してフォルダに保存することです/home/{user}/database_backup/daily/[day_of_week]
。
週に一度、すべての[day_of_week]
フォルダが圧縮されます/home/{user}/database_backup/weekly/[week_of_month]
。
最後に、毎月一度すべてが[week_of_month]
圧縮されて保存され、/home/{user}/database_backup/monthly/
他のアプリケーションがテープにバックアップできるようになります。
/var/lib/mysql
今日では、これらのテープバックアップアプリケーションは毎日バックアップを実行しますが、必要なのは、これらのファイルを復元したり、他のデータベースサーバーで使用するのがやや難しいことです。
あまりにも一般的な質問であることを知っていますが、いつものようにあなたの助けに心から感謝します。
答え1
サーバー上のすべてのデータベースを繰り返して、シェルスクリプトから1つずつエクスポートできます。
#!/bin/sh
HOSTNAME='localhost'
MYSQLUSER='root'
MYSQLPASS='xyz'
for DB in $(mysql -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --batch --skip-column-names --execute="show databases");
do
local FILENAME=${HOSTNAME}_Database_${DB}.sql.gz
mysqldump $DB -h $HOSTNAME -u $MYSQLUSER --password=${MYSQLPASS} --triggers --routines --event | gzip -c > $FILENAME
done