Replication基本原理
异步复制:从主机拷贝到备机过程中会有延迟,延迟通常由网络、资源可用性和系统负载来决定。使用合适架构和调优,大多复制几乎是瞬间完成的。
同步复制:数据同时向一台或多台机器提交,保证多系统一致性,但也会带来额外性能损失,mysql本身不支持同步复制,利用分布式复制块设备技术能提供同步复制功能。
半同步复制:MySQL5.5新功能,主机提交半同步到从机,从机收到事务所有事件后返回给主机确认该事务提交完成或超时。当发生超时,主机会使用异步复制。半同步复制保障主机所有已提交事务都被复制到从机。
基于语句的复制:MySQL默认使用基于语句的复制方式。优点在于最终写入日志文件的数据较少,当更新删除时,日志文件占用非常少存储空间,也意味着恢复数据能最快。缺点是不支持一些非确定性行为,例如当前时间函数。
基于行的复制:MySQL5.1引入新功能,记录表中改变的数据,与基于语句方式相反。更像关系传统复制,通常不需要锁请求。优点获得更高的并发,缺点是日志文件会较大。
混合格式复制:MySQL5.1.8引入新功能,二进制日志格式能够实时改变,默认基于语句复制,当遇到以下情况自动切换到基于行的模式:
NDB存储引擎的DML操作;
使用uuid()函数;
两个以上的表中有auto_increment属性的列被更新;
任何insert delayed被执行;
调用UDF(用户定义函数);
当视图内容使用基于行复制,则创建视图的语句也使用此方式,例如使用uuid()函数创建视图时。

Replication使用案例
水平扩展:目的是使负载分散到一个或多个从机,以提高性能。垂直扩展是在主机天津硬件资源,水平扩展是添加服务器。在水平扩展架构中,读写操作可以分离到主机和从机上。
高可用性:将改变的数据复制到从机,目的是解决当前主机发生错误、崩溃或维护,需要从主机下线时系统迁移到从机。
数据备份:避免数据备份时给主机带来性能下降或锁开销,可以选择从机替代主机执行备份操作。
在线分析:许多商业智能和查询分析工作需要占用大量主机资源并且比较耗时。对于这种情况,使用从机提供查询分析服务。
异地复制:不同地理位置的数据库之间实现远距离数据复制。异步复制在这种场景能更好解决网络延迟带来的影响。

Replication拓扑结构
Master to Slave :管理配置最简单的方式,一台做主机另一台做从机。
Master to Multiple Slaves :这种方式有更好的水平扩展能力,同时增加了管理的复杂性和复制失败解决问题的潜在风险。
Master to Slaves to Slaves :主多从的一种扩展,从机被另外一些从机作为主机。
Master to Master(Master - Master) :两台服务器结合一起,互为主从。这种配置使写操作在两个系统之间更好的被复制,但也明显地提高了在安装,配置和管理的复杂程度。
Master-Master to Slave :这种复制拓扑结构当前是不被MySQL所支持的。在多主配置环境下,通常是两台作主机,从机要从这两台主机复制数据。

Replication内部工作流程
MySQL复制,主机将更新写入二进制日志文件,并对日志维护一个索引,保持日志轮流跟踪。日志作为更新记录发送到从机。当从机连接到主机时,会检查日志最后一次更新成功最近位置。然后接受自那时以来的所有更新,之后从机便等待主机通知新的更新。

Replication配置

创建复制用户:该帐户给予“REPLICATION  SLAVE”权限,专门用于复制,不授予复制权限以外的其他权限。
GRANT  REPLICATION  SLAVE  ON  *.*  TO  'replication_user'@'%’ IDENTIFIED BY 'password' ; 
FLUSH  PRIVILEGES;
2.  刷新表和阻塞写操作:在主机刷新所有表并阻塞写操作。设置读锁: FLUSH TABLES WITH READ LOCK;
3.  记录主机二进制日志位置:可以使用SHOW MASTER STATUS;
4.  修改从机my.conf文件并重启: my.conf 中 [mysqld] 段加入 server-id=2,ID值必须是1-232之间,必须和主机不同。复制通讯      中ID值是每个服务器的唯一标识。重启从机MySQL服务,新配置就会生效。
5.  初始化复制:
Slave stop;
下一步,执行 change master命令:
CHANGE MASTER TO MASTER_HOST=’192.168.0.81’, 
MASTER_USER=’replication_user’, 
MASTER_PASSWORD=’password’,
MASTER_LOG_FILE=’dellxp1-bin.000001’, 
MASTER_LOG_POS=2462;

Replication管理和排错
1.  检查复制状态: SHOW SLAVE STATUS
2.  停止从机读取二进制日志:  STOP SLAVE;  (从机的IO线程不会读取主机二进制日志,SQL线程不会执行中继日志的事件。)
     单独停止IO或SQL线程指定线程类型: STOP SLAVE IO_THREAD;
