ホームページ  >  記事  >  データベース  >  mysqlデータのバックアップとリカバリの詳細な説明

mysqlデータのバックアップとリカバリの詳細な説明

迷茫
迷茫オリジナル
2017-03-26 13:31:421167ブラウズ

この記事では mysql5.5 centos6.5 64 ビットを使用します (mysql のインストールには rpm を使用し、データベースのインストール ディレクトリはデフォルトです)

1. データのバックアップに関する注意事項

読み取りロックの問題: データベース (または特定のテーブル) ) 読み取りロック操作が実行されると、データベースの書き込み操作に影響を与えるため、現時点ではデータベースに書き込むことができません。データのバックアップ中に読み取りロック操作が実行されるのは、バックアップ データの整合性と一貫性を確保するためであり、データのバックアップが完了すると、自動的にロックが解除されます。

更新ログの問題: データがバックアップされるたびに新しいログ ファイルが生成されるため、一定期間のバックアップ後にデータベースが突然クラッシュした場合でも、bin-log ログを使用してデータを復元できます。その期間。データ回復手順: バックアップ データを復元 + 最新の bin-log ログ内のデータを復元します

2. 書籍のバックアップに mysqldump を使用します

mysqldump: データベース内のデータをテキスト ファイルにバックアップするコマンド。テーブルの構造とテーブル内のデータは、生成されたテキスト ファイルに保存されます。

mysqldump コマンドの仕組み: まず、バックアップする必要があるテーブルの構造を見つけて、テキスト ファイルに CREATE ステートメントを生成します。次に、テーブル内のすべてのレコードを INSERT ステートメントに変換します。次に、これらのステートメントを通じて、テーブルを作成し、データを挿入できます。

テストデータベースを/tmp/mysql_back/ディレクトリにバックアップします

 [root@localhost tmp]# mysqldump -uroot -p111111 test -l -F > '/tmp/mysql_back/test.sql';

パラメータの解釈: mysqldump mysqlデータバックアップコマンド

2. -uroot -p111111 ユーザー名とパスワード

3.バックアップデータベース名

4、-l: 読み取りロック制御を実行します

5、-F: 新しいログファイルを生成します

このステートメントを実行すると、/var/lib/ に新しい bin が生成されることがわかります。 mysql ディレクトリ ログ mysql-bin.000002

6, /tmp/mysql_back/test.sql: 生成されたバックアップ ファイルの場所と名前

3. データ復旧

1. バックアップ データ復旧:

 [root@localhost tmp]# mysql -uroot -p111111 test -v -f</tmp/mysql_back/test.sql

- v: インポートの詳細を表示します

-f: インポートプロセス中にエラーが発生した場合は、それをスキップして次のステートメントの実行を続行できます。

2. bin-log ログ内のデータを復元します:

このログには、/var/lib/mysql の下の mysql-bin.000002 ログ内のすべてのレコードが含まれます

[root@localhost mysql]# mysqlbinlog --no -defaults mysql-bin.000002 |mysql -uroot -p111111 test;

3. bin-log ログ内の指定された位置にデータを復元します

位置position を通じてデータを復元します

BEGIN
/*!*/;
# at 175
#170206 22:55:48 server id 1  end_log_pos 263     Query    thread_id=17    exec_time=0    error_code=0
use `test`/*!*/;
SET TIMESTAMP=1486392948/*!*/;
insert into t1 values(10)
/*!*/;
# at 263
#170206 22:55:48 server id 1  end_log_pos 290     Xid = 178
COMMIT/*!*/;
# at 290
#170206 22:55:54 server id 1  end_log_pos 358     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
BEGIN
/*!*/;
# at 358
#170206 22:55:54 server id 1  end_log_pos 446     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486392954/*!*/;
insert into t1 values(12)
/*!*/;
# at 446
#170206 22:55:54 server id 1  end_log_pos 473     Xid = 179
COMMIT/*!*/;
# at 473
#170206 22:56:42 server id 1  end_log_pos 547     Query    thread_id=17    exec_time=0    error_code=0
SET TIMESTAMP=1486393002/*!*/;
truncate t1

bin 内の位置を復元します-log log at 172, 473 (end_log_pos) のデータ

[root@localhost mysql]# mysqlbinlog --no-defaults mysql-bin.000002 --start-position="175" --stop-position="473" |mysql -uroot -p111111 test;

4. bin-log ログ内の指定された期間のデータを復元します

形式:

--start-position="175" の 3 を --start-date に置き換えます。 ="2016-12- 30 21:30:34"

--stop-position="473" を --stop-date="2016-12-30 23:30:34"

に置き換えます

以上がmysqlデータのバックアップとリカバリの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。