2011年2月15日星期二

在线做MySQL slave

    之前给MySQL master做slave的时候,为了保证数据一致性,一般选择read lock或者停机,使用直接拷贝文件或者mysqldump的方法来实现。这种方法会使master在一段时间内不可写,影响业务的正常使用。

    有没有更好的方法,可以在master可读写的情况下,生成一个数据没有差错的slave呢?用innobackupex可以实现。具体的原理可以去看文档。实现步骤如下:

    1. on slave:
          nc -l 9999 | cat - > /data/backups/backup.tar
    2. on master:
          innobackupex --stream=tar --slave-info ./ | nc desthost 9999
    3. on slave:
          cd /data/backups/
          tar -ixvf /data/backups/backup.tar
          innobackupex --apply-log  --use-memory 5000M /data/backups

  

没有评论: