この記事では mysql5.5 centos6.5 64 ビットを使用します (mysql のインストールには rpm を使用し、データベースのインストール ディレクトリはデフォルトです)
読み取りロックの問題: データベース (または特定のテーブル) ) 読み取りロック操作が実行されると、データベースの書き込み操作に影響を与えるため、現時点ではデータベースに書き込むことができません。データのバックアップ中に読み取りロック操作が実行されるのは、バックアップ データの整合性と一貫性を確保するためであり、データのバックアップが完了すると、自動的にロックが解除されます。
更新ログの問題: データがバックアップされるたびに新しいログ ファイルが生成されるため、一定期間のバックアップ後にデータベースが突然クラッシュした場合でも、bin-log ログを使用してデータを復元できます。その期間。データ回復手順: バックアップ データを復元 + 最新の bin-log ログ内のデータを復元します
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. データ復旧[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 サイトの他の関連記事を参照してください。