在网上查了很多的主从复制的配置,发现坑也挺多的,现在记录一下,少踩坑
mysql 版本 :5.7.22
主数据库:192.168.1.1、192.168.1.3
从数据库:192.168.1.2
注意事项
确保主数据库的mysql能够给外网访问,也就是使用Navicat等软件能够连接的上才行。如果使用宝塔就要到端口那里放行3306端口
主数据库配置:
1. 创建一个用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
然后给这个用户权限
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'username'@'%';
FLUSH PRIVILEGES; // 刷新权限
用户名后面跟着的%是允许所有的ip连接
2. 修改mysql的配置文件,my.cnf(window系统时my.ini)
server-id=1
binlog-do-db=czc #这个表示只记录这个数据库的操作进binlog,其实可以省略的
完成后输入命令show master status查看一下是否成功
从数据库配置:
如果mysql的版本大于5.5
打开mysql.in添加下面值
server-id=2 # 跟主库不一致就行
replicate-do-db=czc #要同步的mstest数据库,要同步多个数据库,不同源也是一样就多加几个replicate-db-db=数据库名
#多源通道需要配置这个
master-info-repository=TABLE
relay-log-info-repository=TABLE
#不复制的库
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
replicate-ignore-db = performance_schema
replicate-ignore-db = sys
# 要复制的库
replicate-do-db=db1
replicate-do-db=db3
# 跳过的错误
slave-skip-errors = 1062,1053,1146,1213,1264,1205,1396
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=2 #开启两个线程
采用命令实现多源复制
CHANGE MASTER TO master_host='192.168.1.1', master_user='test_local', master_password='password', master_port=3306, master_connect_retry=60, MASTER_LOG_FILE='mysql-bin.000133', MASTER_LOG_POS=123 FOR CHANNEL 'test_local'; 这样就配置好其中一个主库源的通道了 CHANGE MASTER TO master_host='192.168.1.3', master_user='test_local3', master_password='password', master_port=3306, master_connect_retry=60, MASTER_LOG_FILE='mysql-bin.000133', MASTER_LOG_POS=123 FOR CHANNEL 'test_local3'; 这个是第二个通道源的
这里的参数都是对照主数据库的信息填写的
slave start;
show slave status\G;
看到会有两个通道的数据,其中这两个数据都显示yes表示成功了
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
看这几项是否出现,出现表示成功了。可自行在主数据库里面添加修改数据测试
有疑问欢迎留言