【MySQL】主从复制搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Francis123580/article/details/83240043

前言

MySQL能够将一个 MySQL Server的 Instance 中的数据完整的复制到另外一个 MySQL Server 的 Instance 中,虽然复制过程并不是实时而是异步进行的,但是延时非常之少

原理方面点击:https://blog.csdn.net/Francis123580/article/details/80809596

搭建步骤

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,表示主从复制配置成功

Slave_IO_Running=Yes
Slave_SQL_Running=Yes


mysql 关闭slave方式:

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

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

问题 & 方案

主从同步延迟问题

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

解决方案

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

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/83240043