最新のプレフィックスファイルによる自動データベースバックアップのためのcronjob

最新のプレフィックスファイルによる自動データベースバックアップのためのcronjob

私は最新のLinux Mintを使用しています。データベースバックアップ用の特別なcronjobを作成できるかどうかを知りたいです。

私の/etc/cronjobファイルには次のコードがあります。

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh

私のものには/home/users/backup.sh次のものがあります。

mysqldump -uroot -p MyDatabase > /home/users/backup_MyDB/full_myDB.sql

代わりに、私たちが持っている日付に基づいて日付のようなものを動的に追加したいとfull_myDB.sql思います。2014-04-04_full_myDB.sql

SQLバックアップファイル一週間以上cronjobができることを願っています削除自動的に。

答え1

GNU date(Linux Mintのデフォルト)では、次のことができます。

mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql

1週間を過ぎたファイルを削除するには:

find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +

通常、削除する前に削除する内容を確認するのが賢明ですが(少なくともスクリプトをテストするとき)、これを行うには次のようにします。

find /home/users/backup_MyDB -type f -mtime +7

答え2

上記の情報を使用して、バックアップ速度を低下させる非常に大きなテーブルの1つを実際に切り捨てるもう1つの小さなアップデートを提供したいと思いました。

これが他の人に役立つことを願っています。

上記の情報を使用して、次の内容でmysqlbackup.shというデフォルトのシェルスクリプトを作成しました。

#!/bin/sh
find /data/var/backups/mysql/dumps -type f -mtime +3 -exec rm {} +
mysql -e "truncate table sitename_prod.cache_table"
mysqldump sitename_prod > /data/var/backups/mysql/dumps/$(date +%F)_full_sitename_prod.sql

以下を実行してください。chmod +x mysqlbackup.sh

私もこれをcrontab -eに入れました。

# MYSQL Dump and retention for 3 days
30 22 * * * bash /root/bin/mysqldump.sh > /dev/null 2>&1

答え3

私は古いことを知っていますが、上記の答えを使用してファイル圧縮の指示を追加しました。他の人もこれが役に立つと思います。

1)わずかな調査の終わりに7-zipが最高のコンプレッサーであるようです。 Linuxディストリビューションがそれをサポートしている場合は、適切なインストールプログラムを使用できます。

sudo apt-get install p7zip-full

または、より快適な場合は、tar.gzを使用することができます。

/home/users/backup.sh 2) 次に、次の内容でスクリプトを作成します。

#!/bin/sh
find /home/users/backup_MyDB -type f -mtime +7 -exec rm {} +
mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +%F)_full_myDB.sql
7z a /home/users/backup_MyDB/$(date +%F)_full_myDB.7z /home/users/backup_MyDB/*.sql
rm -f /home/users/backup_MyDB/*.sql

スクリプトは7日より古いファイルを見つけて削除し、SQLダンプを実行し、ディレクトリ内のすべての.sqlファイルを7-zipに圧縮し、ディレクトリ内のすべての.sqlを削除します(必要に応じてオプションでmysqlを追加します) )。前の回答で述べたようにダンプ前のコマンド)

chmod +x /home/users/backup.sh3)実行可能にした。

3.1)スクリプトが期待どおりに機能していることをテストする必要があります。

4) ジョブをプログラムします。crontab -e

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)                
30        4          *            *                1-6            /home/users/backup.sh >> /dev/null 2>&1

それはすべてです。毎日(日曜日を除く)午前4時30分にMySQLデータベースをバックアップし、バックアップを圧縮します。

答え4

@Graemeの回答に追加するには、cronジョブで「%」文字をエスケープする必要があるため、次のように表示できることに注意する価値があります。

 mysqldump -uroot -p MyDatabase >/home/users/backup_MyDB/$(date +\%F)_full_myDB.sql

関連情報