• 主从复制


     

    五 主从复制 Replication(重要@!!!!!!)

    5.1、介绍

    基于主库二进制日志实时恢复到备库。

     

    5.2、原理

    5.2.1 主从复制的前提

    1)两台或两台以上数据库实例

    2)主库要开启二进制日志

    3)主库要有复制用户

    4)从库需要在开启复制功能之前,获取到主库之前的数据(主库备份,并且记录binlog当时位置)

    5)从库第一次开启主从复制,必须获知主库IPportuser?password?从哪开始复制?

    change master to IPportuser?password?从哪开始复制?

    6)从库要开启复制相关线程:IOSQL

    7)从库需要记录复制相关用户信息,还应该记录到上次已经从主库请求到哪个二进制日志

    8)从库请求过来的binlog,首先要存下来,执行binlog,执行过的信息保存下来

        5.2.2 主从复制涉及到的文件和线程

        主库

            binlog:记录主库发生过的修改事件

            dump Thread 给从库传送(TP)二进制日志线程

        从库    

            relay-log.000001: 存储所有主库TP过来的binlog事件。

            master.info : 存储复制用户信息,上次请求到的主库binlog的位置点。

            IO线程: 接收主库发来的binlog日志,也是从库请求主库的线程

            SQL线程:source一下relay-log中的日志。

        

        5.2.3 原理(见图。)

        1)通过change master to 语句告诉从库主库IP portuser?password +从哪个binlog开始自动复制

        2)从库通过 start slave 命令,开启复制必要线程IO线程和SQL线程

        3)从库通过IO线程,拿着change的用户密码相关信息,连接主库,主库验证连接的合法性,验证成功通知客户端连接ok

        4)从库连接主库成功后,会拿着 change master to 语句中提供的binlog position 3号文件120位置)号问主库,有没有比这个新的。

        5)主库接收到从库请求后,查找show master status 比较一下,如果有新的,就切割日志并通过dump thread TP给从IO

        6)从库通过IO线程接收到主库发来的binlog,存储到TCPIP缓存中,并立即返回ACK,并更新master.infobinlog信息

        7)将TCPIP缓存中数据写入relay-log日志文件中

        8SQL线程读取relay-log.info ,获取到上次已经执行过的relay-log的位置点,从这之后继续执行后续relay-log日志,执行完成后,更新relay-log.info到此位置一次主从复制就完成

  • 相关阅读:
    python 连接ubuntu xampp mysql
    [解决] win7能上网,ubuntu14.04不行
    ubuntu14.04 安装 pyv8
    QT_QMAKE_EXECUTABLE reported QT_INSTALL_LIBS as /usr/lib/i386-linux-gnu but ...
    网站运营思想
    织梦直接往数据库写入数据
    [xunsearch] 在thinkphp中使用xunsearch
    [xampp] phpmyadmin 设置登录密码
    [centos6.5] 把xampp的htdocs改为其他目录
    [ubuntu] service apache2 restart [fail]
  • 原文地址:https://www.cnblogs.com/nodchen/p/9489392.html
Copyright © 2020-2023  润新知