安装完成两个Mysql,版本都是5.7.20,这里为版本不同引起意想不到的问题,主从安装同一个版本的数据库
主库的IP: 10.36.11.223
从库的IP: 10.36.11.201
首先在主库(10.36.11.223)上执行:
1.创建用户 并赋予哪台服务器可以访问
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO cz@10.36.11.201 IDENTIFIED BY 'cz123456!';
--------cz 用户名称,-----cz123456! 用户密码,------10.36.11.201能访问主库的服务器IP地址
2.配置主库
windows在my.ini配置文件中[mysqld]下添加配置/liunx系统在/etc/my.cnf
我的配置如下:
server-id=8000
log_bin=E:\Mywork\Data\mysql-5.7.20-winx64\data
那个server-id在数据库配置中必须是唯一的,重启主库的mysql
3.配置从库
windows在my.ini配置文件中[mysqld]下添加配置/liunx系统在/etc/my.cnf
我的配置如下:
server-id=8001
replicate-do-db=test #要同步的数据库
重启从库的mysql, 在主库执行sql:show master status;
从库mysql命令下执行
change master to master_host='10.36.11.201', master_user='cz', master_password='cz123456!',master_log_file='data.000005',master_log_pos=154;
这里的master_log_file 和msater_log_pos的值都来自于刚刚主库的这条sql:show master status
4.启动主从复制
start slave;
5.检查环境是否配置成功
执行 show slave status \G
Slave_IO_Running: Yes和Slave_SQL_Running: Yes都为yes代表成功了。,
测试主从复制是否好使,在主库执行insert,update,等sql
到这里,全部库的主从配置就完成了,实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在主库的/etc/my.cnf或者my.ini里加上
只复制某个表replicate-do-table=tablename
只复制某些表(可用匹配符)replicate-wild-do-table=tablename%
只复制某个库replicate-do-db=dbname
只复制某些库replicte-wild-do-db=dbname%
不复制某个表replicate-ignore-table=tablename