mysql データベースのバックアップ (mysqldump)

データをバックアップするための mysqldump コマンド

mysqldump -u root -p --databases 数据库1 数据库2 > xxx.sql

Mysqldump の一般的な操作例

1. すべてのデータベースのデータと構造をバックアップします。

mysqldump -uroot -p123456 -A > /data/mysqlbackup/mydb.sql

2. すべてのデータベースの構造をバックアップします (-d パラメータを追加)

mysqldump -uroot -p123456 -A -d > /data/mysqlbackup/mydb.sql

3. すべてのデータベース データをバックアップします (-t パラメーターを追加)

mysqldump -uroot -p123456 -A -t > /data/mysqlbackup/mydb.sql

4. 単一データベース (データベース名 mydb) のデータと構造をバックアップします。

mysqldump -uroot-p123456 mydb > /data/mysqlbackup/mydb.sql

5. 単一データベースの構造をバックアップする

mysqldump -uroot -p123456 mydb -d > /data/mysqlbackup/mydb.sql

6. 単一データベースのデータをバックアップする

mysqldump -uroot -p123456 mydb -t > /data/mysqlbackup/mydb.sql

7. 複数のテーブルのデータと構造をバックアップします(データと構造の個別のバックアップ方法は上記と同じです)。

mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlbackup/mydb.sql

8. 複数のデータベースを一度にバックアップする

mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlbackup/mydb.sql

MySQL バックアップ コンテンツを復元する

1. システムのコマンドラインで次を入力して復元します。

mysql -uroot -p123456 < /data/mysqlbackup/mydb.sql

2. mysql システムにログインした後、source コマンドを使用して、対応するシステム内のファイルを検索し、それを復元します。

mysql> source /data/mysqlbackup/mydb.sql

バックアップするスケジュールされたタスク

Linux では通常、実行する必要のある内容を記述するために BASH スクリプトが使用され、自動ログ生成を実現するために crontab コマンドが定期的に実行されます。
次のコードの機能は、mysql をバックアップすることです。crontab と連携して、バックアップの内容は、過去 1 か月 (31 日間) の毎日の mysql データベース レコードです。
一定数のバックアップ ファイルを維持するために BASH を作成する

Linux では、vi または vim を使用してスクリプトの内容を記述し、mysql_dump_script.sh という名前を付けます。

