zoukankan      html  css  js  c++  java
  • linux MySql 的主从复制部署

    MySql 复制

    mysql 复制:将某一台主机上的 Mysql 数据复制到其它主机(slaves)上,并重新执行一遍从而实现 当前主机上的 mysql 数据与(master)主机上数据保持一致的过程我们可以称为复制。

    复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新 写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器 的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功 更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。


    105

    MySql 复制能够解决什么问题

    1、数据的分布(Data Distribution)

    2、负载均衡(Load balancing) | mysql 读写分离

    3、可以实现数据的备份(Backups),但是不能当真正意义上数据备份来用

    4、高可用性和容错行(比如双主模型中的互为主从能实现高可用)

    MySql 复制原理

    1.工作原理图


    106

    从上图来看,Mysql 的复制就三个步骤:

    1)在 Master 服务器将改变的数据记录到二进制日志(binary log)中(这些记录叫做二进制日志事件)

    2)Slave 服务器将 Master 服务器上的二进制日志拷贝到自己的中继日志(relay-log)中

    3)Slave 服务器读取中继日志中的事件,然后将改变的数据写入到自己的数据库中

    2.说明三步流程

    第一步:是在 Master 服务器上记录二进制日志。在每个更新数据的事务完成之前,Master 服务器 都会将数据更改记录到二进制日志中。即使事务在执行期间是交错的,Mysql 也会串行地将事务写 入到二进制日志中。在把事件写入二进制日志之后,Master 服务器告诉存储引擎可以提交事务了 第二步:是 Slave 服务器把主服务器的二进制日志拷贝到自己的硬盘上,进入所谓的“中继日志” 中。首先,它启动一个工作线程,叫 I/O 线程,这个 I/O 线程开启一个普通的客户端连接,然后启 动一个特殊的二进制日志转储进程(它没有相应的 SQL 命令)。这个转储进程 Master 服务器的二 进制日志中读取数据。它不会对事件进行轮询。如果 3 跟上了 Master 服务器,就会进入休眠状态 并等待有新的事件发生时 Master 服务器发出的信号。I/O 线程把数据写入 Slave 服务器的中继日志 中

    第三步:SQL 线程读取中继日志,并且重放其中的事件,然后更新 Slave 服务器的数据。由于这个

    线程能跟上 I/O 线程,中继日志通常在操作系统的缓存中,所以中继日志的开销很低。SQL 线程执 行事件也可以被写入 Slave 服务器自己的二进制日志中,它对于有些场景很实用

    上图中显示了在 Slave 服务器有两个运行的线程,在 Master 服务器上也有一个运行的线程:和其 他普通连接一样,由 Slave 服务器发起的连接,在 Master 服务器上同样拥有一个线程

    3、配置注意事项

    1、Master 服务器必须开启二进制日志

    2、Master 和 Slave 的 Server-id 不能相同

    3、同一个 Master 的多个 Slave,Server-id 也不能相同

    4、Binlog_format 最好相同

    5、在 Slave 服务器上配置 log-slave-updates=1 时,也需要开启二进制日志;如果可以推荐使用

    read_only 选项,该选项会阻止没有权限的线程修改数据

  • 相关阅读:
    How to using X++ code achieve copying records
    How to using x++ code achieve Lookup files list with entire folder
    Using X++ code create and Read XML file.
    Using X++ Code Create master table form
    When you are finished renamed the Item number Jobs
    Visual Studio.NET 简介
    Visual C++中的异常处理浅析
    最常见的20种VC++编译错误信息
    开发WDM型的USB设备驱动程序
    C++中内存管理
  • 原文地址:https://www.cnblogs.com/fanweisheng/p/11328125.html
Copyright © 2011-2022 走看看