Mysql主从配置笔记,安装完成两个Mysql,版本都是5.7.20,
坑总结
如果是在虚拟机中试验:
要修改mv /data/mysqldata/auto.cnf /data/mysqldata/auto.cnf.bk ###重命名该文件
报错:
"Slave_SQL_Running:No"
主库的IP地址为172.17.0.2,从库的ip地址为172.17.0.3
首先在主库(172.17.0.2)上执行:
1.创建用户
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO synchrouser@172.17.0.3 IDENTIFIED BY 'Wwe123456!';
- 1
代表建立一个synchrouser用户,密码为Wwe123456!,并且,这个主库能允许从库(172.17.0.3)的ip以synchrouser用户来登陆。
2.配置主库
在/etc/my.cnf文件下增加
server-id=2
log_bin=mysql-bin
binlog_format=mixed
我的配置文件如下
那个server-id在数据库配置中必须是唯一的,重启主库的mysql
3.配置从库
在/etc/my.conf下增加server-id=3,我的配置文件如下
重启从库的mysql,
在主库执行sql:show master status;
在从库进行连接主库执行如下sql:
change master to
master_host='192.168.0.102',
master_user='xueliang',
master_password='xueliang0601',
master_port=3306,
master_log_file='mysql-bin.000001',
master_log_pos=2103,master_auto_position=0;
4.启动主从复制
在从库执行:start slave;
代表启动成功了。
5.检查环境是否配置成功
执行 show slave status \G
这个 Slave_IO_Running: Yes和Slave_SQL_Running: Yes都为yes代表成功了。,
测试主从复制是否好使,在主库执行sql
在从库查看:
到这里,全部库的主从配置就完成了,实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在主库的/etc/my.cnf里加上
只复制某个表replicate-do-table=tablename
只复制某些表(可用匹配符)replicate-wild-do-table=tablename%
只复制某个库replicate-do-db=dbname
只复制某些库replicte-wild-do-db=dbname%
不复制某个表replicate-ignore-table=tablename