码迷,mamicode.com
首页 > 数据库 > 详细

mysql的主从复制

时间:2020-02-19 14:52:55      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:检查   二进制文件   主从复制   协议   原理   执行   服务   相关   语句   

1. 为什么需要主从复制?

  a. 在复杂的业务中,有一个sql需要锁表,导致不能使用读的服务,影响业务的运行,使用主从复制,让主库写,从库读,保证业务的运行

  b. 做数据的热备

  c. 架构扩展,业务量原来越大,I/O访问评率过高,做多库存储,提高单个机器的I/O性能

2. 原理(默认采用的是异步的方式,不是强一致性)

  MySQL 中有一种日志叫做 bin 日志(二进制日志),这个日志会记录下所有修改了数据库的SQL语句。主从复制的原理其实就是"从"服务器向"主"服务器请求这个日志文件,"主"服务器会把这个 bin 日志复制到"从"服务器上执行一遍,这样"从"服务器上的数据就和"主"服务器上的数据相同了。

  技术图片

  主服务器必须启动二进制日志binlog,记录任何修改数据库数据的sql

 

 

  从服务器开启一个线程(I/O thread)把自己扮演成mysql的客户端,通过mysql协议,请求主服务器的二进制日志文件binlog

  主服务器启动一个线程(Dump thread),检查自己二进制日志中的sql,核对参数,对比,将binlog日志发送到从服务器

  从服务器接收到主服务器的数据放到中继日志relay log文件中

  从服务器启动一个线程sql thread,把relay log中的事件读取出来,在本地执行

3. mysql主从同步延时分析

  业务的持久成实现采用分库架构,mysql服务可平行扩展,分散压力

  读写分离

  mysql之间加入redis或者cache层,降低mysql压力

  使用比主库更好的设备作为slave

  使用更好的硬件设备

mysql5.7之后使用MTS并行复制技术


4. 安装配置  

  a. 在两台数据库中分别创建数据库,库名一样

    create database aaa;

  b. 在主服务器进行配置

    #在mysqld模块中添加如下配置信息

    vi /etc/my.cnf

    log-bin=master-bin #二进制文件名称

    binlog-format=ROW  #二进制日志格式,有row、statement、mixed三种格式

    server-id=1    #要求各个服务器的id必须不一样

    binlog-do-db=aaa   #同步的数据库名称

  c. 配置主服务器的账号授权,允许从服务器访问    

    --授权操作
    set global validate_password_policy=0;
    set global validate_password_length=1;
    grant replication slave on *.* to ‘root‘@‘%‘ identified by ‘123456‘;
    --刷新权限
    flush privileges;

   d. 从服务器的配置

    #修改配置文件,执行以下命令打开mysql配置文件
    vi /etc/my.cnf
    #在mysqld模块中添加如下配置信息
    log-bin=master-bin #二进制文件的名称
    binlog-format=ROW #二进制文件的格式
    server-id=2 #服务器的id

   e. 重启主服务器的mysqlid服务

    #重启mysql服务
    service mysqld restart
    #登录mysql数据库
    mysql -uroot -p
    #查看master的状态
    show master status,记录binlog文件的名称,和位置

   f. 重启从服务器进行相关配置

    #重启mysql服务
    service mysqld restart
    #登录mysql
    mysql -uroot -p
    #连接主服务器
    change master to                                   master_host=‘192.168.85.11‘,master_user=‘root‘,master_password=‘123456‘,master_port=3306,master_log_file=‘master-bin.000001‘,master_log_pos=154;
    #启动slave
    start slave
    #查看slave的状态
    show slave status\G(注意没有分号)

    

    

  

  

 

mysql的主从复制

标签:检查   二进制文件   主从复制   协议   原理   执行   服务   相关   语句   

原文地址:https://www.cnblogs.com/zhaoatian/p/12331084.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!