Window下实现MySQL主从同步

本节介绍了基于二进制日志文件位置方法的MySQL服务器之间的复制。

一、复制原理:

mysql复制原理大致如下:

  1. 主库启用二进制日志(log-bin),将数据库的所有更新和更改操作记录作为“事件”写入二进制日志binlog
  2. 从库开启一个线程(I/O Thread),请求读取主库的二进制日志binlog中的事件
  3. 主库启动一个线程(Dump Thread),读取数据库事件并数据发给I/O线程
  4. 从库接收到主库发送过来的数据把它放置到中继日志(relay log)文件中,并记录该次请求在二进制文件binlog的具体位置
  5. 从库启动另一个线程(SQL Thread ),把relay log中的事件读取出来,并在本地再执行一次,从而使主从库的数据保持相同。

二、配置环境:

服务器系统环境
主库服务器IP:192.168.1.143
操作系统:window server 2012 R2
MySQL版本:5.7
从库服务器IP:192.168.1.144
操作系统:window 10
MySQL版本:5.7

三、配置过程

主库服务器配置(Master):
  1. 进入MySql安装目录,配置my.ini
server-id=1
log-bin=mysql-bin # 启用二进制日志 log-bin,从库会基于此log-bin来做复制
binlog-do-db=test # 用于同步的数据库,可设置多个(如果不指定数据库,则无需设置此项)
binlog_ignore_db=mysql # 不用于同步的数据库,可设置多个
  1. 重启mysq服务
  2. 进入mysql,创建复制用户,对用户进行授权使其用于复制主库数据
# 创建复制用户
CREATE USER repl IDENTIFIED BY '123456';
# 授权复制权限给repl用户
GRANT replication SLAVE,replication CLIENT ON *.* TO 'repl'@'%'; 
# 授权后记得刷新权限
flush privileges;
  1. 查看主库状态
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000004
         Position: 847
     Binlog_Do_DB: test
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)

注意:
File和Position值会在从服务器的配置中用到

从库服务器配置(Slave):
  1. 进入MySql安装目录,配置my.ini
server-id=2 # 如果你不设置server_id(或显式地设置它的默认值0),从库会拒绝连接到主库,且值不能与主库的server_id相同
  1. 重启mysql服务
  2. 进入mysql服务,在从库上设置主库配置
change master to master_host='192.168.1.143',master_port=3306,master_user='repl',master_password='123456',
master_log_file='mysql-bin.000004',master_log_pos=847; ## 主库日志文件和日志文件位置必须与主服务器当前状态保持一致!
  1. 启动从库复制线程
start slave;
  1. 查看从库状态
mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.1.143
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000004 # 主库日志文件名
          Read_Master_Log_Pos: 847 # 主库日志文件坐标
               Relay_Log_File: Yct201901081428-relay-bin.000004
                Relay_Log_Pos: 1060
        Relay_Master_Log_File: mysql-bin.000004
             Slave_IO_Running: Yes # 从库IO线程运行状态
            Slave_SQL_Running: Yes # 从库SQL线程运行状态
              Replicate_Do_DB:
          Replicate_Ignore_DB:
          .
          .
          .
          省略

注意
如果Slave_IO_Running 和 Slave_SQL_Running 两个线程状态都为YES,说明主从设置成功

至此,MySQL主从配置就全部完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值