V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
anthoy
V2EX  ›  MySQL

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

  •  
  •   anthoy · 2019-06-18 17:52:56 +08:00 · 3807 次点击
    这是一个创建于 1996 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    还有各问题就是公网传输可能不稳定,我记得 redis 的主从如果网络错误断开了重新加入主从是需要重新传输全部数据的,稍大一点的数据量这个都无法短时间搞定吧
    anthoy
        17
    anthoy  
    OP
       2019-06-19 14:13:53 +08:00
    @sujin190 我打算一个在公网 IP 上做主,一个在本地做从,这样子可行不?我用 mysql 是可行的,不知道 redis 行不行
    sujin190
        18
    sujin190  
       2019-06-19 14:22:00 +08:00
    只能网络能连通都可行,只是稳不稳定就不好说了
    anthoy
        19
    anthoy  
    OP
       2019-06-19 15:18:22 +08:00
    @sujin190 我起了两个 docker 做实验,一开始死活不行,回来才发现是主从的 redis 的版本不一致
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:20 · PVG 05:20 · LAX 13:20 · JFK 16:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.