mysql 日志表设计_在mysql 使用binlog日志
一. 利用binlog恢復(fù)庫(kù)表
策略:
1.啟用binlog日志
2.創(chuàng)建db1庫(kù)tb1表,插入3條記錄
3.刪除tb1表中剛插入的3條記錄
4.使用mysqlbinlog恢復(fù)刪除的3條記錄
步驟一:啟用binlog日志
1)調(diào)整/etc/my.cnf配置,并重啟服務(wù)
[mysqld]
......
log_bin=logdir
server_id=50
binlog_format=mixed
......
[root@MySQL50 ~]# systemctl restart mysqld
2)確認(rèn)binlog日志文件
新啟用binlog后,每次啟動(dòng)MySQl服務(wù)都會(huì)新生成一份日志文件:
[root@MySQL50 ~]# ls /var/lib/mysql/logdir.*
/var/lib/mysql/logdir.000001 /var/lib/mysql/logdir.index
其中l(wèi)ogdir.index文件記錄了當(dāng)前保持的二進(jìn)制文件列表:
重啟MySQL服務(wù)程序,或者執(zhí)行SQL操作“FLUSH LOGS;”,會(huì)生成一份新的日志:
[root@MySQL50 ~]# cat /var/lib/mysql/logdir.index
./logdir.000001
[root@MySQL50 ~]# systemctl restart mysqld
[root@MySQL50 ~]# cat /var/lib/mysql/logdir.index
./logdir.000001
./logdir.000002
步驟二:利用binlog日志重做數(shù)據(jù)庫(kù)操作
1)執(zhí)行數(shù)據(jù)庫(kù)表添加操作
創(chuàng)建db1·庫(kù)tb1表,表結(jié)構(gòu)自定義:
mysql> create database db1;
Query OK, 1 row affected (0.11 sec)
mysql> create table db1.tb1 (
-> id tinyint,
-> name char(18)
-> );
Query OK, 0 rows affected (0.68 sec
mysql> insert into db1.tb1 values(
-> 1,"yangmi"),
-> (2,"tangyuan"),
-> (3,"liuyan");
Query OK, 3 rows affected (0.13 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from db1.tb1;
+------+----------+
| id | name |
+------+----------+
| 1 | yangmi |
| 2 | tangyuan |
| 3 | liuyan |
+------+----------+
3 rows in set (0.00 sec)
2)刪除前一步添加的3條表記錄
執(zhí)行刪除所有表記錄操作:
mysql> delete from db1.tb1;
Query OK, 3 rows affected (0.14 sec)
mysql> select * from db1.tb1;
Empty set (0.00 sec)
步驟三:通過(guò)binlog日志恢復(fù)表記錄
binlog會(huì)記錄所有的數(shù)據(jù)庫(kù)、表更改操作,所以可在必要的時(shí)候重新執(zhí)行以前做過(guò)的一部分?jǐn)?shù)據(jù)操作,但對(duì)于啟用binlog之前已經(jīng)存在的庫(kù)、表數(shù)據(jù)將不適用。
根據(jù)上述“恢復(fù)被刪除的3條表記錄”的需求,應(yīng)通過(guò)mysqlbinlog工具查看相關(guān)日志文件,找到刪除這些表記錄的時(shí)間點(diǎn),只要恢復(fù)此前的SQL操作(主要是插入那3條記錄的操作)即可。
[root@MySQL50 ~]# cat /var/lib/mysql/logdir.index
./logdir.000001
./logdir.000002
mysql> show variables like "binlog_format";
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| binlog_format | MIXED |
+---------------+-------+
1 row in set (0.01 sec)
2) 執(zhí)行指定Pos節(jié)點(diǎn)范圍內(nèi)的sql命令恢復(fù)數(shù)據(jù)
mysql> create table db1.tb2 ( id tinyint, name char(12) );
Query OK, 0 rows affected (0.40 sec)
alert user root@localhost identified by "Wjc_2018";
總結(jié)
以上是生活随笔為你收集整理的mysql 日志表设计_在mysql 使用binlog日志的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: cffps低怎么解决
- 下一篇: 快手如何赚钱(上的快手极速版)