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

     

    五 主从复制 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到此位置一次主从复制就完成

  • 相关阅读:
    图床_shell命令passwd
    图床_shell命令usermod
    图床_shell命令groupadd
    图床_shell命令userdel
    图床_shell命令useradd
    图床_shell命令whereis
    图床_shell命令find
    图床_shell命令which
    图床_shell命令locate
    图床_shell命令free
  • 原文地址:https://www.cnblogs.com/nodchen/p/9489392.html
Copyright © 2011-2022 走看看