mysql 数据库主从复制的一些问题

2019-06-18 17:52:56 +08:00
 anthoy

我创建一个主数据库,设置配置启用 “ binary logging ” 开启主从,记录 Master 上的日志的当前位置,这个作为最开始的记录,然后设置一个从的数据库进行数据复制,在主数据库运行一段情况,增加了不少数据之后,我又增加一个从数据库,这次利用主数据库最开始的日志的位置来应用于这个新的从数据库,是否可行?

3706 次点击
所在节点    MySQL
19 条回复
anthoy
2019-06-18 17:59:16 +08:00
11111
sujin190
2019-06-18 18:01:23 +08:00
理解是不是有问题,难道不是应该从从库数据的主库 binlog 位置应用么。。
否则你从库数据和主库最新 binlog 之间的数据岂不是没有了
aaa5838769
2019-06-18 18:05:38 +08:00
@sujin190 他的意思应该是新的从数据库从最开始的主的 pos 和 logfile 开始同步。
sujin190
2019-06-18 18:11:31 +08:00
@aaa5838769 #3 也不行吧,如果从数据库的数据更新,主从同步很快就冲突挂掉了
wps353
2019-06-18 18:28:20 +08:00
只要你的 binlog 一直在,你就可以这样搞。
anthoy
2019-06-18 22:35:00 +08:00
@aaa5838769 @sujin190 就是主数据库最开始的时候记录下 show master status 中的值,当主数据库数据发生变化时,新增加的数据库依旧用最开始的记录下来的值作为新的数据库的 pos 和 file,这样子可行吧?我感觉理论上应该可以的?
anthoy
2019-06-18 22:36:28 +08:00
@wps353 这个 binlog 是主数据库开启 binary logging 之后一直存在的吗?好像是存储在 data 上?没有人为干预会不会有自动删除机制?
aaa5838769
2019-06-18 23:28:46 +08:00
@anthoy 你可以测试一下,我记得不行的,原来好像我测试过,如果用很早之前的 binlog 信息,会提示报错的。
aaa5838769
2019-06-18 23:29:03 +08:00
@anthoy 你可以本地验证一下。
Takamine
2019-06-18 23:45:30 +08:00
理论上是可行的,就跟做了一次基础备份一样。
msg7086
2019-06-18 23:49:32 +08:00
1. 有些发行版的 binlog 有自动删除。
2. 主从复制总是从快照+快照时的 file+pos/gtid 开始的。
3. binary log 可以修改存储位置。
anthoy
2019-06-19 09:29:19 +08:00
@aaa5838769 我就怕很早之前的 binlog 会被清除掉,但可能需要达到一定的时间条件或者一定的空间条件,这个在本地就不好处理了
sujin190
2019-06-19 09:42:01 +08:00
@anthoy #6 如果 binlog 还没覆盖清楚掉是可以的,binlog 可能会你自己删除了,或者设置了自动多长时间删除
aaa5838769
2019-06-19 11:53:27 +08:00
@anthoy 楼上说的对,binlog 是根据配置文件来设置多长时间来删除的。
anthoy
2019-06-19 13:29:37 +08:00
@aaa5838769 @sujin190 问个别的问题,如果用 redis 做主从复制是不是要相互能够 ping 通,一个公网,一个本地内网可以吗?
sujin190
2019-06-19 14:12:03 +08:00
@anthoy #15 肯定的啊,都相互连不通网,主从怎么同步数据。。

相互能联网就可以,只是这样主从延迟可能比较高,大量写入的时候公网带宽可能无法跟上传输速度,短时间可能问题不大,时间长了就不行了

还有各问题就是公网传输可能不稳定,我记得 redis 的主从如果网络错误断开了重新加入主从是需要重新传输全部数据的,稍大一点的数据量这个都无法短时间搞定吧
anthoy
2019-06-19 14:13:53 +08:00
@sujin190 我打算一个在公网 IP 上做主,一个在本地做从,这样子可行不?我用 mysql 是可行的,不知道 redis 行不行
sujin190
2019-06-19 14:22:00 +08:00
只能网络能连通都可行,只是稳不稳定就不好说了
anthoy
2019-06-19 15:18:22 +08:00
@sujin190 我起了两个 docker 做实验,一开始死活不行,回来才发现是主从的 redis 的版本不一致

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/575204

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX