mysql主从复制设置

前言

  最近换了一个工作,接了一个坑灰常大的项目,这个项目很老了,几年的数据下来,数据库都是百万级别的,生产环境经常有用户投诉卡顿问题,之前把该弄索引的都弄了,好了许多,但还是会卡,所以搞了读写分离,这边先介绍下主从复制。

环境准备

  这边先准备两台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才算配置成功

测试

  测试就不弄了,这边可以自行测试看看

坚持原创技术分享,您的支持将鼓励我继续创作!