MySql主从配置
mysql版本使用的是5.7.20
主库的IP为:47.104.71.88,从库的IP为:45.77.13.74
读写分离(主从库)
原理:让主库(master)处理事务性增改删,而从库(slave)处理查询操作
主库创建用户
1 | GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO synchrouser@45.77.13.74 IDENTIFIED BY 'w123456W!'; |
在主库创建一个synchrouser用户密码为w123456W!,并允许从库以synchrouser用户来登录
配置主库
在[mysqld]下增加配置
1 | server-id=88 |
server-id在数据库配置中必须唯一,一般为IP最后一个节点(例如:47.104.71.88,则设置为88)设置完成后,重启mysql
配置从库
在[mysqld]增加配置
1 | server-id=74 |
设置完成后,重启mysql
在主库执行:show master status;
根据以上主库的信息设置从库
1 | change master to master_host='47.104.71.88',master_user='synchrouser',master_password='w123456W!',master_log_file='mysql-bin.000005',master_log_pos=840; |
master_log_file字段对应了主库的File,master_log_pos字段对应了主库的Position
启动主从同步
从库执行
1 | start slave; |
检查是否配置成功
如果Slave_IO_Running和Slave_SQL_Running都为Yes,代表配置成功
测试主从同步
主库创建一个库,一个表,观察从库是否同样创建
设置主从库之后MySq会持续产生日志,需要定期清除或则设置自动清除
附录:
到这里,全部库的主从配置就完成了,实际应用中可能会用到单个表的同步,或者部分表的同步,只需要在从库的/etc/my.cnf里加上
只复制某个表replicate-do-table=dbname.tablename
只复制某些表(可用匹配符)replicate-wild-do-table=dbname.tablename%
只复制某个库replicate-do-db=dbname
只复制某些库replicte-wild-do-db=dbname%
不复制某个表replicate-ignore-table=dbname.tablename