社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
首先,我们们需要了解一下,为什么需要数据库的主从复制。
那么问题来了,我们应该怎么实现数据库的主从复制呢???
很多人其实对于数据库的主从复制都不是很陌生的。数据库的主从复制大概分为以下三种:
对于第三种的混合复制没有什么好说的!我们主要说一下前面两种复制。
在说复制方式之前我们首先说一下复制是怎么一个情况呢?
如果想复制就必须知道主数据库都发生了什么!不然你何谈复制呢?所以在master数据库发生每一个操作(变化)的时候,我们的主数据库,必须首先写下一条日志记录一下发生了什么。这个东西就是bin log (binary log 二进制日志)。
每一次我们需要复制的时候,从数据库就开一个(I/O)线程从master数据库上去读取这个日志文件。然后写到另外一个relaylog 中来。这个时候我们的数据库复制还没开始。然后slave(从)数据库会启动一个sql线程把所有的relay log 重新执行一遍。这样我们的master和slave也就保持了数据库的一致性了。
接下来重点来了,那么基于语句的数据库主从复制是不是没有任何问题呢?毕竟每一条都记录下来了应该没有什么问题是吧!其实,事情不是你以为的就是你以为的哟!遇到以下情况怎么办?用户自己写了一个函数和当前系统时间有关复制的时候肯定就时间戳不一样了。update的时候跟有不确定情况。
这些话有点长,上图大家就可以看得很清楚了。
总结一下大概有以下几个问题:
当然了,语句复制也不是就没有一点的好处了,下面列举一下优点:
数据库的主从复制还有行复制。那么复制的原理和过程都是一样的。那么有什么异同呢?
缺点:
1. log是不可读(对人而言)
2. 如果复制有类似alter table这种操作产生的数据量异常的大
3. 回滚复制有大量数据
4. 文件相对很大
5. 不适合有大量的SQL堆积情况
优点:
楼主今年刚参加工作,才疏学浅!求支持!!!!
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!