Mysql数据库binlog系列二-Mysql到Mysql的同步

在没有特殊需求的情况下,一般会使用MySQL到MySQL的数据同步,配合项目中多数据源来进行读写分离,减少获取锁的频率和损耗

Master配置

开启binlog配置

在my.inf文件中添加

1
2
3
log_bin=ON
log_bin_basename=/var/lib/mysql/mysql-bin
log_bin_index=/var/lib/mysql/mysql-bin.index

或者

1
log-bin=/var/lib/mysql/mysql-bin

然后重新启动

查看二进制日志的状态信息
1
show master status;
创建用于同步的用户
1
CREATE USER 'username' IDENTIFIED BY '123456';
赋予同步用户SLAVE权限
1
GRANT REPLICATION SLAVE ON *.* TO 'username';

Slave配置

开启binlog配置

同Master不再描述

连接Master
1
2
3
4
5
6
CHANGE MASTER TO
MASTER_HOST='10.10.10.10',
MASTER_USER='username',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysql-bin.001177',
MASTER_LOG_POS=120;
确认slave状态
1
show slave status;

字段说明

  • Slave_IO_State:同步状态
  • Master_Host: 主服务器地址
  • Master_User: 同步用户
  • Master_Port: 主服务器端口
  • Connect_Retry: 每次链接断开之后重新链接主服务器之前休眠的时间
  • Master_Log_File: 当前读取的binlog文件名
  • Read_Master_Log_Pos: 当前读取的binlog文件position
  • Relay_Log_File: 回放binlog文件名
  • Relay_Log_Pos: 回放binlog文件position
  • Relay_Master_Log_File: 回放binlog文件对应master的binlog文件
  • Slave_IO_Running: Slave与MasterIO通讯进程开启状态
  • Slave_SQL_Running: Slave进行mysql同步的进程
  • Exec_Master_Log_Pos: 对比Mastersql执行到的位置
  • Seconds_Behind_Master: 主从库的延时时间
    启动 slave
    1
    start slave;
确认slave状态
1
show slave status;