注册 登录
  • 欢迎访问"运维那点事",推荐使用Google浏览器访问,可以扫码关注本站的"微信公众号"。
  • 如果您觉得本站对你有帮助,那么可以扫码捐助以帮助本站更好地发展。

标签:MySQL主从复制

MySQL

关于MySQL复制中server_id的疑问?

但凡做过MySQL主从复制的同学都知道,MySQL主从复制能够有效工作的一些基本原则,如下: Master必须开启binlog,这是主从复制能够工作的基本要求,slave需要同步Master的binlog进行回放来同步数据。 每个slave都需要设置server_id,且一个集群中所有的server_id不能够被重复。 每个slave只能有一个Master……继续阅读 »

彭东稳 8个月前 (04-12) 3626浏览 0评论 0个赞

MySQL

MySQL从库CrashSafe问题?

从库CrashSafe解决历程? MySQL数据库的成功离不开其Replicaiton,相对于Oracle DG和Microsoft SQL Server Log Shipping来说,其简单易上手,基本上1,2分钟内根据手册就能完成环境的搭建。然而,随着使用的深入,Replication自身的问题会慢慢显露,其中非crash safe的特性使得许多DBA感……继续阅读 »

彭东稳 11个月前 (01-19) 4772浏览 1评论 0个赞

MySQL

MySQL无主键延迟优化(slave_rows_search_algorithms)

我们知道,MySQL当表上无主键或唯一键时,那么对于在该表上做的DML,如果是以ROW模式复制,在从库回放时则每一个行记录前镜像都需要执行一遍,这是与主库不同的地方。在从库回放行记录时,遵循先找主键定位数据,其次是唯一键或二级索引;但唯一键或二级索引都需要回表,比主键要慢。在无主键或索引情况下,在备库每一个行记录都会产生一次全表扫描,大多数情况下,这种开销都……继续阅读 »

彭东稳 11个月前 (01-18) 4755浏览 2评论 2个赞

MySQL

MySQL 5.7 GTID源码分析系列

从MySQL 5.6开始增加了强大的Gtid(Global Transaction ID,全局事务ID)这个特性,用来强化数据库的主备一致性,故障恢复,以及容错能力。用于取代过去通过binlog文件偏移量定位复制位置的传统方式。借助GTID,在发生主备切换的情况下,MySQL的其它Slave可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的……继续阅读 »

彭东稳 1年前 (2017-12-19) 4998浏览 0评论 2个赞

MySQL

MySQL从库延迟计算方式分析(Seconds_Behind_Master)

一、背景 在MySQL主备环境下,主备同步过程如下,主库更新产生binlog,备库io线程拉取主库binlog生成relay log。备库sql线程执行relay log从而保持和主库同步。 理论上主库有更新时,备库都存在延迟,且延迟时间为备库执行时间+网络传输时间,即t4-t2。但实际情况是,我们一般都是通过Slave上执行SHOW SLAVE STAT……继续阅读 »

彭东稳 2年前 (2017-05-13) 7486浏览 0评论 3个赞

MySQL

MySQL Group Commit

一、背景 在关系型数据库中,为了满足ACID中的D(持久性)属性,也就是说事务提交并且成功返回给客户端之后,必须保证该事务的所有修改都持久化了,无论是在数据库程序崩溃的情况下或者是数据库所在的服务器发生宕机或者断电的情况下,都必须保证数据不能丢失。这就要求数据库在事务提交过程中调用fsync或fdatasync将数据持久化到磁盘。fsync是一个昂贵的系统调……继续阅读 »

彭东稳 2年前 (2017-03-21) 10865浏览 9评论 11个赞

MySQL

MySQL主从复制线程状态转变

一、主库线程状态(State)值 以下列表显示了主从复制中主服务器的Binlog Dump线程的State列中可能看到的最常见状态(SHOW PROCESSLIST)。如果Binlog Dump线程在主服务器上看不到,这意味着复制没有运行,也就是说,目前没有连接任何Slave主机。 Sending binlog event to slave 二进制日志由各种……继续阅读 »

彭东稳 2年前 (2017-03-09) 7689浏览 2评论 3个赞

MySQL

MySQL中Redo与Binlog顺序一致性问题?

首先,我们知道在MySQL中,二进制日志是server层的,主要用来做主从复制和即时点恢复时使用的。而事务日志(redo log)是InnoDB存储引擎层的,用来保证事务安全的。现在我们来讨论一下MySQL主从复制过程中的一些细节问题,有关于主从复制可以看具体的章节。 在了解了以上基础的内容后,我们可以带着以下的几个问题去学习复制到底是怎样工作的。 为什么……继续阅读 »

彭东稳 2年前 (2017-01-12) 12372浏览 2评论 17个赞

MySQL

MySQL主库CrashSafe与Binlog关系?

一、什么是CrashSafe? CrashSafe指MySQL服务器宕机重启后,能够保证: – 所有已经提交的事务的数据仍然存在。 – 所有没有提交的事务的数据自动回滚。 Innodb通过Redo Log和Undo Log可以保证以上两点。为了保证严格的CrashSafe,必须要在每个事务提交的时候,将Redo Log写入硬件存储。这……继续阅读 »

彭东稳 2年前 (2016-12-07) 5819浏览 0评论 2个赞

MySQL

MySQL基于SSL复制的配置过程

MySQL的主从复制默认是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。在进行SSL加密传输时可能需要先了解CA、证书及SSL相关知识才能更好地明白为何基于SSL的传输就会更加安全。CA、证书及SSL相关知识在本章节不会多加一说明,详情可以看本博客提供的“信……继续阅读 »

彭东稳 2年前 (2016-11-24) 4854浏览 0评论 2个赞

MySQL 5.7

MySQL 5.7新特性:多源复制实践

一、前言 MySQL 5.7的发布,在复制方面有了很大的改进,比如开始支持多源复制(multi-source)了。以及真正的支持多线程复制了。需要说明一点的是,多源复制可以使用基于二进制日志的复制或者基于事务的复制。下面开始配置基于二进制日志的多源复制。 什么是多源复制? 首先,我们需要清楚几种常见的复制模式: 1)一主一从 2)一主多从 3)级联复制 4)……继续阅读 »

彭东稳 2年前 (2016-11-22) 6199浏览 0评论 6个赞

MySQL 5.7

MySQL 5.7新特性:在线开启和关闭基于GTID的复制

一、前言 MySQL在5.6版本之前复制一直是基于二进制日志的复制,到了MySQL5.6时开始支持基于事务(GTIDs)的复制,并且开始支持多线程复制;但MySQL5.6版本的多线程只能基于多库。这就牵扯到了一个应用场景,就是从基于日志的复制在线变更到基于事务的复制,在MySQL5.6版本时这一动作只能重启主服务器才可以做到。但是到了MySQL 5.7版本时……继续阅读 »

彭东稳 2年前 (2016-11-21) 6861浏览 0评论 3个赞