MySQL自带主从复制原理

作者: 迦叶_金色的人生_荣耀而又辉煌 | 来源:发表于2021-01-27 07:22 被阅读0次

    上一篇 <<<MySQL如何性能优化面试题完美解答
    下一篇 >>>


    主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现。
    可实现:数据备份、故障转移、MySQL集群、高可用、读写分离等功能

    主从复制的好处

    (1)数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据
    (2)性能大大提升:一主多从,不同用户从不同数据库读取,性能提升
    (3)扩展性更优:流量增大时,可以方便的增加从服务器,不影响系统使用
    (4)负载均衡:一主多从相当于分担了主机任务,做了负载均衡。

    主从复制实现原理

    把主服务器上的binLog日志(记录数据的增删改和授权等写操作行为)复制到从服务器上执行一遍,这样从服务器上的数据就和主服务器上的数据相同了。

    步骤:
    a、主库有写操作时,会将日志信息写到binlog中
    b、主库启用新线程log dump线程,从库启用新的io线程,这两个线程保持着长连接
    c、当binlog有变动时,log dump线程会将数据推给从数据库的io线程
    d、io线程获得binlog后写到relay log(中继日志)中,由sql独立线程完成数据库的写操作。

    主从复制的类型

    类型 说明
    基于SQL语句的复制
    【STATEMENT模式(SBR)】
    在主服务器上执行sql语句,在从服务器上执行同样的语句。
    优点是并不需要记录每一条sql语句和每一行的数据变化,减少了binlog日志量,节约IO,提高性能。
    缺点是在某些情况下会导致master-slave中的数据不一致(如sleep()函数, last_insert_id(),以及user-defined functions(udf)等会出现问题)。
    mysql默认采用基于语句的复制,执行效率高。
    基于行的复制
    【ROW模式(RBR)】
    把改变的内容复制过去,而不是把命令在从服务器上执行一遍。
    缺点是会产生大量的日志,尤其是alter table的时候会让日志暴涨。
    混合类型的复制
    【MIXED模式(MBR)】
    默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制

    主从复制的配置

    1.主节点

    vi /etc/my.cnf  新增以下内容
    server_id=177  ###服务器id
    log-bin=mysql-bin   ###开启日志文件
    

    2.从节点

    vi /etc/my.cnf
    server_id=178  ###从服务器server_id
    log-bin=mysql-bin  ###日志文件同步方式
    binlog_do_db=test   ###同步数据库(貌似没啥用处,建立其他库也会同步)
    

    3.建立关联关系

    #参数顺序:主节点IP 用户名 密码 主binLog文件名称 同步的主节点行数,后两个参数可以通过show master status;
    change master to master_host='10.211.55.26',master_user='root',master_password='root', master_log_file='mysql-bin.000003',master_log_pos=120;
    

    4.开始同步

    start slave
    

    5、从节点同步状态查询:SHOW SLAVE STATUS

    相关文章

      网友评论

        本文标题:MySQL自带主从复制原理

        本文链接:https://www.haomeiwen.com/subject/ityeoktx.html