不停业务,做mysql数据迁移。

入职小美到家后,发现mysql-data目录存储在20G根目录磁盘,磁盘空间越来越小,这个坑必须填掉。同事要求不停业务做迁移,讨论后方案如下:

方案:

1、使用xtartbackup做mysql的master-slave(无需上锁,不影响业务)。

2、验证数据一致性后将业务从master切换至slave。

3、将原master-slave重新部署。

方案虽然繁琐,重点在于安全。

xtartbackup部署步骤如下:

1、安装xtrabackup
yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-IO-Socket-SSL
rpm -ivh percona-xtrabackup-22-2.2.13-1.el6.x86_64.rpm

2、备份全部库
innobackupex –user=root –port=8001 –host=127.0.0.1 –password=nidemima –defaults-file=/usr/local/app/mysql/my.cnf /mnt/data/

3、为了保证备份集中的数据一致,需要操作:
innobackupex –apply-log /tmp/mysqlbackup/2015-12-21_16-45-31

4、创建主从账号
Master上创建同步账号并授权REPLICATION
CREATE USER ‘repl’@’192.168.1.%’ IDENTIFIED BY ‘nidemima’;

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO ‘repl’@’192.168.1.%’;

5、然后在Slave上测试,看看能否使用repl用户登录Master服务器:
mysql -h192.168.1.132 -urepl -pnidemima

show grants\G

6、将Master的全备scp到Slave主机上
scp -r /tmp/mysqlbackup/2015-12-21_16-45-31 10.172.181.50:/data/backup

7、导入数据
innobackupex –user=root –port=8001 –host=127.0.0.1 –password=nidemima –defaults-file=/usr/local/app/mysql/my.cnf –copy-back /tmp/20151222111429
chown mysql.mysql /mnt/app/mysql/data/ -R

8、启动Slave数据库
/root/bin/start_mysql.sh
ps -ef |grep mysqld

9、在slave上执行change master设置主服务器复制信息
cd /data/backup/innobackupex/2014-07-31_11-20-44
cat xtrabackup_binlog_info

mysql-bin.000009 376

mysql> change master to master_host=’192.168.1.132′, master_user=’repl’, master_password=’nidemima’,master_port=8001,master_log_file=’mysql-bin.000009′,master_log_pos=376;
Query OK, 0 rows affected (0.05 sec)

10、在slave上启动复制
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

11、检查主从复制是否正常
mysql> show slave status\G

发表评论

邮箱地址不会被公开。