Repository navigation
PhxSQL 成员管理
#PhxSQL节点重新部署 PhxSQL 集群中某节点A数据损坏,需要重新部署该节点A时,流程如下:
-
进入节点A的phxsql/tools目录,并执行
python2.7 install.py -i IP -p 54321 -g 6000 -y 11111 -P 17000 -a 8001 -f/tmp/data/ -s0 -
让节点A的phxbinlogsvr停止工作
killall -9 phxbinlogsvr_phxrpc
由于phxbinlogsvr会持续监控mysql的状态,如果发现该节点为slave节点,则持续监控mysql的read_only和super_read_only变量是否开启,如果没有,则设置开启。因此需要让phxbinlogsvr停止工作,才能对mysql进行管理员操作。
- 从其他集群节点中导出数据
phxsql/percona.src/bin/mysqldump -uroot -S/tmp/data/percona.workspace/tmp/percona.sock --all-databases > phxsql.alldata
导出数据需要加上--all-databases 让slave节点和其他节点的数据一致。
-
将导出的数据phxsql.alldata放到节点A上
-
重置节点A的mysql数据
mysql -uroot -S/tmp/data/percona.workspace/tmp/percona.sock -e "set global super_read_only=off; set global read_only=off; reset master;"; mysql -uroot -S/tmp/data/percona.workspace/tmp/percona.sock < phxsql.alldata
把mysql的read_only和super_read_only开关关闭才能进行管理员操作。并且导出数据前需要reset master把mysql的数据清空。
- 重启phxbinlogsvr
python2.7 restart.py -pphxbinlogsvr
恢复phxbinlogsvr的工作
- 重启mysql
python2.7 restart.py -pmysql
由于数据导入时,user表的数据没有被刷新,权限无法马上启用,因此需要重启mysql让其刷新权限后,phxbinlogsvr才能正常工作。
不能直接在mysql上执行flush privileges,否则会导致机器间的Binlog数据不一致。
#PhxSQL 加入新节点
- 进入phxsql/sbin目录,执行
phxbinlogsvr_tools_phxrpc -f AddMember -hip -pport -m 新节点ip
ip为当前集群中某个节点的ip,port为phxbinlogsvr的端口
- 进入新节点,执行"PhxSQL节点重新部署"的流程
#PhxSQL 删除节点
- 进入phxsql/sbin目录,执行
phxbinlogsvr_tools_phxrpc -f RemoveMember -hip -pport -m 删除节点ip
ip为当前集群中某个节点的ip,port为phxbinlogsvr的端口