背景:
随着网站访问量的增长,一主一从的架构已经无法满足业务需求,需要增加一到两台从库,我们需要在保证业务正常运行的情况下新增从库
实施:
1、首先需要保证主从两台机器间的正常通信
1 | -A INPUT -s IP/32 -j ACCEPT |
---|
2、主库使用xtrabackup备份好数据
1 | innobackupex --user=root --password=123456 --defaults-file=/etc/my.cnf /testdir |
---|
3、查看备份好的数据binlog日志文件和位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # cat xtrabackup_info uuid = fb613064-8549-11e8-8bc0-00163e0ecac5 name = tool_name = innobackupex tool_command = --defaults-file=/etc/my.cnf --user=root --password=... --host=localhost --no-timestamp --stream=tar /backup_sql_master/novel_all_20180712 tool_version = 2.4.9 ibbackup_version = 2.4.9 server_version = 5.6.35-log start_time = 2018-07-12 04:30:05 end_time = 2018-07-12 04:35:43 lock_time = 0 binlog_pos = filename 'mysql-bin.000054', position '204194092' #这里就是 innodb_from_lsn = 0 innodb_to_lsn = 217020207929 partial = N incremental = N format = tar compact = N compressed = N encrypted = N |
---|
4、从库安装好数据库,做好系统初始化等操作,这里不再讲述,然后在进行还原操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 一定要先停止数据库,然后再清空数据目录下的所有数据(全量备份时) service mysql stop cd /usr/local/mysql rm -rf data/* 对数据进行准备工作,合成可用的一致的数据,--use-memory可以加速准备工作的完成 innobackupex --apply-log /data/mysql_backup/full_backup --use-memory=2G --user=root --password=123456 或者 innobackupex --apply-log /testdir/2018-02-12_17-33-22 完成上述工作,证明我们已经获得了一份可用的,数据一致的备份,下面就是数据还原操作了: innobackupex --copy-back /testdir/2018-02-12_17-33-22 或者 innobackupex --datadir=/usr/local/mysql/data --copy-back /testdir/2018-02-12_17-33-22 或者 innobackupex --defaults-file=/etc/my.cnf --copy-back /testdir/2018-02-12_17-33-22 chown mysql:mysql -R data/ /etc/init.d/mysqld restart |
---|
这里我们有已经安装好的数据库,只需要将数据目录清空即可
5、建立主从关系
1 2 | 授权 grant replication slave on *.* to 'xs'@'172.17.24.%' identified by 'zkyz12345'; |
---|
1 2 3 4 | reset slave; change master to master_host='主库IP',master_user='xs',master_password='zkyz12345',master_log_file='mysql-bin.000054',master_log_pos=204194092; start slave; show slave status\G |
---|
注意:
这里一定要先reset slave,因为还原后的relay-log文件里保留以前的信心,需要reset下
问题:
1)Slave_IO_Running状态为connecting状态
这里出现这个问题的原因是因为授权导致,授权改为对172.17.24段的地址访问权限,便可以了
2)start slave 失败
这个一般是由于relay-log里保留以前的信息,需要reset slave 一下,然后再重新建立关系