ホームページ  >  記事  >  データベース  >  mysqldump を使用した MySQL データのバックアップ

mysqldump を使用した MySQL データのバックアップ

黄舟
黄舟オリジナル
2016-12-13 15:10:261135ブラウズ

1. さまざまな使用方法

A. 最も簡単な使用法:

mysqldump -uroot -pPassword [database name] 
> [dump file]

上記のコマンドは、指定されたデータベースをダンプ ファイル (ダンプ ファイル) にバックアップします。例:

mysqldump -uroot -p123 test > test.dump

によって生成された test.dump ファイルには、 Table ステートメント (データベース構造を生成) と、データを挿入するための Insert ステートメント。

B. --opt

--opt パラメーターを追加すると、生成されるダンプ ファイルは若干異なります:

。テーブル作成ステートメントには、テーブル名が存在する場合は削除が含まれます

。挿入にはロックが含まれます。テーブルをロックする前の table ステートメント tableName の書き込み、挿入後の挿入にはロック解除が含まれます テーブル


C. クロスホストバックアップ

targetDb データベースが host2 ホスト上に作成されている場合、次のコマンドを使用して、host1 上のsourceDb を host2 の targetDb にコピーします。

mysqldump --host=host1 --opt sourceDb| mysql --host=host2 -C targetDb

-C は、データ圧縮を使用するようにホスト間のデータ送信を指示します

D. 戻るテーブル構造のみをアップ

mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 > test.dump

はテーブル構造のみをバックアップします。 --databases は、バックアップするホスト上のデータベースを示します。 MySQL ホスト上のすべてのデータベースをバックアップする場合は、次のように --all-databases オプションを使用できます:

mysqldump --all-databases
> test.dump

E. バックアップ ファイルからデータベースを復元します

mysql [database name] < [backup file name]

2。 Linux cron コマンドと組み合わせます。スケジュールされたバックアップを実現するには

たとえば、特定のホスト上のすべてのデータベースを毎日午前 1 時 30 分にバックアップし、ダンプ ファイルを gz 形式に圧縮する必要がある場合は、次のコード行を /etc/crontab 設定ファイルに追加できます。

最初の 5 つのパラメータは分、時、日、月、年を表し、アスタリスクはいずれかを示します。 date '+%m-%d-%Y' は、現在の日付を MM-DD-YYYY 形式で取得します。

3. MySQL データベースをバックアップするための完全なシェル スクリプトの例

30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date &#39;+%m-%d-%Y&#39;`.sql.gz

上記のスクリプト ファイルは、backup.sh として保存され、システム内に 2 つのディレクトリ /olcbackup と /backup が作成されます。 Backup.sh が実行されるたびに、/backup ディレクトリ内にある、backup で始まる名前を持つすべてのファイルが /oldbackup ディレクトリに移動されます。

次のように、上記のスクリプトの実行計画を作成します:

#vi /backup/backup.sh

#!bin/bash
cd /backup
echo "You are in backup dir"
mv backup* /oldbackup
echo "Old dbs are moved to oldbackup folder"
File = backup-$Now.sql
mysqldump -u user -p password database-name > $File
echo "Your database backup successfully completed"

4. Mysqldump 完全バックアップ + mysqlbinlog バイナリ ログ増分バックアップ

mysqldump バックアップ ファイルからデータを復元すると、バックアップ ポイント以降の更新データが失われるため、mysqlbinlog バイナリ ログ増分バックアップも組み合わせる必要があります。バイナリ ロギングまたは mysqld を有効にするために、my.ini または my.cnf に次の設定が含まれていることを確認してください。 ---log-bin:

#crontab -e30 1 * * * /backup.sh

新しいバイナリ ログ ファイルを生成するには、mysqldump コマンドに --flush-logs オプションを指定する必要があります:

[mysqld]
log-bin=mysql-bin

この方法で生成される増分バイナリ ログ ファイルは、たとえば、mysql-bin です。 .000003、その後、それを復元します。 データは次のとおりです:


mysqldump --single-transaction --flush-logs --master-data=2 > backup.sql

さらに、mysqlbinlog では、--start-date、--stop-date、--start-position、および --stop-position パラメータを正確に指定することもできます。データを特定の時点に復元するか、特定の問題期間の後にデータを復元するには、次のように MySQL ドキュメントから関連する内容を直接抜粋します。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。