zoukankan      html  css  js  c++  java
  • MySQL主从复制

    一、MySQL主从复制介绍

    二、MySQL主从复制的企业应用场景

    三、MySQL主从复制原理介绍

    四、MySQL主从复制具体操作方法 

     

    一、MySQL主从复制介绍

    主从复制是MySQL自带的一种横向扩展方案,通过“数据变更在主库执行,查询请求在从库执行”这样的形式可以在一定程度上实现读写分离。如果配置了无损复制,从库一定程度上还可以当做备份使用,甚至配置一台节点为延迟从库。有了主从复制后,还可以实现服务滚动升级(先升级从库进行测试,然后手动切换主从后升级其他从库)。主从结构通常可以分为一主一从、一主多从、级联复制等,如果是一主多从的架构需要注意从服务器的数量不能太多,否则会因为日志的传输给主库带来过多的带宽消耗(曾遇到主库网卡异常导致从库一直卡住的原因,当时一直思考的是大事务原因,结果是硬件导致)

    二、MySQL主从复制的企业应用场景

    应用场景1:从服务器作为主服务器的实时数据备份

    应用场景2:主从服务器实时读写分离,从服务器实现负载均衡

    主从服务器架构可通过程序(PHP、Java等)或代理软件(mysql-proxy、Amoeba)实现对用户(客户端)的请求读写分离,即让从服务器仅仅处理用户的select查询请求,降低用户查询响应时间及读写同时在主服务器上带来的访问压力。对于更新的数据(例如update、insert、delete语句)仍然交给主服务器处理,确保主服务器和从服务器保持实时同步。

    应用场景3:把多个从服务器根据业务重要性进行拆分访问

    可以把几个不同的从服务器,根据公司的业务进行拆分。例如:有为外部用户提供查询服务的从服务器,有内部DBA用来数据备份的从服务器,还有为公司内部人员提供访问的后台、脚本、日志分析及供开发人员查询使用的从服务器。这样的拆分除了减轻主服务器的压力外,还可以使数据库对外部用户浏览、内部用户业务处理及DBA人员的备份等互不影响。具体可以用下图说明:

    三、MySQL主从复制原理介绍

    MySQL的主从复制是一个异步的复制过程,数据将将从一个MySQL主节点数据库(Master)复制到另一个MySQL从节点数据库(Slave),在Master于Slave之间实现整个主从复制的过程是由三个线程参与完成的。

    主节点数据库:dump Thread为每个SlaveI/O Thread启动一个dump线程,用于向其发送binary log events    
    从节点数据库:I/O ThreadMaster请求二进制日志事件,并保存于中继日志中。SQL Thread从中继日志中读取日志事件,在本地完成重放……

    MySQL主从复制原理过程详细描述

    下面简单描述下MySQL Replication的复制原理过程。

    1)在Slave服务器上执行start slave命令开启主从复制开关,主从复制开始进行。

    2)此时,Slave服务器的I/O线程会通过在Master上己经授权的复制用户权限请求连接Master服务器,并请求从指定Binlog日志文件的指定位罝(日志文件名和位置就是在配罝主从复制服务时执行change master命令指定的)之后开始发送Binlog日志内容。

    3)Master服务器接收到来自Slave服务器的I/O线程的请求后,其上负责复制的I/O线程会根据Slave服务器的I/O线程请求的信息分批读取指定Binlog日志文件指定位置之后的Binlog日志信息,然后返回给Slave端的I/O线程。返回的信息中除了Binlog日志内容外,还有在Master服务器端记录的新的Binlog文件名称以及在新的Binlog中的下一个 指定更新位置。

    4)当Slave服务器的I/O线程获取到Master服务器上I/O线程发送的日志内容及日志文件及位置点后,会将Binlog日志内容依次写入到Slave端自身的Relay Log(即中继日志) 文件(MySQL-relay-bin.xxxxxx)的最末端,并将新的Binlog文件名和位置记录到master-info文件中,以便下一次读取Master端新Binlog日志时能够告诉Master服务器需要从新Binlog 日志的指定文件及位置开始请求新的Binlog日志内容。

    5)Slave服务器端的SQL线程会实时地检测本地Relay Log中I/O线程新增加的日志内容,然后及时地把Relay Log文件中的内容解析成SQL语句,并在自身Slave服务器上按解析SQL语句的位置顺序执行应用这些SQL语句,并记录当前应用中继日志的文件名及位置点在relay-log.info中。

    四、MySQL主从复制具体操作方法

    主从配置需要注意的点

    • 主从服务器操作系统版本和位数一致;

    • Master 和 Slave 数据库的版本要一致;

    • Master 和 Slave 数据库中的数据要一致;

    • Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;

    Master 上的配置 

    安装数据库;

    1. 修改数据库配置文件, 指明 server_id, 开启二进制日志(log-bin);
    2. 启动数据库, 查看当前是哪个日志, position 号是多少;
    3. 登录数据库, 授权数据复制用户(IP 地址为从机 IP 地址, 如果是双向主从, 这里的还需要授权本机的 IP 地址, 此时自己的 IP 地址就是从 IP 地址);
    4. 备份数据库(记得加锁和解锁);
    5. 传送备份数据到 Slave 上;
    6. 启动数据库;
    7. 以下步骤, 为单向主从搭建成功, 想搭建双向主从需要的步骤:
    8. 登录数据库, 指定 Master 的地址、 用户、 密码等信息(此步仅双向主从时需要);
    9. 开启同步, 查看状态;

    Slave 上的配置

    1. 安装数据库;
    2. 修改数据库配置文件, 指明 server_id(如果是搭建双向主从的话, 也要开启二进制
    3. 日志 log-bin);
    4. 启动数据库, 还原备份;
    5. 查看当前是哪个日志, position 号是多少(单向主从此步不需要, 双向主从需要);
    6. 指定 Master 的地址、 用户、 密码等信息;
    7. 开启同步, 查看状态。

    修改Mysql配置文件(windows路径:C:ProgramDataMySQLMySQL Server 8.0     centos路径:/etc/my.ini)

    1、主节点配置:

    [mysqld]
    log-bin=mysql-bin
    server-id=1 

    2、从节点:

    [mysqld]
    server-id=2

    3、创建用于复制操作的用户

    mysql> CREATE USER 'repl'@'192.168.8.%' IDENTIFIED WITH mysql_native_password BY 'Ron_master_1';
    mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.8.%';
    mysql> flush privileges;

    4、获取主节点当前binary log文件名和位置(position)

    mysql> SHOW MASTER STATUS;

     5、在从(Slave)节点上设置主节点参数

    CHANGE MASTER TO
    MASTER_HOST='192.168.8.83',
    MASTER_USER='slave',
    MASTER_PASSWORD='Canlan541',
    MASTER_LOG_FILE='WIN-75CJPRTCCN1-bin.000001',
    MASTER_LOG_POS=155;

    6、在从节点开启主从同步

    mysql> start slave;

    7、查看主从同步状态

    mysql> show slave statusG;

    查看主从状态显示以上状态, 此时主从同步配置完成。

  • 相关阅读:
    iOS开源App整理
    iOS9 3DTouch 之 Home Screen Quick Actions
    UITabbarController & UITabbar 学习
    Linux一些最基础操作
    logo的表现形式
    LOGO设计中出现文字背后的意义
    标志设计中选择合适的字体
    sketch制作LOGO(三) ---大熊猫
    sketch制作LOGO(二) ---樱花婆婆
    十多个app引导页面欣赏
  • 原文地址:https://www.cnblogs.com/niewd/p/14973073.html
Copyright © 2011-2022 走看看