mysql 8.0 ~ 主从复制的优化

本文深入解析MySQL 8.0版本中基于GTID的并行复制改进,重点介绍基于writeset的并行复制机制,包括配置参数如slave-parallel-type和binlog_transaction_dependency_tracking,以及如何通过计算write_set集合实现事务的高效并发执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 8.0复制改进
一简介: 基于GTID下的并行复制,本文不考虑MGR架构
二 主要特性
   1 基于writeset的下的改进型并行复制
     我在之前的一篇文章关于并行复制中详细的介绍了关于各个版本的并行复制改进,这里只着重再指出8.0的新特性
     配置参数
     slave-parallel-type=LOGICAL_CLOCK //复制方式
     binlog_transaction_dependency_tracking = WRITESET(写复制) (需要在主库设置并且主库开始在二进制日志中存储写入writeset信息)
     commit_order(默认,5.7并行复制)
     WRITESET_SESSION(在写复制基础上增加session约束)
     slave_parallel_workers=8 //复制线程
     slave-preserve-commit-order=on //按照顺序提交,5.7原生机制的并行复制顺序同一时间内的顺序混乱,必须添加此参数进行顺序控制
    1 过程 WRITESET 根据事务更新的每一行,计算一行hash,然后形成write_set集合.如果没有操作相同的行,hash值是不一样的,可以并发执行=>(唯一性索引名+库名+表名+值)
    2 暂时不清楚采用writeset是否会丢失事务,但是理论上写集合的复制是效率最高的

  2 复制参数特性
    1 master_info_repository 和 relay_log_info_repository 默认设置为 TABLE,可以不必在配置文件中再进行标注
    2 expire_log_days 的默认值也变成了 30
    3 binlog_expire_log_seconds 默认(2592000,30天)更加细化的删除策略
    4 slave_rows_search_algorithms 当表中不存在主键或主键等效(非空唯一二级索引)时,可以使用哈希表来避免重复的表扫描,防止出现之前的因为没有主键导致的主从延迟问题
    5 gtid_executed已不用再搭建从库时执行清空,直接执行SET GTID_PURGED ="+gtid_set"即可
      搭建从库方案
      1 mysqldump --single-transaction=1 -A --master-data=2 > a.sql
      2 mysql < a.sql && change master to && start slave
      简化了流程

转载于:https://www.cnblogs.com/danhuangpai/p/10333858.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值