mysql主从复制运行原理及配置

使用场景

  • 主数据库服务器故障后,可切换到从数据库继续工做
  • 不影响主数据库的性能的工做,好比在从数据库做备份、数据统计等工做

常见问题及解决方案

  • 复制延迟mysql

    能够利用同步复制机制(Semi-sync)解决,可是影响性能,当主机写入时,确认更新已经同步到备机以后,再返回写操做成功。
    主从架构是一种高可用的解决方案,并非处理高并发的,处理高并发可利用redis缓存来解决。redis

运行原理

从一个mysql instance(master)复制到另外一个mysql instance(slave)的过程咱们称之为mysql主从复制。在mysql复制的过程当中,主要由3个线程完成sql线程和IO线程在slave,另外一个IO线程在matser。sql

mysql复制的基本过程以下:数据库

  1. slave上的IO线程链接master,请求日志文件指定位置或者最开始的位置以后的日志内容
  2. master接收请求,并经过负责复制的IO线程根据请求的信息读取日志文件内容,将日志信息和master端的Binary Log文件的名称以及在Binary Log中的位置返回给slave的IO线程
  3. slaveIO线程接收到信息后,将日志内容写到Relay Log文件最末尾,并将master端的bin-log的文件名和位置记录到master-info文件中。下次请求时可告知master须要请求的位置
  4. slave的sql线程检测到Relay Log文件新增后,执行此日志文件的sql语句

实施环境

系统环境:centos7
 MySQL版本:5.7.17
 主服务器(master)IP:192.168.20.101
 从服务器(slave)IP:192.168.20.99

配置

  • 配置master服务器vim

    [root] # vim /etc/my.cnf

    修改以下内容:centos

    server-id=101 #设置服务器惟一的id,默认是1
    log-bin=mysql-bin #启用二进制日志缓存

  • 配置slave服务器服务器

    [root] # vim /etc/my.cnf

    修改以下内容:架构

    server-id=99 #设置服务器惟一的id,默认是1
    replicate-do-db=cto #只同步cto库
    slave-skip-errors=all #忽略因复制出现的全部错误并发

  • 重启主从mysql服务

    [root] # service mysqld restart
  • 在master上给slave受权

    [root] # >grant replication slave on *.* to slave@192.168.20.99 identified by "123456789";

    mysql主从复制运行原理及配置

  • 查看master上数据库状态

    [root] # >show master status;

    mysql主从复制运行原理及配置

    • 在slave执行sql语句的同步
    [root] # >change master to master_host='192.168.20.101', master_user='slave', master_password=rd='123456789', master_log_file='mysql-bin.000001', master_log_pos=442;

    mysql主从复制运行原理及配置

  • 开启salve同步
[root] # >start slave;

mysql主从复制运行原理及配置

  • 查看slave同步状态
[root] # >show slave status \G;

mysql主从复制运行原理及配置

  • 检验
    主(master)
    mysql主从复制运行原理及配置

    从(slave)
    mysql主从复制运行原理及配置

相关文章
相关标签/搜索