一 场景

数据库环境为一主一从(数据库同步方式用binlog,pos),使用mha来作为数据库高可用的一种方案,目前场景是所有读写操作均在vip进行,mysql主磁盘200G已经使用180G 清理binlog也只能清理一部分,需面临磁盘扩容,使用平台为腾讯云平台,本地ssd磁盘,咨询平台给的回馈是本地ssd不支持热扩,有两种方案
1.本地ssd转换云ssd 然后扩容,转换过程中理论不会出现数据丢失,但是转换需要停机操作
2.买一个新的ssd做数据copy

二 实际操作

1.主从切换,并且准备好磁盘

masterha_master_switch --conf=/etc/mha/mha.cnf --master_state=alive --new_master_host=masterIP  --orig_master_is_new_slave
#检查同步状态 
#在slave执行
show master status\G
#在master执行
show slave status\G

如果mha切换失败备用方案自己手动切换
如果mha切换失败 那么就手动切换

#在slave服务器 

RESET MASTER;STOP SLAVE;RESET SLAVE; show master status;
show slave status\G;

#可以看到binlog 以及pos 并记录

#在master服务器

RESET MASTER;STOP SLAVE;RESET SLAVE; 
CHANGE MASTER TO MASTER_HOST='原先的slave服务器',
MASTER_PORT=3306,
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=435;

确认vip是否漂移成功 失败的话手动切换

#在从slave执行

ip addr add vip dev eth1
#在主master执行
ip addr del vip dev eth1

2.停掉master 数据copy

因为之前是nohup启动的所以
在之前的master服务器

mysqladmin shutdown

cp -r /data/*    /mysql-data
#卸载的时候需要注意不能再磁盘目录中,会导致占用然后umount失败
umount /olddata
umount /newdata
mount /newdisk   /olddata
chown -R mysql:mysql /olddata

3.启动master确认主从状态

#启动master
mysqld_safe --defaults-file=/etc/my3306.cnf --datadir=/data/mysql3306/mysql3306 --user=mysql &

4.主从切换,并且确认主从同步状态

masterha_master_switch --conf=/etc/mha/mha.cnf --master_state=alive --new_master_host=old_master_ip  --orig_master_is_new_slave
#在master服务器执行
show slave status\G
#确认主从同步状态
#检查同步状态 
#在slave执行
show master status\G
#在master执行
show slave status\G
#检查vip是否漂移成功若失败手动漂移

5.与研发确认数据库扩容操作完成,测试主从同步以及数据库可用性

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