MySQL主从复制

什么叫主从复制

通过在主服务器和从服务器之间切分处理客户查询的负荷,可以得到更好的客户响应时间; 读写分离,就是“写”的操作都在主数据库,“读”的操作都在从数据库!

主从复制的优点

  • 数据库备份
  • 读写分离

主从复制工作原理

  • 配置主从结构先在主上打开一个二进制日志的文件(Binary.log),在master写操作时,就会把写的命令存入到这个二进制文件中(insert,update,delete), slave开启一个IO线程,线程定时读取主节点的二进制文件,将新的命令抓取过来

  • 存放到本地一个中继日志中(relay.log);slave上还有一个定时启动的线程叫sql,监控本地的中继日志, 一旦有新的命令发现,将会把中继日志中的命令执行一遍。这样一来,主从结构就完成了数据的备份。

步骤

1、准备数据库服务器

centos7下的lnmp集成包。关闭防火墙

systemctl stop firewalld.service
  • 主(master) 192.168.0.253
  • 从(slave) 192.168.0.251

2、主服务器配置

1、修改主服务器上:/etc/my.cnf

server-id = 1 
log-bin = mysql-bin  #主从服务的核心
binlog-do-db=test//需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-ignore-db=mysql //被忽略的数据库

在主服务器创建一个专门用来同步的用户

# GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'mysync'@'192.168.0.251' IDENTIFIED BY '123456';
show master status;// 等着

3、从服务器

1、修改从服务器上:/etc/my.cnf

server-id = 251  //保证唯一性

2、设置从服务

CHANGE MASTER TO MASTER_HOST='192.168.0.253',MASTER_USER='mysync',
MASTER_PASSWORD='12345678',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=511;
  • MASTER_LOG_FILE //从主服务器上看status
  • MASTER_LOG_POS //同上
start slave  #开启从服务
show slave status\G #查看从服务状态

如下两个选项都为yes标明主从成功

Slave_IO_Running:Yes
Slave_SQL_Running:yes

4、测试增删改

聂哥不管