MySQL 复制

31 阅读1分钟

前言

允许你自动将一个MYSQL服务器的数据复制到另一个服务器上的机制。

配置阶段

  • 在主服务器的配置文件中设置sever-id为一个唯一的id。
  • 启用二进制日志记录功能,通过设置log-bin参数设置指定日志文件名前缀
  • 可以根据需要设置其他相关选项(bilog-format)

创建复制账号

(Replication slave 权限)

获取当前二进制日志位置

  • 主服务器上执行Flush tables with read lock(锁表,防止获取日志位置时,数据发生改变)
  • 使用show master status 【获取当前二进制文件文件名和位置】
  • 执行unlock tables【解锁表】

从服务器配置

  • 设置从服务器server-id为另一个唯一id
  • 配置复制相关选项

初始化同步

启动从服务器

  • 使用change master to 语句配置从服务器,提高主服务器的信息、以及日志文件名和位置
  • 执行start slave 命令开始复制

持续复制

  • 从服务器的IO线程连接主服务器,并请求发送上次已知位置之后的二进制日志
  • 主服务器的dump线程响应这个请求,将相应的二进制日志内容发送给从服务器
  • 从服务器的IO线程接收这些日志,并将这些日志写入本地的中继日志(relay log)
  • 从服务器的SQL线程负责从中级日志读取事件,并执行。

监控与服务

  • 定期检查复制的状态
  • 如果发生问题及时解决
  • 根据业务需求调整复制拓扑(级联复制、主-主复制)