一 场景
数据库环境为一主一从(数据库同步方式用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是否漂移成功若失败手动漂移