mysql主从同步以及原理

mysql主从复制介绍

当前的生产工作中,大多数应用的mysql主从同步都是异步的复制方式,即不是严格实时的数据同步。

实时和异步:

同步复制: 指的是客户端连接到MySQL主服务器写入一段数据, MySQL主服务器同步给MySQL从服务器需要等待从服务器发出同步完成的响应才返回客户端OK, 这其中等待同步的过程是阻塞的, 如果有N台从服务器, 效率极低

异步复制: 指的是客户端连接到MySQL主服务器写入一段数据, MySQL主服务器将写入的数据发送给MySQL从服务器, 然后直接返回客户端OK, 可能从服务器的数据会和主服务不一致

半同步复制:指的是客户端连接到MySQL主服务器写入一段数据, MySQL主服务器只将数据同步复制给其中一台从服务器, 半同步复制给其他的从服务器, 来达到其中一台从服务器完全同步的效果

主从复制原理:

从库需要两个线程完成,一个叫做I/O线程,一个叫做sql线程

主库需要一个线程叫做I/O线程

主库必须要开启binlog日志才能完成主从同步,当用户请求到主的库里面,会将增删改的东西记录到binlog日志里面,主从复制是从库去找主库的,建立时,我们在从库上使用change master指定master的ip,端口,二进制文件名称,pos,master的密码等信息。并在从库上开启start  slave就会开启同步。

开启同步后,先是从向主发起请求。然后主库进行验证从库是否正常,验证之后,主库就会给从库按照信息发送日志,从库上存放日志的地方叫做中继日志(relay log),其实从库里面还有一个master info信息,这个里面记录的是change master的信息,每一次取日志回来都会对从库的master  info信息进行更新,接下来从库根据master  info的binlog信息去主库在取跟新的binlog信息,

放到中继日志里面,我们如何进行更新?

当主将binlog发送过来放到中继日志里面的时候,sql线程就会语句经过转换写到从库里面。

注意

1.开启binlog日志

2.change master(在从库上)

3.在从库开启start slave之前。这两个库的数据必须是一样的,所以讲主库的数据进行备份使用master-data=1,会记录位置的。然后从库会指定从主库备份里面找备份点。

4.要在开关之前建立专门用于主从同步的账号

5.从库打开开关的过程,其实就是打来从库两个线程的过程

6.start slave

主库返回的除了binlog日志内容外,还有本次返回日志内容后在Master服务器端的新的binlog文件名称以及在binlog中的下一个指定更新的位置。这个位置会保存在从库的master info里面。

>flush tables  with read  lock;在主库上执行加上读锁

然后另开一个窗口,连接到主mysql

>show master  status;  查看主库的binlog以及pos值。

下来是备份主库数据,将备份数据在从库上执行。目的就是让从库和主库的数据一样。

从库将主库的备份数据导入完了以后要将锁打来:

>unlocks  tables;

然后在从库上执行change  master语句。这些信息会记录在从库的master.info的信息中;(如果你备份的时候指定master-data=1)

最后一步开启start  slave;

查看是否成功使用show slave  status; 查看两个进程是否为yes。

从库里面的relay-log.info:记录sql线程从中继里面读取到的日志。

描述mysql主从复制原理

自己总结:从库的io线程会实时依据master.info信息的去主库的binlog日志里面读取更新的内容,将更新的内容取回到自己的中继日志中,同时会更新master.info信息,此时sql线程实时会从中继日志中读取并执行里面的sql语句。

描述mysql主从同步部署

自己总结:

1.将主库的数据备份,备份的时候时候master-data=1指定。然后在从库上将备份数据导入

2.在主库上给开启主库的bin-log功能,以及service-id

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_account'@'10.121.0.220' identified by '123456'

这句的意思是,允许从服务器'10.121.0.220 '使用'slave-account'及'123456'这个帐号密码对对主服务器的所有数据库(*.*)进行主从复制('REPLICATION SLAVE').

3.在主库上执行flush  tables  with  relay  locks; 读写锁。然后领开启一个窗口

4.然后只从库上执行change master   里面指定刚才创建的用户以及密码

5.执行start  slave;

6.show slave  status;看看两个线程是否启动

