MySQL 主从复制

1,260 阅读2分钟

本文已参与「掘力星计划」,赢取创作大礼包,挑战创作激励金。

复制的基本原则

slave 会从 master 读取 binlog 来进行数据同步 MySQL复制过程分为三步:

  1. master 将改变记录到二进制日志 (binary log). 这些记录过程叫做 二进制日志时间,
  2. slave 将 master 的 binary log events 拷贝到它的中继日志(relay log);
  3. slave 重做中继日志中的时间,将改变应用到自己的数据库中。MySQL 复制是一步的且串行化的。

复制的基本原则

每个 slave 只有一个 master 每个 slave 只能有一个唯一的服务器ID 每个 master 可以有多个 slave

复制的最大问题

延迟

一主一从常见配置

mysql 版本一致且后台以服务运行 主从都配置在 [mysqld] 节点下,都是小写

主库修改 my.ini 配置文件

  1. [必须] 主机服务器唯一 ID
  • server-id=1
  1. [必须] 启用二进制日志
  • log-bin = 自己的本地的路径/mysqlbin
  • log-bin=D:/devsoft/mysql5.7/data/mysqlbin

3 [可选] 启用错误日志

  • log-err = 自己的本地的路径/mysqlerr
  • log-err=D:/devsoft/mysql5.7/data/mysqlerr
  1. [可选] 根目录
  • basedir = "自己本地路径"
  • basedir = "D:/devsoft/mysql5.7/"
  1. [可选] 临时目录
  • tempdir = "自己本地路径"
  • tempdir = "D:/devsoft/mysql5.7/"
  1. [可选] 数据目录
  • datadir = "自己本地路径/data"
  • datadir = "D:/devsoft/mysql5.7/data"
  1. read-only = 0
  • 主机读写都可以
  1. [可选] 设置不要复制的数据库
  • binlog-ignore-db=mysq
  1. [可选]设置需要复制的数据库
  • binlog-do-db=需要复制的主数据库名字

从库修改 my.conf 配置文件

  1. [必须] 主机服务器唯一 ID

  2. [可选] 启用二进制日志

因修改过配置文件,请主机 + 从机都重启后台 mysql 服务 主机从机关闭防火墙 windows 手动关闭

liunx  service iptables stop 

在 Windows 及其上建立账户并授权 slave

grant replication slave on *.* to 'zhangsan'@'从库IP' identified by '123456';
flush privileges;

查询 master 状态 show master status; 记录 File 和 Postition 值

执行完此步骤后再操作数主服务器 MySQL , 防止主服务器状态值变化

在 LIunx 上配置需要复制的主机

CHANGE MASTER  TO  MASTER_HOST='你的 IP'
MASTER_USER=‘zhangsan’
MASTER_PASSWORD='123456'
MASTER_LOG_FILE='mysqlbin.具体数字', MASTER_LOG_POS=具体值;

启动从服务其复制功能

start slave

show slave status\G

  • Slave_IO_Running: Yes
  • Slave_IO_Running: NO
  • 如果上面的两个参数都是 : Yes 说明配置成功!!

主机新建库、新建表、insert 记录、从机复制 如何重启从服务器的复制

stop slave

参考资料

「欢迎在评论区讨论,掘金官方将在掘力星计划活动结束后,在评论区抽送100份掘金周边,抽奖详情见活动文章」。