随笔分类 -  MySQL 复制

摘要:下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆。 首先,创建一张测试表 存储过程 创建存储过程 通过查看二进制日志,可以看到该DDL语句已被记录 执行存储过程 查看二进制日志中,记录的是还是call p1('tom',10)操作记录对应的SQL 阅读全文
posted @ 2016-10-11 11:40 iVictor 阅读(7647) 评论(1) 推荐(1) 编辑
摘要:上文分析的二进制日志实际上是基于STATEMENT格式的,下面我们来看看基于ROW格式的二进制日志,毕竟,两者对应的binlog事件类型也不一样,同时,很多童鞋反映基于ROW格式的二进制日志无法查到原生的DML语句,关于这个问题,其实官方也给出了解决方案,下面,将一一揭晓。 首先,来几条测试数据 首 阅读全文
posted @ 2016-08-18 21:21 iVictor 阅读(10037) 评论(0) 推荐(1) 编辑
摘要:MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型。 首先,看看源码中定义的事件类型 源码位置:mysql-5.7.14/libbinlogevents 阅读全文
posted @ 2016-08-18 14:14 iVictor 阅读(12779) 评论(0) 推荐(1) 编辑
摘要:查看MySQL二进制文件中的内容有两种方式 1. mysqlbinlog 2. SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count] 下面来测试一下,在mysql中执行如下操作 对应二进制日志中的内容如下 阅读全文
posted @ 2016-08-17 14:51 iVictor 阅读(4089) 评论(0) 推荐(1) 编辑
摘要:MySQL的复制是基于binlog来实现的。 流程如下 涉及到三个线程,主库的DUMP线程,从库的IO线程和SQL线程。 1. 主库将所有操作都记录到binlog中。当复制开启时,主库的DUMP线程根据从库IO线程的请求将binlog中的内容发送到从库。 2. 从库的IO线程接受到主库DUMP线程发 阅读全文
posted @ 2016-08-16 09:35 iVictor 阅读(4628) 评论(0) 推荐(0) 编辑
摘要:RESET SLAVE的语法如下: 其中,channel_option主要是针对5.7.6引入的多源复制。 RESET SLAVE 官方的解释如下 其实,它是直接删除master.info和relay-log.info文件,并删除所有的relay log,然后重新生成一个新的relay log,即使 阅读全文
posted @ 2016-08-09 21:18 iVictor 阅读(7943) 评论(0) 推荐(2) 编辑
摘要:从MySQL5.5开始,MySQL以插件的形式支持半同步复制。如何理解半同步呢?首先我们来看看异步,全同步的概念 异步复制(Asynchronous replication) MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样 阅读全文
posted @ 2016-08-05 17:12 iVictor 阅读(62078) 评论(5) 推荐(23) 编辑
摘要:前几天,发现从库挂了,具体报错信息如下: 分析思路 1. 因为我采用的是选择性复制,只针对以下几个库进行复制: card,upay,deal,monitor,collect。所以,不太可能出现对于sas_basic的操作能复制到该从库上。 2. 整个架构是1主2从,且都是选择性复制,上面这个从库是直 阅读全文
posted @ 2016-05-04 16:29 iVictor 阅读(3150) 评论(0) 推荐(1) 编辑
摘要:今日上午,同事告知,MySQL主从数据库的数据不一致,猜测备库在同步过程中出现了问题,于是,登上备库,使用 mysql> show slave status\G查看,果然,备库在insert语句中因违反主键约束,导致备库停止了同步。现在的问题很明确,就是如何恢复主从库数据的一致性。 可选方案如下: 阅读全文
posted @ 2015-12-29 19:07 iVictor 阅读(12116) 评论(0) 推荐(2) 编辑