Tip

MySQL 版本最好一致 同步之前,要保证两个数据库数据一致

主机名称IP 地址MySQL
mysql-master47.128.67.2275.7
mysql-slave47.114.229.2305.7

主库

1.修改主库 my.cnf

[mysqld]
#定义二进制日志名称
log-bin=master-bin
#服务器唯一ID,一般取IP最后一段
server-id=227
#二进制日志格式
binlog-format=ROW
#指定复制的数据库(可选)
binlog-do-db=kkb2
#和replicate-ignore-db是一样的
binlog-ignore-db=kkb
#指定不复制的数据库(可选,mysql5.7版本及以上)
replicate-ignore-db=kkb
#指定忽略的表(可选,mysql5.7版本及以上)
replicate-ignore-table=db.table1

2. 重启 MySQL 服务

3. 授权从服务器登录主服务器

GRANT REPLICATION SLAVE ON *.* TO 'root'@'%' identified by 'root';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' identified by 'root';
--刷新权限
FLUSH PRIVILEGES;

4. 查看主库状态

show master status;

Filebinlog 日志名称,只要数据库重启就会生成新的名称 Position:定位从库开始读的位置,也就是 1152 之前的 sql 数据是不会同步到从库中的,如果要同步之前的数据,使用 mysql dump 进行复制即可

从库

1. 修改从库 my.cnf

[mysqld]
server-id=230  #服务器唯一ID,一般取IP最后一段

2. 关闭从库

stop slave

3. 初始化从库的状态

change master to
master_host='47.108.77.227',
master_port=3306,
master_user='root',
master_password='1232',
master_log_file='master-bin.000001',
master_log_pos=1152;
  • 主库 IP 地址
  • 主库端口
  • 主库账号
  • 主库密码
  • 主库 binlog 日志名称
  • 从库进行同步主库 binlog 日志开始的位置

4. 启动从库

start slave

5. 查看从库状态

show slave status \G

遇到的坑

把从库的字段调整了顺序,导致同步报错。所以要保持主库和从库的表完全一致!