mysql--同步

一、MYSQL复制原理及流程

复制的原理:

       将MySQL的数据分布到多个系统上去,这种分布的机制,是通过将MySQL的某一台主机的数据复制到其他主机上,并重新执行一遍来实现。

       复制过程中,一个服务器充当主服务器,而一个或多个其他服务器充当从服务器。主服务器将更新写到二进制日志文件,并维护文件的一个索引以跟踪日志循环,这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器的时候,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知的更新。

       ***在进行MySQL复制的时候,所有对复制中的表的更新必须在主服务器上进行,否则,避免因为对从服务器进行更新而造成冲突。

复制的类型:

1). 基于语句的复制:在主服务器上执行的sql语句,在从服务器上执行同样的语句。默认这种复制,效率边角高。

2). 基于行的复制:    把改变的内容复制过去,而不是把命令在从服务器上执行一遍。

3). 混合类型的复制: 默认基于语句,一旦发现基于语句无法精确复制时,采用基于行

复制解决的问题:

1)数据分布

2)负载平衡

3)数据备份,保证数据安全

4)高可用性与容错行

5)实现读写分离,缓解数据库压力

主从复制原理:

master服务器将操作语句记录到binlog日志中,然后授予slave远程连接的权限,slave服务器会在一定时间间隔内对master二进制文件进行探测其是否改变。

如果发生改变,则从slave开启一个IO线程和SQL线程,IO线程用于读取master的binlog内容到中继日志relay log(中继日志)里,并将新的binlog文件名和位置记录到master-info文件中(以便下一次读取master端新binlog日志时,能告诉master从新binlog日志的指定文件及位置开始读取新的binlog日志内容),

同时主节点为每个IO线程启动一个dump线程,用于发送二进制事件,

sql线程负责从relay log日志里读取binlog内容,并更新到slave 的数据库里,在relay-log.info中记录当前应用中继文件的文件名以及位置点,使得主从服务器数据保持一致。

最后IO与SQL线程会进入睡眠状态,等待下一次被唤醒。

***主服务器版本和从服务器MYSQL版本一致,或者低于从服务器版本

***中继日志通常在OS的缓存中,开销很小。

***复制有一个重要的限制,复制在从服务器上是串行化的,也就是说主服务器的并行更新操作无法在从服务器上并行操作

***binlog文件只记录对数据库有更改的SQL语句,不记录任何查询语句

主从复制优点:

1)在从服务器上执行查询操作,降低主服务器压力

2)在主从服务器进行备份,避免备份期间影响主服务器服务,确保数据安全

3)当主服务器遇到问题,可以迅速切换到从服务器

复制的模式:

主从复制(异步):主库授权从库远程连接,从库跟着主库变。

主主复制:主从互相授权连接,只要对方数据改变,自己就跟着改变

二、myisam与innodb

区别:

1)myisam不支持事物,innodb支持事物

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晏九

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值