How to setup a slave for replication

6400阅读 0评论2013-12-11 ning_lianjie
分类:Mysql/postgreSQL

注: 官方文档已经有详细的说明,在此只是把常用命令记录一下,方便使用.

克隆一个slave

落在本地再传输

  1. 在一个slave上面,做一个全备
    sudo innobackupex --defaults-file=/usr/local/mysql/multi/3306/etc/my.cnf --user=username --password=password \
                      --host=127.0.0.1 --port=3306 --use-memory=2G --slave-info /usr/local/backupdb/
    
  2. 根据logfile恢复数据
    sudo innobackupex --apply-log --use-memory=2G /usr/local/backupdb/tmp/2013-12-10_17-09-43/
    
    # 重命名
    mv /usr/local/backupdb/tmp/2013-12-10_17-09-43/ data
    
  3. 转移到新的slave机上面
    通过rsync或者scp命令,传完之后,修改目录的属主属组
    chown mysql:mysql data
    
  4. 在master上面增加一个新slave的授权
    GRANT REPLICATION SLAVE ON *.*  TO 'repl'@'$newslaveip' IDENTIFIED BY '$slavepass';
    
  5. 在新slave上面启动mysql,配置主从关系
    注意: backup-my.cnf文件中的配置参数,要跟master一致.
    CHANGE MASTER TO
                       MASTER_HOST='$masterip',
                       MASTER_USER='repl',
                       MASTER_PASSWORD='$slavepass',
                       MASTER_LOG_FILE='TheMaster-bin.000001',
                       MASTER_LOG_POS=481;
    
    START SLAVE;
    SHOW SLAVE STATUS\G
    

直接以"流"的方式传到远程

  1. 在新slave上面用nc起一个接收数据的端口
    nc -l 9999 | cat - > ./backup_20131210.tar
    
  2. 限速10Mbytes/s
    注意: 一定要限速,否则千兆的网卡也会打满
    sudo innobackupex --defaults-file=/etc/my.cnf --user=username --password=password --host=127.0.0.1 --port=3306 \
                      --use-memory=2G --slave-info --stream=tar ./ | pv -q -L10m |nc $newslaveip 9999
    
    
  3. 在新的slave上面解压
    mkdir data_tmp
    
    tar ixvf backup_20131210.tar -C data_tmp
    
  4. 根据logfile恢复数据
    sudo innobackupex --apply-log --use-memory=2G data_tmp/
    
  5. 修改属主属组关系
    chown mysql:mysql data
    
  6. 在master上面加授权,在新slave启动mysql,建立复制
上一篇:pt-archiver
下一篇:杀掉MySQL连接线程的利器之pt-kill