目的:容灾恢复

主从复制原理

  1. 主节点上Log Dump Thread线程负责向从节点发送二进制日志binary log中
  2. 从节点I/O Thread线程负责请求拉取最近更新日志,并写入中继日志relay log中
  3. 从节点SQL Thread线程负责解析中继日志并执行更新从库,保证数据的一致性

MySQL主从复制 - 图1

一主一从配置

  1. 调试主机和从机网络畅通
  2. 主机Windows环境下my.ini配置文件设置,并关闭防火墙

在【mysqld】块下加入:
#主节点id
server-id=1
#开启二进制日志
log-bin=”‪D:/mysql/mysqlbin”
#开启错误日志
log-error=”‪D:/mysql/mysqlerr”
#根目录
basedir=”C:/Program Files/MySQL/MySQL Server 5.7/“
#临时目录
tmpdir=”D:/mysql/tmp/“
#数据目录
datadir=”F:/ProgramData/MySQL/MySQL Server 5.7/Data/“
#读写均开启
read-only=0
#设置不要复制的数据库
binlog-ignore-db=mysql
#设置需要复制的数据库
#binlog-do-db=数据库名

  1. 从机linux环境下/etc/my.cfg配置文件设置,并关闭防火墙

在【mysqld】块下加入:
#从节点id
server-id = 2
#开启二进制日志(默认开启)
log-bin=mysql-bin

  1. Windows主机mysql服务授权Linux从机mysql以指定用户+密码登录主机mysql
    1. 授权命令:grant replication slave on . to ‘用户名’@’从机IP’ identified by ‘密码’;

如:grant replication slave on . to ‘yao’@’192.168.80.2’ identified by ‘123’;

  1. 刷新权限:flush privileges;
    1. 查看主机状态:show master status;

并记录下:

  • File字段=mysqlbin.4位数字,代表日志文件
  • Position字段=数字,代表从日志文件的哪行开始复制
    1. Linux从机mysql服务指定Windows主机,并以步骤4中指定的用户登录主机mysql,并且指定复制的日志文件和开始位置

change master to master_host = ‘主机IP’, master_user=’yao’, master_password=’123’, master_log_file=’步骤5中file字段值’, master_log_pos=’步骤5中position字段值’;

  1. 启动从机复制功能:start slave;
  2. 查看从机状态:show slave status\G; 必须同时看到:
    1. slave_io_running字段=yes
    2. slave_sql_running字段=yes
  3. 此时已经打开从机复制功能,可以测试:在主机建库建表,然后在从机查看。
  4. 停止从机复制功能:stop slave;
  5. 再次启动时,必须从步骤5开始获取最新的日志文件和开始复制的位置。