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. Oracle锁处理脚本

    ----处理死锁进程--查看被锁住的表select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,db ...

  2. 大哥带我们的mysql注入 基于bool的盲注

    盲注 那么我们来了解一点盲注的语法 这里面是语法的介绍 https://blog.csdn.net/alex_seo/article/details/82148955 0X01第一步我们先判断当前数据 ...

  3. android网络连接工具类

    该类的目的主要是判断设备的联网状态  检测设备是否连接了网络 package com.wotlab.home.moneyplantairs.utils; import android.content. ...

  4. 三、robotframework封装的关键字-数据库使用

    1.      从数据库查询结果:   数据库连接:Connect To Database Using Custom Params           用法:Connect To Database U ...

  5. Vue开发调试神器 vue-devtools

    Vue开发调试神器: vue-devtools 1. 下载Chrome扩展插件GitHub下载地址: https://github.com/vuejs/vue-devtools 建议使用npm淘宝镜像 ...

  6. linux查看硬盘信息

    1. 通过内核查看硬盘信息 cat /sys/block/sda/device/model cat /sys/block/sda/device/vendor 2. 用过hdparm命令查看 hdpar ...

  7. jmeter之报告输出(html)

    在使用jmeter进行测试时,我们需要生成相应的测试报告,jmeter3.0之后有自带的测试报告. 在测试报告的格式和输出内容不满足需求时,我们可以根据需要去修改其配置文件(jmeter.proper ...

  8. Linx下Keepalived做成服务

    在/usr目录下面执行: find -name keepalived 返回如下: ./sbin/keepalived ./local/sbin/keepalived ./local/etc/keepa ...

  9. Jmeter之检查点

    检查点 Jmeter中检查点也叫断言,Jmeter中有很多类型的断言,但是最常用的是响应断言,即根据服务器返回的结果来判断测试是否通过. 响应断言 添加断言结果用于运行完毕后查看结果 测试通过 测试不 ...

  10. Linux iptables 防火墙常用规则

    iptables 安装 yum install iptables iptables 规则清除 iptables -F iptables -X iptables -Z 开放指定的端口允许本地回环接口(即 ...