#!/bin/bash
#保存备份个数,备份31天数据
number=31
#备份保存路径
backup_dir=/root/mysqlbackup
#日期
dd=`date +%Y%m%d_%H%M%S`
#备份工具
tool=mysqldump
#用户名
username=root
#密码
password=TankB214
#将要备份的数据库
database_name=edoctor
#如果文件夹不存在则创建
if [ ! -d $backup_dir ];
then     mkdir -p $backup_dir;
fi
#简单写法 mysqldump -u root -p123456 users > /root/mysqlbackup/users-$filename.sql
$tool -u $username -p$password $database_name > $backup_dir/$database_name-$dd.sql
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dupm" >> $backup_dir/log.txt
#找出最早生成的备份
delfile=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | head -1`
#判断现在的备份数量是否大于$number
count=`ls -l -crt $backup_dir/*.sql | awk '{print $9 }' | wc -l`if [ $count -gt $number ]
then
#删除最早生成的备份,只保留number数量的备份
rm $delfile
#写删除文件日志
echo "delete $delfile" >> $backup_dir/log.txt
fi

上記のコードの主な意味は次のとおりです。

1. まず、番号、バックアップする最大数、バックアップ パス、ユーザー名、パスワードなどのさまざまなパラメータを設定します。

2. mysqldump コマンドを実行してバックアップ ファイルを保存し、操作を同じディレクトリ内の log.txt に出力して操作ログをマークします。

3. 削除するファイルを定義します。ls コマンドを使用してファイル名の列である 9 番目の列を取得し、最新の操作時刻で削除する必要があるファイルを定義します。

4. バックアップの数を定義します。ls コマンドと wc -l を使用して、sql で終わるファイルの行数を数えます。

5. ファイルが制限サイズを超えた場合は、最初に作成された SQL ファイルを削除します

crontabを使用してバックアップスクリプトを定期的に実行する

Linux では、定期的に実行されるタスクは通常、cron デーモン [ps -ef|grep cron] によって処理されます。cron は、コマンド ラインとその呼び出し時間が含まれる 1 つ以上の構成ファイルを読み取ります。cron設定ファイルは「crontab」と呼ばれます。これは「cronテーブル」の略です。

cronサービス

Cron は、手動介入なしでジョブを実行できる、Liunx のスケジュールされた実行ツールです。

# 启动服务
service crond start
# 关闭服务
service crond stop
# 重启服务
service crond restart
# 重新载入配置
service crond reload
# 查看服务状态 
service crond status

crontab 構文

crontab コマンドは、cron バックグラウンド プロセスの駆動に使用されるテーブルをインストール、削除、または一覧表示するために使用されます。ユーザーは、実行する必要がある一連のコマンドを crontab ファイルに入れて実行します。各ユーザーは独自の crontab ファイルを持つことができます。/var/spool/cron 下の crontab ファイルを直接作成または変更することはできません。crontab ファイルは、crontab コマンドによって作成されます。

crontabファイルに実行するコマンドと時間を入力する方法。このファイルの各行には 6 つのフィールドが含まれており、最初の 5 つのフィールドはコマンドが実行される時刻を指定し、最後のフィールドは実行されるコマンドです。各フィールドを区切るにはスペースまたはタブを使用します。

形式は次のとおりです。

minute hour day-of-month month-of-year day-of-week commands 

有効な値 00-59 00-23 01-31 01-12 0-6 (0 は日曜日) 数字に加えて、いくつかの特殊記号があります:「*」、「/」、「-」、「,」 , * 値の範囲内のすべての数値を表します。「/」はすべてを意味し、「/5」は 5 単位ごとを意味します。「-」は特定の数値から特定の数値までを意味します。「,」は複数の離散的な数値を区切ります。-l は、現在の crontab を標準出力に表示します。
-r は現在の crontab ファイルを削除します。
-e VISUAL または EDITOR 環境変数が指すエディタを使用して、現在の crontab ファイルを編集します。編集が終了して終了すると、編集したファイルが自動的にインストールされます。

cronスクリプトを作成する

ステップ 1: cron スクリプト ファイルを作成し、mysqlRollBack.cron という名前を付けます。15,30,45,59 * * * * echo “xgmtest…” >> xgmtest.txt は、print コマンドを 15 分ごとに実行することを意味します

ステップ 2: スケジュールされたタスクを追加します。コマンド「crontab crontest.cron」を実行します。終わり

ステップ 3: 「crontab -l」を使用して、スケジュールされたタスクが成功したかどうか、または対応する cron スクリプトが /var/spool/cron に生成されたかどうかを確認します。

注: この操作では、新しい crontab を追加するのではなく、ユーザーの crontab を直接置き換えます。

作成したスケジュールされたタスク スクリプトを定期的に実行します (最初にシェル スクリプトの実行許可を与えることを忘れないでください)

0 2 * * * /root/mysql_backup_script.sh

次に、crontab コマンドを使用して、記述されたタイミング スクリプトを指定します。

crontab mysqlRollback.cron

次に、次のコマンドを使用して、スケジュールされたタスクが作成されたかどうかを確認します。

crontab の使用例を添付します。

1. 毎朝6時に

0 6 * * * echo "Good morning." >> /tmp/test.txt
# 注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

2. 2時間ごと

0 */2 * * * echo "Have a break now." >> /tmp/test.txt

3. 午後 11 時から午前 8 時までの間、2 時間ごとに運行

0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

4. 毎月 4 日、毎週月曜日から水曜日の午前 11 時。

0 11 4 * 1-3 command line

5. 1月1日午前4時

0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
# 如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

6. /etc/cron.hourly 内のスクリプトを 1 時間ごとに実行します。

01 * * * * root run-parts /etc/cron.hourly

7. /etc/cron.daily 内のスクリプトを毎日実行します。

02 4 * * * root run-parts /etc/cron.daily

8. /etc/cron.weekly 内のスクリプトを毎週実行します。

22 4 * * 0 root run-parts /etc/cron.weekly

9. /etc/cron.monthly にあるスクリプトを毎月実行します。

42 4 1 * * root run-parts /etc/cron.monthly
注意: "run-parts" 这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。

10. 毎日午後 4 時、午後 5 時、午後 6 時の 5 分、15 分、25 分、35 分、45 分、55 分にコマンドを実行します。

5,15,25,35,45,55 16,17,18 * * * command

11. 毎週月曜日、水曜日、金曜日の午後 3 時にシステムがメンテナンス状態となり、システムが再起動されます。

00 15 * * 1,3,5 shutdown -r +5

12. 毎時 10 分と 40 分に、ユーザー ディレクトリで innd/bbslin コマンドを実行します。

10,40 * * * * innd/bbslink

13. ユーザー ディレクトリで bin/account コマンドを 1 時間ごとに 1 分に実行します。

1 * * * * bin/account

おすすめ

転載: blog.csdn.net/ZHAI_KE/article/details/132875297