【MySQL】主从复制搭建

前言

MySQL可以将一个 MySQL Server的 Instance 中的数据完整的复制到另一个 MySQL Server 的 Instance 中,虽然复制过程并非实时而是异步进行的,可是延时很是之少mysql

原理方面点击:http://www.noobyard.com/article/p-tlfiguqc-oh.htmlios

 

搭建步骤

1. 修改主服务器配置

  • 添加用户:mysql > Create user repl identified by ‘repl';
  • 受权用户:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl' ;
  • 修改my.cnf配置文件:vim my.cnf
  • 在 [mysqld] 下添加以下配置
#启用二进制日志文件
log-bin=mysql-bin 
#服务器惟一ID,建议使用IP最后数字
server-id=130

2. 记录主服务器信息

# 重启mysql服务
systemctl restart mysqld 
# 查看master状态
mysql > show master status;

3. 修改从服务器配置

  • 修改my.cnf配置文件:vim my.cnf
  • 在 [mysqld] 下添加以下配置
#服务器惟一ID,建议使用IP最后数字
server-id=132 
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
read_only=1

4. 链接主从服务器

# 重启mysql服务
systemctl restart mysqld
mysql > change master to master_host='192.168.60.131',master_user='repl',master_password='repl',master_log_file='mysql-bin.000001',master_log_pos=154;
mysql > start slave;
mysql > show slave status\G;

当以下两个线程状态为yes,表示主从复制配置成功web

Slave_IO_Running=Yes
Slave_SQL_Running=Yessql


mysql 关闭slave方式:数据库

  1. salve服务器my.cnf 增长 skip-slave-start
  2. 重启salve mysql

参考:https://blog.csdn.net/u010969226/article/details/44198371vim

 

问题 & 方案

主从同步延迟问题缓存

  1. 当master库tps比较高的时候,产生的DDL数量超过slave一个sql线程所能承受的范围,或者slave的大型query语句产生锁等待
  2. 网络传输: bin文件的传输延迟
  3. 磁盘的读写耗时:文件通知更新、磁盘读取延迟、磁盘写入延迟

解决方案bash

  1. 在数据库和应用层增长缓存处理,优先从缓存中读取数据
  2. 减小slave同步延迟,能够修改slave库sync_binlog属性; sync_binlog=0 文件系统来调度把binlog_cache刷新到磁盘,sync_binlog=n
  3. 增长延时监控:Nagios作网络监控、mk-heartbeat