zoukankan      html  css  js  c++  java
  • Mysql数据库的主从复制

    一)为什么要有Mysql主从复制?

      因为单台的数据库服务器需要承载客户端的读取和写入操作的请求,那么若客户端请求过多,那么服务器就会崩溃导致宕机、那么可以选择Mysql数据库集群的方式来增加Mysql服务处理数据的效率。

    二)主从复制原理?

    1、在每个事务更新之前,master再二进制文件中记录这些改变,写入二进制文件完成后,master通知存储引擎提交事务;

    2、slave开启一个I/O线程,I/O线程再master的binlog中读取事件,如过已经跟上master,他会睡眠等待master产生新的事件,I/O线程将产生的新事件写入到中继日志中。(中继日志一般存放在os的缓存,所以开销比较小)

    3、slave中的sql线程在中继日志中读取事件,并重放其中事件而更新slave的数据,使其与master中的数据保持一致;

    复制类型:

    1、基于语句的复制

    2、基于行的复制

    3、混合类型的复制

    主从复制方式:

    基于二进制文件:二进制日志文件;

    基于GTID方式:在5.6版本开启的新的方式

    工作过程:

    1、master更新数据时,会在事务前产生GTID,一同记录到binlog日志中。

    2、slave端的I/O 线程将变更的binlog,写入到本地的relay log中。

    3、sql线程从relay log中获取GTID,然后对比slave端的binlog是否有记录。

    4、如果有记录,说明该GTID的事务已经执行,slave会忽略。

    5、如果没有记录,slave就会从relay log中执行该GTID的事务,并记录到binlog。

    6、在解析过程中会判断是否有主键,如果有就用二级索引,如果没有就用全部扫描。

    优势:

    1、更简单的实现failover,不用以前那样在需要找二进制日志文件log_file和位置值log_pos。

    2、比传统的复制更加安全可靠。

    3、GTID是连续的没有空洞的,保证数据的一致性,零丢失。       

    4、slave无需知道master的pos值和日志文件值,只需要知道master的ip、用户名、密码即可;

  • 相关阅读:
    Android中传感器的基本概念
    Android攻城狮 multi-touch多点触摸
    Android攻城狮SurfaceView
    Android攻城狮Tab类型
    Android攻城狮使用SubMenu创建子菜单
    Android攻城狮认识ContextMenu
    Android攻城狮OptionsMenu
    Android攻城狮Notification实现状态通知栏
    虹软人脸识别SDK(java+linux/window)
    人脸识别ArcFace C#DEMO 开发应用全过程
  • 原文地址:https://www.cnblogs.com/oopkop/p/12730500.html
Copyright © 2011-2022 走看看