MySQL主从复制没使用过?三大步骤让你从原理、业务上理解透彻( 二 )
业务上针请求类型来划分 。在读请求上,针对负载均衡实施到多个数据库中,你说这个手段怎么样? 要得不呢? 咱程序员也不是吃素的 。嗓子干了,喝口水再来
3、数据备份与数据分布对于数据备份 。这应当是每个网站中都需要考虑的环节,从而保证线上环境因为误删而导致数据库不能追踪回来 。但是这里的主从复制和我们常说的备份不一样 。
主从复制是通过把主库的数据复制到从库中,虽然是复制的过程,但也可以达到备份的效果,就像你的电影从D盘复制到E盘,就存在2份了,删除一份,另一份还在 。
对于主从复制的过程中,可以选择在不同的地理位置来分布数据,不同的数据中心内,即使不稳定的网络条件下,远程复制也是进行的 。这样我们能够让数据库有多个数据中心节点,分布到各地 。异地多活就是自在 。
4、高可用和故障迁移复制能够帮助应用程序避免MySQL单点失败 。一个包含复制的设计良好的故障切换系统能够显著的缩短宕机时间 。这也就是主从复制为什么可以做到高可用的特点 。
假如我的服务器因为机房停电了,这台服务器就没法使用了,但是它的数据都被Copy到另外的服务器中,这样我可以直接从库里直接选择一台服务器来替代没法工作的服务器 。从而继续提供服务 。
总结一下,备份的操作就是做为高可用的首选条件 。
如何使用MySQL主从复制前面经过经过各方面的问题以及主从复制做了详细的解析,大家需要自己汇总下主从复制的特点与解决到了单机什么的问题,因为面试有时候就喜欢问一些你对于业务特点的理解和底层原理,那前面是问题的理解,这个实现原理怎么来办? 放心,作为暖男的我,下面就给大家一 一道明 。
主从复制原理解析MySQL主从复制上的复制,总的来说,有三个过程来实现数据的复制操作 。
- 在主从上把数据更新记录的SQL语句记录到二进制日志(Binary Log)中,这些记录被称之为二进制日志
注:更新记录的SQL语句为与DDL和DML类型语句 。DDL语句就是对数据库、表层面的操作,如CREATE、ALTER、DROP;DML就是对表中数据的增删改查,如SELECT、UPDATE、INSERT、DELETE操作的语句 。但是在二进制中SELECT不会记录进去 。
- 从库将主库上的日志复制到自己的中继日志中(Relay Log)中
- 从库读取中继日志的中SQL记录,将其数据重放到备库上

文章插图
- 主库db的更新事件(create、alter、drop、update、insert、delete)在准备提交事务完成数据更新前,将更新数据写到binlog 。日志记录的顺序按照事务的顺序而非SQL执行顺序 。记录完成后,在由主库调用存储引擎接口提交事务 。
- 从库启动时创建一个I/O工作线程,该线程跟主库建立一个普通网络连接 。
- 此时主库将创建一个二进制转储线程(binlog dump thread),该线程只做日志读取,不进行SQL执行 。然后二进制转储线程读取主库二进制文件中内容,用于把binlog的内容发送到从库 。但它不会对事件进行轮询,如果该线程追赶上了主库的记录同步,将进入睡眠状态 。直到主库发送信号量通知其有新的更新操作到来才会被唤醒 。
- 当主库数据发来时,从库创建的I/O工作线程,将会把主库传过来的binlog内容写入到中继日志(relay log)中
- 从库还会创建一个SQL线程,从relay log里面读取内容,从Exec_Master_Log_Pos位置开始执行读取到的更新事件,将更新内容写入到slave的db 。当SQL线程追上I/O线程时,中继日志在这个状态下通过已经是在系统的缓存中进行读取了,所以开销很低 。
主从复制大家步骤前面咱们了解到原理,现在就着手来搭建主从复制 。
复制前的准备工作:
- 主从数据库版本最好一致
- 主从数据库内数据保持一致
- 在每台服务器上都创建复制账号
- 配置主库与从库
- 通知备库连接到主库并从主库复制数据
- 主数据库:10.16.1.118 从数据库:10.16.1.119
MySQL会赋予一些特殊的权限给复制线程,在备库运行IO线程会建立一个到主库的TCP/IP连接,这意味着必须在主库创建一个用户,并赋予其合适的权限,备库I/O线程一该用户名连接到主库并读取其二进制文件 。
推荐阅读
- Mysql报too many connections详解
- Mysql访问中间件--Atlas初探
- Centos7 安装redis主从及配置哨兵模式
- Linux怎么复制文件到其他文件夹
- 我常用的免费MySQL图形化管理工具
- Linux安装JDK 以及 tomcat 和mysql
- MySQL-分布式架构-MyCAT
- MySQL中七个查询命令的优先级及特点
- 千万级MySQL数据库建立索引,提高性能的秘诀
- Docker下搭建Apache+PHP+Mysql