当前位置: 首页 > news >正文

【MySQL】配置复制拓扑

什么是复制

复制是 MySQL 的一项功能,它使服务器能够将更改从一个实例复制到另一个实例
主服务器 (master) 将所有数据和结构更改记录到二进制日志中
进制日志格式是基于语句的、基于行的或混合的
从属服务器 (slave) 从主服务器请求二进制日志并在本地应用其内容
记录所有接收和应用的事件的状态,以便在服务器重启或网络故障后可以从停止的位置恢复
/从属服务器关系是一对多关系
每个从属服务器从一个主服务器读取日志
一个主服务器可以将日志传送给许多从属服务器
继从属服务器
一个中继从属服务器可以用作另一个从属服务器的主服务器
更改会传播到更多的从属服务器
可以使用更复杂的拓扑:
双向 (bi-directional) 拓扑具有两个主服务器,每个主服务器是另一个主服务器的从属服务器
(circular) 拓扑具有任意数量的服务器
每个服务器是一个主服务器并且是另一个主服务器的从属服务器
对任何主服务器的更改将复制到所有主服务器
并非每个从属服务器都必须是主服务器
多源 (Multisource) 复制允许一个从属服务器接收来自多个主服务器的事务

复制冲突

在包括多个主服务器的所有拓扑中都可能发生冲突
如果两个客户机几乎同时写入两个主服务器上的同一行,则会无法预测从属服务器上该行的最终值
终值取决于中继从属服务器上的事件顺序
在分层复制中,该行在从属服务器上的最终值由分层结构确定:
  — 如果某个中间主服务器更改了行,则从属服务器与主服务器的值不同
在循环复制中,如果发生冲突,行的最终值在各服务器之间不一致
  — 该值取决于每个主服务器上应用事件的顺序

什么时候复制

解决数据高可用、读写分离、负载均衡、备份恢复等场景需求

1、读多写少的业务,需要减轻主库压力,将查询请求分散到多个从库。
2、需要避免单点故障,确保高可用性
3. 数据备份与灾难恢复
4、需要与生产环境数据同步的测试库,开发人员调试SQL,避免直接操作生产库。

5、高并发写入或单机性能瓶颈时,进行水平扩展

配置复制

1. 规划绘制复制拓扑图
2. 标识参与复制的所有服务器(的主从关系)
要注意,从另一个主服务器复制的每个复制主服务器也是复制从属服务器
3. 为每个服务器配置唯一的 server-id
认值为 1 的无符号 32 位整数
server-id 0 的服务器(无论是从属服务器还是主服务器)都拒绝使用其他服务器进行复制
4. 配置每个主服务器
5. 配置每个复制从属服务器以连接到主服务器
6. 使用 START SLAVE 在每个复制从属服务器上启动复制

配置复制主服务器

启用 TCP/IP
复制不能使用 UNIX 套接字文件
启用二进制日志
在复制过程中,每个主服务器将其日志内容发送到每个从属服务器
创建具有 REPLICATION SLAVE 权限的用
CREATE USER user@slave_hostname IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO user@slave_hostname;
每个从属服务器必须登录到主服务器中才能从中进行复制
在有多个从属服务器的主服务器上,在主机名中指定通配符可以匹配所有从站,或者创建多个用户
备份主数据库作为从属服务器开始复制的起点
如果不使用 GTID则记录日志坐标
如果使用 mysqldump 执行备份,就要使用 --master-data 选项

配置复制从属服务器

从主服务器备份恢复
如果使用 GTID则验证是否设置了 gtid_purged 变量
在每个从属服务器上发出 CHANGE MASTER TO 语句,包含:
主服务器的网络位置
  — MASTER_HOST 和 MASTER_PORT
  — 或者,在复制期间使用 MASTER_SSL 和相关选项来加密主从服务器之间的网络流量
复制帐户用户名和口令(具有 REPLICATION SLAVE 权限)
  — MASTER_USER 和 MASTER_PASSWORD
开始复制的二进制日志坐标(如果不使用 GTID
  — MASTER_LOG_FILE 和 MASTER_LOG_POS 值存储从属服务器开始复制的二进制日志位置
  — 如果使用 GTID则指定 MASTER_AUTO_POSITION=1
http://www.dtcms.com/a/314168.html

相关文章:

  • Qt 商业应用开发流程与规范
  • 【Pytorch✨】LSTM03 三大门
  • 飞算科技:用自主创新技术,为行业数字化转型按下 “加速键”
  • Selenium教程(Python 网页自动化测试脚本)
  • 补:《每日AI-人工智能-编程日报》--2025年7月31日
  • 每日一leetcode:移动零
  • 服务器的Mysql 集群技术
  • IDA9.1使用技巧(安装、中文字符串显示、IDA MCP服务器详细部署和MCP API函数修改开发经验)
  • 主要 bug/问题 以及 修改建议:
  • 【Linux】System V - 基于建造者模式的信号量
  • Go语言流式输出技术实现-服务器推送事件(Server-Sent Events, SSE)
  • Git 与 GitHub 协作
  • BackgroundTasks 如何巧妙驾驭多任务并发?
  • 9. Linux 交换空间管理
  • [GESP202306 四级] 2023年6月GESP C++四级上机题超详细题解,附带讲解视频!
  • 事件(二)实战案例
  • Do-Calculus:因果推断的演算基础与跨领域应用
  • 17.6 超拟人大模型CharacterGLM技术解析:92.7%角色一致性+虚拟偶像互动提升300%,如何吊打GPT-4?
  • Maya 2024安装指南及安装包下载
  • UILabel设置字重
  • Coze Loop:开源智能体自动化流程编排平台原理与实践
  • Ethereum: 深度解析Web3世界的合规之门, ERC-1400证券型代币标准
  • Oracle ASH的手册
  • Linux定制篇-Tomcat的安装和配置
  • Druid学习笔记 03、Druid的AstNode类详解与其他产品测试体验
  • 【精品项目】进阶版贪吃蛇:现代Web技术打造的经典游戏重生
  • 从零认识OpenFlow
  • TCP为什么采用三次握手而不是二次握手
  • 使用 Marian 进行机器翻译详解及对应案例
  • 在安卓中使用 FFmpegKit 剪切视频并添加文字水印