目前架构:一主一从
目标架构:一主两从,也就是需要重新搭建一个新的从库,即在线扩容。
搭建要求:主库一直有数据写入,备份的时候不能停库。
环境说明:
主库IP: 192.168.111.10 用户名/密码:root/123
第一个从库IP: 192.168.111.20 用户名/密码:root/123
新从库的IP: 192.168.111.30
搭建方法:
1.打开主库的log_bin,并设置server_id
cat my.cnt
log-bin = mysql-bin
server-id = 100
2.在主库对从库的同步账户授权:
grant replication slave on *.* to 'repl'@'192.168.111.30' identified by '123';
3.主库使用sysbench打上流量:
./sysbench --test=oltp --mysql-user=root --mysql-password=123 --mysql-db=db1 --oltp-table-name=t1 prepare
./sysbench --test=oltp --mysql-user=root --mysql-password=123 --mysql-db=db1 --oltp-table-name=t1 --num-threads=5 run
4.在第一个从库上使用mysqldump备份全库:
mysqldump -uroot -p123 -A --dump-slave=2 --events > /home/mysql/backup/all.dump
也可以在主库上备份:
mysqldump -uroot -p123 -A --master-date=2 --events > /home/mysql/backup/all.dump
参数意义说明:
--dump-slave=2:在备份文件中加上show slave status的信息,将来change master的时候可以从这里获得binlog文件名和position信息;
--master-data=2:在备份文件中加上show master status的信息,将来change master的时候可以从这里获得binlog文件名和position信息;
5. 将备份文件拷贝到从库:
scp /home/mysql/backup/all.dump mysql@192.168.111.30:/home/mysql/backup
6.修改第二个从库的配置,使得server_id和主库以及第一个从库的server-id不同,并根据需要设置如下两个参数,修改后重启第二个从库。
read_only
skip-slave-start
7.将全备source到第二个从库。
mysql> source /home/mysql/backup/all.dump
8.使用如下命令同步从库。
CHANGE MASTER TO
MASTER_HOST='192.168.111.10',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=5172,
MASTER_LOG_FILE='mysql-bin.000023',
MASTER_LOG_POS=4946675,
MASTER_CONNECT_RETRY=10;
其中MASTER_LOG_FILE,和MASTER_LOG_POS参数的值来自备份文件。可使用如下方式获得:
[mysql@MYSQL-SVR1 backup]$ cat -n all.dump | grep "change master to" -i
22 -- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000023', MASTER_LOG_POS=4946675;
9.启动从库。
start slave;
10.验证是否同步成功。
在从库执行如下命令:
show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29100640/viewspace-1753106/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29100640/viewspace-1753106/