MySQL主从复制配置详解:基于日志点与GTID的比较

MySQL主从复制配置详解:基于日志点与GTID的比较

一、MySQL复制类型及原理概述

MySQL主从复制是实现数据库高可用性和负载均衡的重要手段。复制类型主要分为基于SQL语句的复制(SBR)、基于行的复制(RBR)以及混合模式。

  • SBR(基于SQL语句的复制):二进制日志格使用的是statement格式
    • 优点:生成日志量少,节约网络传输I/O;不要求主从数据库表定义完全相同;灵活性高。
    • 缺点:对于非确定性事件和存储过程、触发器、自定义函数等的修改,可能无法保证数据一致性;在从库执行时需要更多行锁。
  • RBR(基于行的复制):二进制的日志格式使用的是基于行的日志格式
    • 优点:适用于任何SQL复制,包括非确定函数、存储过程等;减少数据库锁的使用。
    • 缺点:要求主从数据库表结构相同;无法在从库单独执行触发器。
  • 混合模式:根据实际需求在SBR和RBR之间切换。
二、基于日志点的复制配置步骤
  1. 创建复制账号和授权
    • 在主数据库上创建用于复制的用户,并授予REPLICATION SLAVE权限。

  1. 配置主数据库服务器
    • 编辑my.cnf文件,启用二进制日志(log-bin),并设置服务器ID(server-id)。
    • 其他可选配置包括InnoDB_flush_log_at_trx_commitsync_binlog,以确保事务的持久性和一致性。

  1. 配置从数据库服务器
    • 编辑my.cnf文件,同样设置服务器ID,并可选地配置中继日志(relay-log)和其他安全设置。

  1. 初始化从服务器数据
    • 使用mysqldump工具从主数据库导出数据,并导入到从数据库。
    • 导出时可使用--master-data=2选项以包含二进制日志位置和文件名信息。

由于目前主数据库已经存在数据,所以要先初始化从服务器数据这里采用的是备份的方式去初始化从服务器数据
这是两个备份工具:

  1. 启动复制链路
    • 在从数据库上执行CHANGE MASTER TO语句,配置主数据库的连接信息、二进制日志文件名和位置。
    • 启动复制链路:START SLAVE;

如果主从数据库版本不一致最好不要备份系统库,只备份业务库即可

三、GTID复制介绍与比较

GTID(Global Transaction ID)是MySQL 5.6.5及以后版本引入的一种基于全局唯一事务ID的复制方式。

  • GTID组成:由服务器UUID和事务ID组成,确保在MySQL集群内唯一。
  • 优点
    • 强化了数据库的主备一致性、故障恢复和容错能力。
    • 简化了故障切换和主从复制的配置。
    • 避免了传统复制中需要手动查找二进制日志文件和位置的问题。
    • 每个事务只会被执行一次,保证了数据的一致性。
  • 缺点
    • 主从库的表存储引擎必须一致。
    • 不允许一个SQL同时更新一个事务引擎和非事务引擎的表。
    • 在一个复制组中,必须统一开启或关闭GTID。
    • 不支持某些SQL语句的复制,如CREATE TABLE ... SELECT

四、基于日志点与GTID复制的比较
  • 配置复杂度:基于日志点的复制需要手动配置二进制日志文件名和位置,相对复杂;而GTID复制则自动管理这些信息,简化了配置过程。
  • 故障处理:基于日志点的复制在故障处理时可能需要手动查找和设置日志点;GTID复制则提供了更简单的故障切换和恢复机制。
  • 数据一致性:GTID复制通过确保每个事务的唯一性和只执行一次的原则,提供了更高的数据一致性保证。
  • 兼容性:基于日志点的复制对存储引擎和SQL语句的限制较少;而GTID复制则有一些特定的限制和要求。GTID的复制是MySQL5.6才引入的,之前的版本就不能使用

综上所述,MySQL主从复制的配置方式包括基于日志点和GTID两种。在选择时,应根据具体需求、环境限制和运维复杂度等因素进行综合考虑。对于追求高数据一致性和简化运维的场景,GTID复制是一个值得考虑的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值