社区
MySQL
帖子详情
binlog为什么没有记录一些insert操作呢
不老书生
2012-10-18 01:52:18
两台服务器之间的mysql做了主从配置,但是发现有两张表主从不一致,分析发现主mysql的binlog里面少了一些insert语句,结果从表中就没有这部分数据,另外奇怪的是,并不是所有的insert都没有,而是部分,也就是说,对主mysql的两张表的部分insert操作没有记录,结果这些数据主表有,从表却没有。
...全文
1184
10
打赏
收藏
binlog为什么没有记录一些insert操作呢
两台服务器之间的mysql做了主从配置,但是发现有两张表主从不一致,分析发现主mysql的binlog里面少了一些insert语句,结果从表中就没有这部分数据,另外奇怪的是,并不是所有的insert都没有,而是部分,也就是说,对主mysql的两张表的部分insert操作没有记录,结果这些数据主表有,从表却没有。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
九月茅
2015-03-03
打赏
举报
回复
Replicate_Ignore_DB 肯定是这里设置了,所以被过滤了,不录入到binlog里面了啊。
loveflea
2012-10-28
打赏
举报
回复
指定数据局同步
假如您配置的是同步数据库database-A
但您连接默认的数据库不是database-A,如下面的插入的语句
use database-B;
insert into database-A.table values(...)
这种binlog是不会记录到database-A中的;所以主从就不一致
全部同步则没有这个问题
[Quote=引用 4 楼 的回复:]
奇怪,同步设置里去掉指定同步哪个数据库的设置(现在是同步所有数据库),问题就没了,那两张表的数据也完全同步了。
这不是不能同步指定数据库了吗?
求解啊!!!
[/Quote]
lover007
2012-10-25
打赏
举报
回复
复制的过滤主要有2种方式:
1,在主服务器在把事件从进二制日志中过滤掉,相关的参数是:binlog_do_db和binlog_ignore_db。
2,在从服务器上把事件从中继日志中过滤掉,相关的参数是replicate_*。
复制只能扩展读取,不能扩展写入,对数据进行分区可以进行扩展写入。
复制常见的问题:
一,从服务器到底落后于主服务器多少?用Maatkit工具里面的mk-heartbeat脚本。
二,如何确定主从服务器的数据是否一致?用Maatkit工具里面的mk-table-checksum脚本。
复制的优化:
在mysql复制环境中,有8个参数可以让我们控制,需要复制或需要忽略不进行复制的DB或table分别为:
下面二项需要在Master上设置:
Binlog_Do_DB:设定哪些数据库需要记录Binlog
Binlog_Ignore_DB:设定哪里数据库不需要记录Binlog
优点是Master端的Binlog记录所带来的Io量减少,网络IO减少,还会让slave端的IO线程,SQL线程减少,从而大幅提高复制性能,
缺点是mysql判断是否需要复制某个事件不是根据产生该事件的查询所在的DB,而是根据执行查询时刻所在的默认数据库(也就是登录时指定的库名或运行"use database"中指定的DB),只有当前默认DB和配置中所设定的DB完全吻合时IO线程才会将该事件读取给slave的IO线程.所以,如果在默认DB和设定须要复制的DB不一样的情况下改变了须要复制的DB中某个Table中的数据,该事件是不会被复制到Slave中去的,这样就会造成Slave端的数据和Master的数据不一致.同样,在默认的数据库下更改了不须要复制的数据库中的数据,则会被复制到slave端,当slave端并没有该数据库时,则会造成复制出错而停止.
下面六项需要在slave上设置:
Replicate_Do_DB:设定需要复制的数据库,多个DB用逗号分隔
Replicate_Ignore_DB:设定可以忽略的数据库.
Replicate_Do_Table:设定需要复制的Table
Replicate_Ignore_Table:设定可以忽略的Table
Replicate_Wild_Do_Table:功能同Replicate_Do_Table,但可以带通配符来进行设置。
Replicate_Wild_Ignore_Table:功能同Replicate_Do_Table,功能同Replicate_Ignore_Table,可以带通配符。
优点是在slave端设置复制过滤机制,可以保证不会出现因为默认的数据库问题而造成Slave和Master数据不一致或复制出错的问题.
缺点是性能方面比在Master端差一些.原因在于:不管是否须要复制,事件都会被IO线程读取到Slave端,这样不仅增加了网络IO量,也给Slave端的IO线程增加了Relay Log的写入量.
不老书生
2012-10-23
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
主从配置有问题,当初的配置是否成功。
[/Quote]
当初的配置是成功的,都能执行,只是里面有2张表的部分数据不能同步。
我们就配置成功后运行,开始检查一些表都正常同步了,以为没问题。后来查到有2张表的一部分数据没同步,就是说这2张表的另一部分数据也是能正常同步的,很奇怪。
现在是把制定同步的数据库配置去掉了,现在是同步所有数据库了(总共有两个数据库,其中一个本事不需要同步的),但是数据都能正常同步了。
Rotel-刘志东
2012-10-19
打赏
举报
回复
主从配置有问题,当初的配置是否成功。
ACMAIN_CHM
2012-10-18
打赏
举报
回复
是否当时的主从有问题?
不老书生
2012-10-18
打赏
举报
回复
奇怪,同步设置里去掉指定同步哪个数据库的设置(现在是同步所有数据库),问题就没了,那两张表的数据也完全同步了。
这不是不能同步指定数据库了吗?
求解啊!!!
rucypli
2012-10-18
打赏
举报
回复
还没碰到过master插入数据 而binlog没有记录的,而且还是只针对特定一个表没有记录binlog
能重现吗 不能重现先把数据整同步
不老书生
2012-10-18
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
你说的这种情况基本不太可能
请确定主从表结构完全一致,并且show slave status正常
[/Quote]
您好!从表是主表备份恢复的,status正常,因为其他所有表和数据都是能够正常实时备份到从表的,就有两张表的部分插入数据不正常。查了很久才发现是一些insert操作没有记录到binlog文件里,所以无法同步到从机。
首先是binlog里就没有部分insert,感觉跟主从同步不同步还没有关系。
挠头好几天了,也没有解决思路。希望高手指点
rucypli
2012-10-18
打赏
举报
回复
你说的这种情况基本不太可能
请确定主从表结构完全一致,并且show slave status正常
mysql不
记录
bin
log
,
bin
log
为什么
没有
记录
一些
insert
操作
呢
复制的过滤主要有2种方式:1,在主服务器在把事件从进二制日志中过滤掉,相关的参数是:
bin
log
_do_db和
bin
log
_ignore_db。2,在从服务器上把事件从中继日志中过滤掉,相关的参数是replicate_*。复制只能扩展读取,不能扩展写入,对数据进行分区可以进行扩展写入。复制常见的问题:一,从服务器到底落后于主服务器多少?用Maatkit工具里面的mk-heartbeat脚本。二,如...
bin
log
日志中
没有
insert
的
记录
现象: 日志中有create、drop的
记录
,但是
没有
insert
的
记录
。 解决方法: 登录mysql后,设置
bin
log
的
记录
格式: set
bin
log
_format=statement; 然后,最好在my.ini中添加:
bin
log
_format=statement
mysql
bin
log
记录
insert
update delete的
记录
方式与flink sql不一样
查看
insert
,update,delete在mysql
bin
log
中是如何进行
记录
的 在flink sql中,update会转化为一条delete和一条
insert
, 故想看看在mysql
bin
log
的
记录
方式
mysql中的
bin
log
:
概述 MySQL中的
bin
log
是
记录
所有数据库表结构变更(例如 CREATE、ALTER TABLE) 以及表数据的修改(
INSERT
、UPDATE、DELETE)的二进制文件,,
bin
log
不会
记录
查询相关的
操作
,因为这类
操作
对于表的结构和数据本省
没有
进行修改.这些查询
操作
是可以通过查看系统通用日志来查看相关语句.
bin
log
的主要目的是复制和恢复,且是事务安全型的。
bin
log
以事件形式
记录
.
记录
的
操作
都有对应的事件,statement格式中的DML
操作
对应的是query_event ;
统计
bin
log
日志中
INSERT
/UPDATE/DELETE 事件摘要
工作中经常会遇到此类需求,如统计
bin
log
中是否存大事物、对事物事件摘要进行统计(事物涉及了那些表表、事物执行时间是什么时候、是更新
操作
多还是删除
操作
多),以下awk 脚本,它将使用 mysql
bin
log
输出并从基于行的二进制日志中打印出一个漂亮的
INSERT
/UPDATE/DELETE 事件摘要信息摘要脚本。 summarize_
bin
log
s.sh脚本内容: #!/
bin
/bash
BIN
LOG
_FILE="/data/mysql-
bin
.000473" START_TIME="2021-01
MySQL
56,875
社区成员
56,754
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章