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 选项,该选项会阻止没有权限的线程修改数据

linux MySql 的主从复制部署的更多相关文章

  1. mysql数据库主从复制部署笔记

    主从复制是mysql中数据库实时同步的一个常用做法了,今天我来给各位介绍一下关于mysql数据库主从复制部署一个过程,希望此例子对各位同学参考参考. 数据库主从复制原理: 数据库的主从复制就是从mas ...

  2. 一文搞定Spring Boot + Vue 项目在Linux Mysql环境的部署(强烈建议收藏)

    本文介绍Spring Boot.Vue .Vue Element编写的项目,在Linux下的部署,系统采用Mysql数据库.按照本文进行项目部署,不迷路. 1. 前言 典型的软件开发,经过" ...

  3. MySQL的主从复制+双主模式

    MySQL的主从复制 部署环境: MySQL master 192.168.40.21 MySQL slave  192.168.40.22 思路: 当主MySQL上进行数据上的操作或者变化时,主My ...

  4. Linux 下的mysql+centos7+主从复制

    mysql+centos7+主从复制   MYSQL(mariadb) MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公 ...

  5. MySQL主从复制部署

    前言 MySQL的主从复制是基于二进制日志机制的,需开启二进制日志功能.在具体的配置过程中,需注意主服务器与从服务器均配置唯一ID编号,且从服务器必须设置主服务器的主机名.日志文件名.文件位置等参数. ...

  6. Linux mariadb(Mysql)的主从复制架构

    mysql的主从复制架构,需要准备两台机器,并且可以通信,安装好2个mysql,保持版本一致性 mysql -v 查看数据库版本 1.准备主库的配置文件  /etc/my.cnf 写入开启主库的参数[ ...

  7. mysql (主从复制)(proxy , Amoeba)

    原址如下: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中 ...

  8. Mysql读写分离方案-MySQL Proxy环境部署记录

    Mysql的读写分离可以使用MySQL Proxy和Amoeba实现,其实也可以使用MySQL-MMM实现读写分离的自动切换.MySQL Proxy有一项强大功能是实现"读写分离" ...

  9. liinux安装 mysql 及主从复制

    mariadb其实就是mysqlmysql已经被oracle收购,它即将闭源,马上要开始收费了因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb 安装mar ...

随机推荐

  1. object-fit 用于图片适应

    参考文章: object-fit

  2. es之批量提交操作

    1:批量查询操作 1):插入测试数据 PUT /costumer/doc/1{ "name": "zhangsan", "age": 20} ...

  3. python相关遗漏知识点补充

    python中的相关帮助命令 假设s是一个字符串, 那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是 ...

  4. Python 爬虫如何入门学习?

    "入门"是良好的动机,但是可能作用缓慢.如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习. 另外如果说知识体系里的每一个知识点是图里的点,依 ...

  5. Linux下用jar命令更新jar包文件

    jar -uvf SDK_Web_ChartReport.war  view/global/header.jsp echo '样式文件替换进包中'   查看jar包中的文件: jar -tvf SDK ...

  6. 一、基础篇--1.1Java基础-Exception、Error、RuntimeException与一般异常有何异同

    Throwable.Error.Exception.RuntimeException 关系如下类图所示: Throwable: Throwable类是java语言中所有错误或者异常的超类.它的两个子类 ...

  7. Spring 由缓存切点驱动的通知者

    Spring 缓存通知者和切点 缓存切点 /** * Spring 核心切点抽象 */ public interface Pointcut { /** * 类过滤器,当前切点是否需要织入在指定的类上 ...

  8. php5.4编译安装apache

    1.下载源码包 wget 网址/php-5.4.45.tar2.解压源码包 tar -zxvf php-5.4.45.tar3.创建一个安装目录 mkdir /usr/local/php4.进入解压后 ...

  9. HTTP学习记录:一、协议基础

    学习资源主要为:@小坦克HTTP相关博客 1.HTTP简介: HTTP协议是Hyper Text Transfer Portocol(超文本传输协议)的缩写,它是一种通信协议,允许将超文本(即:htm ...

  10. delphi2010:按键 控制键 组合键的判断 响应

    procedure TForm7.FormShortCut(var Msg: TWMKey; var Handled: Boolean); var   aKey: TShortCut;   aShif ...