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
lehui99
V2EX  ›  MySQL

没有 binary log 如何增量复制 mysql?

  •  
  •   lehui99 · 2014-07-30 10:37:11 +08:00 · 2739 次点击
    这是一个创建于 3768 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个远程mysql server,只有一个mysql用户的权限,可以用mysql workbench用这个用户连上去看数据,只能看到一个schema数据库的权限。除此之外没有任何其他权限。

    这个数据库现有的数据不会修改,只会不停地往里面insert新的数据,也会create新的table,新create的table也是不停往里面insert。这个数据库里大部分的table都没有设置过主键和索引。

    现在由于网速原因连接这个mysql太慢了,现在想在本地建立一个镜像,不停把这个schema数据库中的新记录和新的table复制到本地镜像mysql里,有什么好办法吗?
    13 条回复    2014-07-31 22:58:40 +08:00
    noahzh
        1
    noahzh  
       2014-07-30 10:38:39 +08:00
    做个slave.
    lehui99
        2
    lehui99  
    OP
       2014-07-30 10:52:37 +08:00
    @noahzh 只有这个mysql user的权限如何做slave?
    noahzh
        3
    noahzh  
       2014-07-30 10:54:54 +08:00
    @lehui99 做slave 必须登陆server.
    lehui99
        4
    lehui99  
    OP
       2014-07-30 11:00:42 +08:00
    @noahzh 所以说啊,没有登录server的权限如何做slave?
    jarlyyn
        5
    jarlyyn  
       2014-07-30 11:01:45 +08:00
    没binlog能做slave么?
    oott123
        6
    oott123  
       2014-07-30 11:03:25 +08:00 via Android
    听起来只能写个脚本干这事了…
    lehui99
        7
    lehui99  
    OP
       2014-07-30 11:16:45 +08:00
    @oott123 有思路或现成的方案么?脚本检测新建的表、表结构变化、新数据,而且数据还没主键和唯一索引,感觉很复杂。
    MasterYoda
        8
    MasterYoda  
       2014-07-30 12:54:08 +08:00
    有binlog的r权限吗
    lehui99
        9
    lehui99  
    OP
       2014-07-30 13:03:54 +08:00
    @MasterYoda 没有啊,只有用mysql workbench用mysql用户连上去只读数据的权限。
    oott123
        10
    oott123  
       2014-07-30 23:14:59 +08:00
    @lehui99 没主键和唯一索引的话,这就没思路了……
    lehui99
        11
    lehui99  
    OP
       2014-07-31 13:00:15 +08:00
    @oott123

    这个数据库是用来记log的,每个table都有一列是event_time,用来记录此条log产生的时间。但时间可能会重复,比如1秒内有2条相同类型的log,就会记录在同一个table中。

    除了这个字段外其他的字段每个table都不一样,table结构有时候还会有变化,还会有新的table产生。

    正在尝试用脚本完成这个事情。
    oott123
        12
    oott123  
       2014-07-31 14:53:48 +08:00 via Android
    @lehui99 用 time 大于等于上次记录的时间?
    table 的话就要另外处理了…
    不过我不太明白什么环境会改变 table 结构…这不是作死么…
    lehui99
        13
    lehui99  
    OP
       2014-07-31 22:58:40 +08:00 via Android
    @oott123 嗯,只能大于等于最后的时间往后找了,还要比较每一个字段才能判断是否是同一条记录。

    自动新建table以及add column都实现好了,检测到有drop table/column时只能通知去手动处理了,因为不知道是真的删除了还是被改名了。还有column定义变化也要通知手动处理。

    程序中此种类型的log格式有变化的话table结构就会变,没办法。和腾讯合作拿不到binlog就是麻烦。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4666 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:50 · PVG 17:50 · LAX 01:50 · JFK 04:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.