3.  启动从机读取二进制日志:START SLAVE; 可以单独启动IO或SQL线程

使用mysqlbinlog工具查看二进制日志

***********************************************************************************************************

master mysql> FLUSH TABLES WITH READ LOCK; 阻止更新
master mysql> SHOW MASTER STATUS; 查看复制状态
slave mysql> SELECT MASTER_POS_WAIT('log_name', log_pos);
slave mysql> UNLOCK TABLES;

CHANGE MASTER TO MASTER_HOST='192.168.11.10',MASTER_USER='repl',MASTER_PASSWORD='repl',MASTER_LOG_FILE='mysql-master-bin.000003',MASTER_LOG_POS=120;

MySQL复制原理及过程相关推荐

  1. MYSQL复制原理及其流程-详

    MySQL复制概述 保证主服务器(Master)和从服务器(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保 ...

  2. MySQL复制原理与配置

    一.Mysql复制基本原理 二.Mysql复制中Binlog的三种格式 2.1 三种格式的介绍 2.2 Binlog格式的优缺点 2.3 Binlog基本配置 三.Mysql常见两种复制方式 3.1  ...

  3. Mysql 复制原理以及配置 简要分析

    这个图是我根据自己的理解将Mysql的主从复制的流程给画了出来,关于什么是Mysql主从复制技术,这里简单说一下. 有一次去一家刚刚成立的游戏公司面试,面试官问用过Mysql主从技术吗?我说:用过,我 ...

  4. 【MySQL】MySQL复制原理与主备一致性同步工作原理解析(原理篇)(MySQL专栏启动)

  5. mysql 复制方式_MySQL复制方法

    MySQL的二进制日志,MySQL复制原理,MySQL主从模式搭建,MySQL双主模式搭建,MySQL级联模式搭建,MySQL半同步模式复制 一.二进制日志 1.概念 MySQL的二进制日志(bina ...

  6. MySQL 复制:最简单也最容易配置出错

    业务需要上线,所以除了表和索引的结构设计之外,你还要做好高可用的设计.因为在真实的生产环境下,如果发生物理硬件故障,没有搭建高可用架构,会导致业务完全不可用. 而这在海量并发访问的互联网业务中完全不敢 ...

  7. mysql主从复制原理 简书_mysql主从复制,从原理讲到安装配置,全干货

    0.为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出 ...

  8. mysql安装原理_全面解读MySQL主从复制,从原理到安装配置

    为什么需要主从复制? 1.在业务复杂的系统中,有这么一个情景,有一句sql语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了 ...

  9. mysql 半同步复制_Mysql半同步复制原理及问题排查

    mysql半同步复制和异步复制的差别如上述架构图所示:在mysql异步复制的情况下,Mysql Master Server将自己的Binary Log通过复制线程传输出去以后,Mysql Master ...

最新文章

  1. ERROR: Failed to resolve: com.android.support:appcompat-v7:29.0.0
  2. dataTable 从服务器获取数据源的两种表现形式
  3. 现阶段的微信小程序能实现直播功能么?
  4. MonoBehaviour生命周期
  5. Centos 7 搭建DNS正向解析和反向解析
  6. Codeforces Round #476 (Div. 2) C. Greedy Arkady
  7. DateTimePicker控件在WinXP下的BUG
  8. Codeforces 999F Cards and Joy 【dp】【性质】
  9. web 前端routine
  10. Docker镜像导致centos-root根分区容量爆满
  11. uni-app 使用高德地图
  12. VB程序设计教程(第四版) 龚沛曾
  13. 【Saba MMD Win10x64编译】
  14. protoc ——protubuf编译后的可执行文件命令usage
  15. 无线网络经常掉线的解决办法
  16. C++ - std::srand
  17. Pytorch机器学习(六)——YOLOV5中的自适应图片缩放letterbox
  18. 显卡T600和RTX3050哪个好
  19. web erp注意问题
  20. Js判断是否为数字,是否为空,是否为整形,是否为浮点型,是否为对象

热门文章

  1. C#打印页面设置(横向,页宽,页高)
  2. python输入框_如何使用Python创建输入框?
  3. Mac 系统数字小键盘的开启和关闭方式
  4. 连看视界java_大咖视界|LinkIDE:全栈轻应用开发者的强兵利器
  5. 常用符号的Unicode
  6. Linux查看端口是否开放
  7. 适合学python的笔记本_想自学python,应该买什么牌子的笔记本?
  8. 剑指offer39:数组中出现次数超过一半的数字
  9. SVN版本冲突解决详解
  10. 电子产品EMC电磁兼容风险评估读书笔记(一)