zoukankan      html  css  js  c++  java
  • Mysql之复制服务

    Replication[复制]使得数据可以从一个Master服务器上复制到一个或多个Slave上,默认是异步复制,不需要与Master建立永久连接;基于配置,可以作用于所有库,指定的库或库中的某些表。

    优点:

      可扩展的解决方案:将负载分摊到多个Slave上以提高性能;在这种方案中Master只负责Write和Update, 所有的Read都分摊在多个Slave上。

      数据安全性:由于数据审美观点 复制到Salve上,并且Slave可以终止复制进程。

      可解析性【Analytics】:Master是数据的产生源,可将耗时的分析工作放在Slave上,这样就不会对Master有影响。

      跨地域的数据分布【Long-distance data distribution】,你可以创建一个本地复本用于业务处理,而不时实使用Master。

    实现方式:

      MySql5.7有两种

      传统的通过Master的binary Log 在Master与Slave上同步复制;

      新的基于GTIDs[global transaction identifiers] ,使用GTIDs保证数据在Master和slave上的一致性。

    Mysql支持不同类型的同步复制,最原始的一种:One-way异步复制【一个作为Master,其他为Slave】,此与Mysql Cluster NDB7.5的同步复制相反;

    半同步【Semisynchronous】复制,事务被阻塞直到有一个Slave确认。

    延迟复制【delay replication】,故意在Master之后的一段时间执行。

    从本质上看,最基本的有两种复制方式:SBR【Statement Based Replication】,基于sql语句的复制;RBR【Row Based Replication】,只对改变的行复制。

    当然也可以将两者混合,就延生出了第三种方式 MBR【Mixed Based Replication】。

    Prior to MySQL 5.7.7, statement-based format was the default. In MySQL 5.7.7 and later, row-based format is the default.

    在复制服务中有三种线程参与:BinLog dump thread ,  Slave I/O thread和 Slave SQL thread.

    BinLog dump thread:当Slave连接Master时,Master会创建该线程用于传输BinLog到Slave上。

    Slave I/O thread :当在Slave上运行START SLAVE时创建,用于连接Master并请求BinLog,之后再把Log写到本地的relay log中供Slave SQL thread 使用。

    Slave SQL thread: 读取relaylog并执行Events。

    复制通道【Replication Channels】

  • 相关阅读:
    ajax传参后台接受遇到问题
    使用xUnit为.net core程序进行单元测试(上)
    流程图规范
    知乎上看到的一些生活道理
    Dos常用命令
    c# 操作word写入特殊字符
    vb程序安装时需要在客户端安装MSSOAP30.dll,但注册不上,请问怎么处理
    VB 调用 webservice 出现:WSDLReader:Loading of the WSDL file failed HRESULT=0×80040154: 没有注册类别 解决方案
    The type 'System.Object' is defined in an assembly that is not referenced
    数据库还原失败解决方法
  • 原文地址:https://www.cnblogs.com/itdev/p/5994680.html
Copyright © 2011-2022 走看看