标签:MySQL主从复制
MySQL 5.7基于GTID的多源复制
我们知道,如果我们想把多个 MySQL Master 数据汇集到同一个实例,可以选择 MySQL 5.7 提供的多源复制,就是建立多个复制通道,每个通道分别 change master 到不同的实例即可。但这里对于复制方式可以基于 position 模式,或 gitd 模式。这里并不是介绍一些关于复制的基础知识,对于 position 模式,就不说了,也比较……
MySQL复制对于临时表的处理
在跟网友讨论 inception 这个工具的回滚功能设计时,知道了它会根据 binlog 中的 query event 带的 thread id 来定位此次会话所执行的 SQL 语句有哪些,这是一个事务,当然定位回滚数据还需要 binlog position。而在 MySQL 中对于,如果你的 binlog 模式为 statement 格式,那么所有的 ev……
关于MySQL复制中server_id的研究
做过 MySQL 主从复制的同学都知道,主从复制能够有效工作的一些基本原则,如下: master 必须开启 binlog,这是主从复制能够工作的基本要求,slave 需要同步 master 的 binlog 进行回放来同步数据。 master 和 slave 实例都需要设置 server_id,且不能相同,否则复制会报错;同一个复制集群中必须保证 serv……
MySQL二进制日志(binlog)详细解析
MySQL 提供了 4 种不同的日志,分别是错误日志(error log)、普通日志(general log)、慢日志(slow log)以及二进制日志(binlog)。其中错误日志记录了系统启动、运行以及停止过程中遇到的一些问题;普通日志记录了MySQL执行的所有语句以及语句开始执行的时间等信息,用户可以选择性打开它;慢日志记录了 MySQL 所有慢查询的……
MySQL从库 crash-safe 问题(单线程回放)
一、从库 crash safe 解决历程 MySQL 数据库的成功离不开其复制功能,相对于 Oracle DG 和 Microsoft SQL Server Log Shipping 来说,其简单易上手,基本上 1,2 分钟内根据手册就能完成环境的搭建。然而,随着使用的深入,复制功能自身的问题会慢慢显露,其中非 crash safe 的特性使得许多 DBA ……
MySQL 5.7 GTID源码分析系列
从MySQL 5.6开始增加了强大的Gtid(Global Transaction ID,全局事务ID)这个特性,用来强化数据库的主备一致性,故障恢复,以及容错能力。用于取代过去通过binlog文件偏移量定位复制位置的传统方式。借助GTID,在发生主备切换的情况下,MySQL的其它Slave可以自动在新主上找到正确的复制位置,这大大简化了复杂复制拓扑下集群的……
MySQL从库延迟计算方式分析(Seconds_Behind_Master)
一、背景 在 MySQL 主备环境下,主备同步过程简单描述就是主库 sql 语句操作产生 binlog 发送给备库,备库 io 线程读取主库 binlog 生成 relay log;然后备库 sql 线程执行 relay log 从而保持和主库同步。 理论上主库有更新时,备库都存在延迟,且延迟时间为备库执行时间+网络传输时间,即 t4-t2。但实际情况是,……
MySQL Group Commit
一、背景 在关系型数据库中,为了满足 ACID 中的D(持久性)属性,也就是说事务提交并且成功返回给客户端之后,必须保证该事务的所有修改都持久化了,无论是在数据库程序崩溃的情况下或者是数据库所在的服务器发生宕机或者断电的情况下,都必须保证数据不能丢失。这就要求数据库在事务提交过程中调用 fsync 或 fdatasync 系统调用将数据持久化到磁盘,现代数据……
MySQL主从复制线程状态转变
一、主库线程状态(State)值 以下列表显示了主从复制中主服务器的Binlog Dump线程的State列中可能看到的最常见状态(SHOW PROCESSLIST)。如果Binlog Dump线程在主服务器上看不到,这意味着复制没有运行,也就是说,目前没有连接任何Slave主机。 Sending binlog event to slave 二进制日志由各种……
MySQL主库 crash-safe 与 binlog 关系?
一、什么是CrashSafe? CrashSafe指MySQL服务器宕机重启后,能够保证: – 所有已经提交的事务的数据仍然存在。 – 所有没有提交的事务的数据自动回滚。 Innodb通过Redo Log和Undo Log可以保证以上两点。为了保证严格的CrashSafe,必须要在每个事务提交的时候,将Redo Log写入硬件存储。这……
MySQL基于SSL复制的配置过程
MySQL的主从复制默认是明文传送的,如果在生产环境中跨网络传送,数据的安全性就无法完全保证,为了解决这一问题,我们需要一种安全的方式进行传送,即基于SSL加密进行数据传输。在进行SSL加密传输时可能需要先了解CA、证书及SSL相关知识才能更好地明白为何基于SSL的传输就会更加安全。CA、证书及SSL相关知识在本章节不会多加一说明,详情可以看本博客提供的“信……
MySQL 5.7:多源复制实践
一、前言 MySQL 5.7的发布,在复制方面有了很大的改进,比如开始支持多源复制(multi-source)了。以及真正的支持多线程复制了。需要说明一点的是,多源复制可以使用基于二进制日志的复制或者基于事务的复制。下面开始配置基于二进制日志的多源复制。 什么是多源复制? 首先,我们需要清楚几种常见的复制模式: 1)一主一从 2)一主多从 3)级联复制 4)……