前言
最近换了一个工作,接了一个坑灰常大的项目,这个项目很老了,几年的数据下来,数据库都是百万级别的,生产环境经常有用户投诉卡顿问题,之前把该弄索引的都弄了,好了许多,但还是会卡,所以搞了读写分离,这边先介绍下主从复制。
环境准备
这边先准备两台centOS7的虚拟机,用来模拟生产环境的两台数据库服务器。然后各自装好mysql,注意如果先装好一台,然后采用克隆方式会导致后面主从失败,原因是克隆过来的mysql的uuid一致,针对这个问题可以修改mysql安装路径下的auto.cnf文件。
我这边安装的是mysql5.7
主库(master):192.168.1.5:3306
从库(slave):192.168.1.8:3306
mysql配置修改
修改master数据库配置 在my.cnf里找到[mysqld]下方增加或修改
server-id = 1 # 节点ID,确保唯一
log-bin = mysql-bin # 开启mysql的binlog日志功能
binlog_format = mixed # binlog日志格式,mysql默认采用statement,建议使用mixed
修改slave数据库配置
server-id = 2 # 节点ID,确保唯一
log-bin=mysql-bin # 开启mysql的binlog日志功能
binlog_format = mixed # binlog日志格式,mysql默认采用statement,建议使用mixed
replicate-wild-ignore-table=mysql.% #设置忽略复制的表
replicate-wild-ignore-table=test.%
replicate-wild-ignore-table=information_schema.%
重启两个mysql,使配置生效
创建同步账号
在主库中创建供从库同步的账号1
create user slave identified by '123456';
授予权限(这边原本是写slave@192.168.1.8的,不知为什么一直失败,后面改成%才成功)1
grant replication slave on *.* to 'slave'@'%' identified by '123456';
刷新1
flush privileges;
查看主库状态
注意:执行完这个步骤后不要再操作主数据库了,防止主数据库状态值变化
将数据库备份到从库还原
还原成功后在从库中执行同步命令1
change master to master_host='192.168.1.5',master_user='slave',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=2714;
其中master_log_file和master_log_pos对应上图的file和position
开启同步功能1
start slave;
检查从库状态 show slave status\G;
注意图上红框,这两个值都为yes才算配置成功
测试
测试就不弄了,这边可以自行测试看看