7.在主库上解锁。

原文地址:https://www.cnblogs.com/sqlservertongbu/p/11013658.html

时间: 2024-10-09 04:07:06

mysql主从同步以及原理的相关文章

MySQL主从同步的原理:

主从同步的原理:1.主库上面有一个IO线程,从库上有一个IO线程和一个SQL线程,从库中的IO线程负责从主库读取binlog,并写入从库的中继日志:SQL线程负责读取并执行中继日志中的binlog,转换sql语句后应用数据库汇总2.通信是:① 从库的IO线程给主库发送同步请求,请求中包含用户名密码和binlog的文件名,pos点② 主库验证成功后,发送从库需要的binlog日志文件,和binlog文件中pos点③ 从库的IO线程接收后,把binlog文件转存到中继日志的relay-log文件,并

mysql 主从同步服务原理

主从同步是一个异步复制过程.master上开启bin-log日志功能.master  开启IO线程   slove  开启IO线程  SQL线程 从服务器执行 slave    start   通过授权用户连接master上  请求master发送bin-log  日志内容 !!!  master 接受slave  IO 线程请求后,返回给slave IO 线程 4 .slave 接受到信息后,将接受到的日志内容添加到slave端的relay-log文件最末尾,并将bin-log日志文件名mas

mysql主从同步中应注意的问题

MYSQL主从同步的作用 (1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错 MYSQL主从同步的原理 关于MYSQL的主从同步,最主要的是要了解MYSQL的主从同步是如何工作的也即主从同步的原理,通过下图能很明白的指导其工作的过程: 大致描述一下过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库保持一致.主从同步的详细过程

Mysql主从同步(Mysql A B复制)配置

Mysql主从同步(Mysql A B复制)配置 Mysql主从同步(Mysql AB复制)功能是自动备份数据 vim/var/lib/mysql/auto.cnf  数值不能一样 master主               slave从 192.168.1.1        192.168.1.2 1.主从环境配置:    mysql_5.6版本 servicemysql start         ping通         service iptablesstop         sete

趁一切还来得及【五】数据库MySQL主从同步的实践部署

自笑栖迟淮海客,十年心事一灯前.                                           --[元]萨都拉 第二章 数据库MySQL主从同步部署操作实践 2.1 数据同步相关应用基础 ①MySQL主从同步架构是目前使用最多的数据库架构之一,尤其是负载比较大的网站,因此对于主从同步的部署管理也就显得非常重要. ②MySQL主从同步的作用:(1) 数据分布,(2) 负载平衡(load balancing),(3) 备份,(4) 高可用性(high availability

mysql 主从同步详细配置教程

8.10 Mysql 主从同步 8.10.1 主从原理mysql主从同步的原理:1.在master上开启bin-log日志,用于记录master上的更改删的一些记录.2.主从各开启io线程,从上开启io线程和sql线程.同时都配置好主从上的serveid唯一性3.主上配置好授权用户,从上设置change master授权连接的命令3. 从上io线程通过授权连接master,master通过io线程检查到slav的请求的日志.postsion点位置.4.master将这些相应的请求内容发送给sla

Mysql主从同步-概念和原理介绍

Mysql复制概念Mysql内建的复制功能是构建大型高性能应用程序的基础, 将Mysql数据分布到多个系统上,这种分布机制是通过将Mysql某一台主机数据复制到其它主机(slaves)上,并重新执行一遍来实现的.复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环.这些日志可以记录发送到从服务器的更新.当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置.从服务器接收从那时起

如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?

高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少.所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗? 如何实现 MySQL 的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. MySQL 主从复制原理的是啥? 主库将变更写入 binlog 日志,然后从库连接到主库之后,

MySQL主从同步--原理及实现(一)

1.什么是mysql主从同步? 当master(主)库的数据发生变化的时候,变化会实时的同步到slave(从)库. 2.主从同步有什么好处? 水平扩展数据库的负载能力. 容错,高可用.Failover(失败切换)/High Availability 数据备份. 3.主从同步的原理是什么? 首先我们来了解master-slave的体系结构. 如下图: 不管是delete.update.insert,还是创建函数.存储过程,所有的操作都在master上.当master有操作的时候,slave会快速的