すべてのbinlogログのリストを表示します。
show master logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 149 |
| mysql-bin.000002 | 4102 |
+------------------+-----------+
2 rows in set (0.00 sec)
最新のbinlogを表示する
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 4102 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
ログの場所を表示する
show variables like 'log_%';
mysql> show variables like 'log_%';
+----------------------------------------+----------------------------------------+
| Variable_name | Value |
+----------------------------------------+----------------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/binlog |
| log_bin_index | /var/lib/mysql/binlog.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| log_error | /var/log/mysqld.log |
| log_error_services | log_filter_internal; log_sink_internal |
| log_error_suppression_list | |
| log_error_verbosity | 2 |
| log_output | FILE |
| log_queries_not_using_indexes | OFF |
| log_raw | OFF |
| log_slave_updates | ON |
| log_slow_admin_statements | OFF |
| log_slow_extra | OFF |
| log_slow_slave_statements | OFF |
| log_statements_unsafe_for_binlog | ON |
| log_throttle_queries_not_using_indexes | 0 |
| log_timestamps | UTC |
+----------------------------------------+----------------------------------------+19 rows in set (0.11 sec)
データベースのデータ損失をシミュレートしてデータを回復します。
新しいデータベーステストの作成1ライブラリに新しいデータテーブルtest1を作成し、いくつかのデータを挿入します
create database test1 CHARSET utf8;
CREATE TABLE test1(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,NAME VARCHAR(20) NOT NULL)ENGINE=INNODB CHARSET=utf8;
insert into test1(id,name)values(1,'andy');
insert into test1(id,name)values(2,'kevin');
insert into test1(id,name)values(3,'peter');
データベースを削除する
drop database test1;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| blog |
| goodssystem |
| hxpurchase |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.00 sec)
binlogを使用してログを復元します。
binlogログを表示し、データベースの作成文字列をフィルタリングして、コンテキストを5行表示します。
mysqlbinlog --base64-output=decode-rows -vvv /var/lib/mysql/binlog.000010|grep 'create database' -C 5
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 35484306
#201107 15:36:45 server id 1 end_log_pos 35484430 CRC32 0xbc93546e Query thread_id=1358 exec_time=0 error_code=0 Xid = 313396
SET TIMESTAMP=1604734605/*!*/;
/*!80016 SET @@session.default_table_encryption=0*//*!*/;
create database test1 CHARSET utf8
/*!*/;
create database test1 CHARSETutf8コマンドの開始位置番号が35484306であることがわかります。
####次に、drop databaseステートメントをフィルタリングし、コンテキストを5行表示します。
mysqlbinlog --base64-output=decode-rows -vvv /var/lib/mysql/binlog.000010|grep 'drop database' -C 5
/*!80014 SET @@session.immediate_server_version=80022*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 35485840
#201107 15:40:50 server id 1 end_log_pos 35485947 CRC32 0x75bb6265 Query thread_id=1358 exec_time=0 error_code=0 Xid = 313437
SET TIMESTAMP=1604734850/*!*/;
drop database test1
/*!*/;
ドロップデータベーステストによって実行された位置番号が35485840であることがわかります。次に、インターセプトの終了の位置番号を35485839に設定して、ドロップステートメントの前のすべてのログのみがインターセプトされるようにすることができます。
開始位置35484306、終了位置35485839、指定されたデータベースtest1のログをインターセプトし、それを.sqlファイルとして保存します。
mysqlbinlog --start-position=35484306 --stop-position=35485839 -d test1 /var/lib/mysql/binlog.000010 > /home/binlog_test.sql
mysqlと入力し、ソースを使用してデータを復元します
source /home/binlog_test.sql;
mysql> source /home/binlog_test.sql;
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Charset changed
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 1 row affected, 1 warning (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Database changed
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected, 1 warning (0.02 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.01 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
Query OK, 0 rows affected (0.00 sec)
結果を見る
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| blog |
| goodssystem |
| hxpurchase |
| information_schema |
| mysql |
| performance_schema |
| sys |
| test1 |
+--------------------+
8 rows in set (0.01 sec)
mysql> use test1;
use test1;
^C
mysql> show tables;
+-----------------+
| Tables_in_test1 |
+-----------------+
| test1 |
+-----------------+
1 row in set (0.00 sec)
mysql> select * from test1;
+----+-------+
| id | NAME |
+----+-------+
| 1 | andy |
| 2 | kevin |
| 3 | peter |
+----+-------+
3 rows in set (0.01 sec)