问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

mysql数据库怎么开启binlog

发布网友 发布时间:2022-04-21 08:31

我来回答

2个回答

热心网友 时间:2022-04-30 03:35

当启动Binlog后,事务会产生Binlog Event,这些Event被看做事务数据的一部分。因此要保证事务的Binlog Event和InnoDB引擎中的数据的一致性。所以带Binlog的CrashSafe要求MySQL宕机重启后能够保证:

- 所有已经提交的事务的数据仍然存在。

- 所有没有提交的事务的数据自动回滚。

- 所有已经提交了的事务的Binlog Event也仍然存在。

- 所有没有提交事务没有记录Binlog Event。

这些要求很好理解,如果重启后数据还在,但是Binlog Event没有了,就没办法复制到其他节点上了。如果重启后,数据没了,但是Binlog Event还在,那么不存在的数据就会被复制到其他节点上,从而导致主从的不一致。

为了保证带Binlog的CrashSafe,MySQL内部使用的两阶段提交(Two Phase Commit)。

热心网友 时间:2022-04-30 04:53

它是逻辑备份,优点可以备份各种存储引擎
1.备份所有的数据库
#mysqlmp -uroot -p --all-database >all.sql
2.备份指定的数据库
#mysqlmp -uroot -p test > test.sql
3.备份指定数据库中的表
#mysqlmp -uroot -p test s > test_s.sql
备份完全恢复实例
(1)上午9点备份数据库
#mysqlmp -uroot -p -l -F student > student.dmp
-l 给所有表加读锁
-F 生成一个新的日志文件
此时s表数据如下:
mysql> select * from s;
+------+-------+------+-----------+
| sno | sname | sex | address |
+------+-------+------+-----------+
| 0901 | Jim | 1 | shanghai |
| 0902 | helun | 2 | beijing |
| 0903 | sam | 1 | sichuan |
| 0904 | keke | 1 | xizang |
| 0905 | gugu | 1 | suzhou |
| 0906 | tang | 2 | guangdong |
+------+-------+------+-----------+
6 rows in set (0.00 sec)
备份完毕等到了student.dmp文件,还有mysql-bin.000012
(2)9点半备份完毕,然后插入新的数据
mysql> insert into s values('0907','liu','1','jiangxi');
Query OK, 1 row affected (0.00 sec)
mysql> insert into s values('0908','wang','2','wuxi');
Query OK, 1 row affected (0.00 sec)
(3)10点,数据库突然故障,数据无法访问.需要恢复备份:
#mysql -uroot -p student < student.dmp
恢复后的数据:
mysql> select * from s;
+------+-------+------+-----------+
| sno | sname | sex | address |
+------+-------+------+-----------+
| 0901 | Jim | 1 | shanghai |
| 0902 | helun | 2 | beijing |
| 0903 | sam | 1 | sichuan |
| 0904 | keke | 1 | xizang |
| 0905 | gugu | 1 | suzhou |
| 0906 | tang | 2 | guangdong |
+------+-------+------+-----------+
6 rows in set (0.00 sec)
(4)使用mysqlbinlog 恢复mysqlmp 备份以来的BINLOG
#mysqlbinlog mysql-bin.000012 |mysql -uroot -p student
查询完全恢复后的数据:
mysql> select * from s;
+------+-------+------+-----------+
| sno | sname | sex | address |
+------+-------+------+-----------+
| 0901 | Jim | 1 | shanghai |
| 0902 | helun | 2 | beijing |
| 0903 | sam | 1 | sichuan |
| 0904 | keke | 1 | xizang |
| 0905 | gugu | 1 | suzhou |
| 0906 | tang | 2 | guangdong |
| 0907 | liu | 1 | jiangxi |
| 0908 | wang | 2 | wuxi |
+------+-------+------+-----------+
8 rows in set (0.00 sec)
恢复完成!
基于时间点的恢复(不完全恢复)
由于误操作,比如删除了一张表,使用完全恢复是没有用的,我们需要的是恢复到误操作之前的状态,然后跳过误操作语句,再恢复后面执行的语句,完成恢复;
例:
(1)上午10点发生误操作,可以用如下语句备份和BINLOG将数据恢复到故障前
#mysqlbinlog --stop-date="2010-10-31 9:59:59" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p
(2)跳过故障时间点,继续执行后面的BINLOG,完成恢复
#mysqlbinlog --start-date="2010-10-31 10:01:00" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p
基于位置恢复(不完全恢复)
和基于时间点恢复类是,但是更加精确.因为同一时间点可能有多条SQL语句执行;
例:
#mysqlbinlog --start-date="2010-10-31 9:55:00" --stop-date="2010-10-31 10:05:00" /usr/local/mysql/var/mysql-bin.000013 > /tmp/mysql_restore.sql
该命令将在/tmp/目录下创建小的文件,编辑它找到错误语句前后的位置号,例如前后位置号分别是368312 和 368315
(2)恢复了以前的备份文件后,输入
#mysqlbinlog --stop-position="368312" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p
#mysqlbinlog --start-position="368315" /usr/local/mysql/var/mysql-bin.000013 |mysql -uroot -p
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
到4s店提新车注意事项和步骤是什么? 看到网吧了电脑桌面是动的,请问要怎么弄才可以把电脑桌面弄动起来~? 大型铸件加工厂家 山东浩信集团企业简介 孕妇梦见板栗什么意思 翻身训练的作用 云南中风偏瘫早期自我康复锻炼 实用偏瘫康复训练技术图解(第二版)详细介绍了哪些站起和站立训练方法... 松树扦插多久生根 松树扦插需要多长时间才能生根 松树扦插多久生根 王者荣耀怎么提高信誉积分? 如何动态监控mysql binlog 如何提高信誉积分 mysql 怎么启用binlog 现在王者荣耀七十分怎么增加信誉积分? 《王者荣耀》信誉等级怎么提升? mysql恢复数据mysqlbinlog 信誉积分怎么快速刷? 如何管理 MySQL 的 binlog MYSQL的binlog问题 狗狗吃完巧克力多久过危险期? 狗狗吃了巧克力以后该怎么办有什么措施吗 小狗能吃巧克力吗? 狗狗误吃了一小点巧克力会不会死 狗吃巧克力会怎么样 小狗不小心吃了巧克力怎么办 求助,金毛吃了巧克力怎么办 50多天的金毛自己偷吃了一个费列罗巧克力有没有事? 狗狗吃了一点巧克力怎么办? 金毛吃了巧克力蛋糕后拉肚子 王者荣耀如何快速恢复90信誉积分? crash-safe 是什么 如何恢复信誉积分 mysql执行完的更新语句成功还能恢复原来的数据吗 王者荣耀怎样加信誉积分 “王”是什么字? 王者信誉积分低于80怎么增加 王者荣耀里的信誉积分怎么上? mysqlbinlog 怎么将数据库恢复到指定的时间 谁知道王者荣耀有哪些英雄? 在数据库中,binlog和redolog有什么区别 如何有效地提高 MySQL 的备份和恢复速度 mysql5.6和5.7的区别是什么? 查看mysql是否为双机 mysql5.6和5.7的区别 MySQL各版本有什么不同吗 王者荣耀如何加信誉积分 王者荣耀信誉积分怎么刷 为什么数据库读写分离可以提高性能 “王”是什么字?