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

有没有办法让从msyql主动从零开始在主mysql那里同步数据

  •  
  •   Ansen · Aug 12, 2013 · 5924 views
    This topic created in 4801 days ago, the information mentioned may be changed or developed.
    当时做主从的时候,我是直接复制mysqldata目录和binlog目录到从mysql
    结果等我把主mysql的数据导完了,才发现有错误
    导致现在N多表的数据都跟主不一致

    现在可行的解决方法是:导出主mysql的数据,再恢复到从mysql,再开启同步
    但是这样的话就必须停止生产环境,而且因为数据量很大,时间也比较久

    我就想,有没有办法让从msyql主动从零开始在主mysql那里同步数据

    这样就主mysql就不用停止了,也不会影响生产环境
    22 replies  •  1970-01-01 08:00:00 +08:00
    halfbloodrock
        1
    halfbloodrock  
       Aug 12, 2013
    同步最早的值应该是master里的position那栏的值.
    Ansen
        2
    Ansen  
    OP
       Aug 12, 2013
    @halfbloodrock
    能否 将从mysql当成一个空的数据库,然后慢慢跟主mysql同步,最后成一样
    mogging
        3
    mogging  
       Aug 12, 2013
    同问,这个问题很常见
    Ever
        4
    Ever  
       Aug 12, 2013
    5.1及之前有个deprecation的load data from master
    percona-tools里带pt-table-sync
    不过最好还是停机备
    xzl
        5
    xzl  
       Aug 12, 2013
    @Ever load data from master其实也是做了同样的操作,表要都是myisam,然后他lock tables,再传输数据文件过来。
    Ansen
        6
    Ansen  
    OP
       Aug 12, 2013
    @Ever
    但是停机的话,时间太长了,而且影响生产环境都是钱那
    halfbloodrock
        7
    halfbloodrock  
       Aug 12, 2013   ❤️ 1
    @Ansen 要是不能停机的话,innodb表试试用xtrabackup备份恢复,这工具号称不锁表。然后再同步bin-log

    bin-log已经有了吧,我都是不停机直接mysqldump出全库,然后slave上直接导入然后同步主库.......不过别学我。。。重要生产库还是寻找downtime配置完成,别找技巧了。。。这个实在玩不起。
    Ansen
        8
    Ansen  
    OP
       Aug 12, 2013
    @halfbloodrock
    确实。不敢拿生产环境做实验
    只是在来验证突然想到一种思路
    嘿嘿
    THX
    msg7086
        9
    msg7086  
       Aug 13, 2013
    不能。只能锁表导库…
    yangqi
        10
    yangqi  
       Aug 13, 2013   ❤️ 1
    myisam没办法,只能停机,innodb的话可以hotcopy出来。话说生产环境的数据库就没有备份么?不能从备份导入然后再慢慢同步
    Ansen
        11
    Ansen  
    OP
       Aug 13, 2013
    @yangqi
    是innodb
    这两天搞迁移机房,上新服务器。。产品升级,
    mysql半瓶水,最后导致同步有问题。近千万的用户数据,导入导出时间太长了
    就有了这个想法,故来看看,可行不,嘿嘿,
    当然生产环境还是得按步就班的来
    BeijingBaby
        12
    BeijingBaby  
    PRO
       Aug 13, 2013   ❤️ 1
    我的做法一般是:
    1.等周末半夜停掉master
    2.把数据dump到slave,或者rsync数据目录。
    3.配置好主从关系
    4.查看master binlog状态,在slave上设置同步位置,启动同步。这时候其实是没有数据同步。
    5.启动master,看双方状态正常,后面就不用管了。

    操作过很多次,基本没出过问题,期间遇到过有人把slave当master插入数据,然后报错,但遇到错误跳过这些就搞定了。
    Ansen
        13
    Ansen  
    OP
       Aug 13, 2013
    @BeijingBaby
    我也基本上是按你说的步骤来的,上次就是直接rsync数据目录出的问题
    以后只敢dump了
    sampeng
        14
    sampeng  
       Aug 13, 2013   ❤️ 1
    你需要的不是在这问。。google。。
    关键词
    mysql 主从同步 重新开始

    stop slave
    reset slave
    sampeng
        15
    sampeng  
       Aug 13, 2013
    不明白楼上的同学为啥没尝试。。。mysql当然必然考虑这个问题。。。自带命令为啥不用。。。
    likuku
        16
    likuku  
       Aug 13, 2013
    @Ansen 数据很多的时候,dump 实在等不起。

    正常关闭db,新旧机器mysql版本一致,rsync 传数据文件很可靠。
    Ansen
        17
    Ansen  
    OP
       Aug 13, 2013
    @likuku
    我就是关闭了DB,然后直接复制data和binlog目录,结果备机挂了
    Ansen
        18
    Ansen  
    OP
       Aug 13, 2013
    @likuku 机器型号一致,mysql版本一致,配置 除了innodb_buffer_pool_size大小不一样外其余都一致,
    我点是不是太背了
    likuku
        19
    likuku  
       Aug 13, 2013
    @Ansen 全新的备机(Slave),只需要 数据,不需要 binlog。

    主机停止,rsync复制数据目录到新备机,修改备机设定,增加同步相关参数信息,关闭同步开关。
    启动主机,检查,正常。启动备机,检查,正常,打开同步开关。

    另外还建立了专用于备份的 备份从机,只用来同步主机的数据库。备份从机因为不被业务使用,随时可以停机/全局锁表,复制打包数据+ binlog。
    msg7086
        20
    msg7086  
       Aug 13, 2013
    @sampeng 我在google上没搜到什么特别有用的东西。

    不知道你说的是不是「重置mysql主从同步」这篇文章。此文中提到的方法就是lock tables再dump sql的。

    顺便官方文档里做repli也是用的lock+dump http://dev.mysql.com/doc/refman/5.5/en/replication-howto-mysqldump.html
    likuku
        21
    likuku  
       Aug 13, 2013
    @Ansen 若要一台备份用从机想及时同步写繁忙的主机,则备份从机性能要很强(CPU,磁盘I/O),否则单线程的同步追不上多线程的主机写入。

    貌似现在新的 mysql 5.6 有了多线程同步,但还没测试过。
    Ansen
        22
    Ansen  
    OP
       Aug 13, 2013
    @likuku
    对的,CPU 还好了,最重要的磁盘I/O
    mysql的dump 遇到大数据就太慢了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   994 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 17:33 · PVG 01:33 · LAX 10:33 · JFK 13:33
    ♥ Do have faith in what you're doing.