Skip to content

PhxSQL 成员管理

Daniel Zhang edited this page Dec 12, 2016 · 7 revisions

#PhxSQL节点重新部署 PhxSQL 集群中某节点A数据损坏,需要重新部署该节点A时,流程如下:

  1. 进入节点A的phxsql/tools目录,并执行python2.7 install.py -i IP -p 54321 -g 6000 -y 11111 -P 17000 -a 8001 -f/tmp/data/ -s0

  2. 让节点A的phxbinlogsvr停止工作 killall -9 phxbinlogsvr_phxrpc

由于phxbinlogsvr会持续监控mysql的状态,如果发现该节点为slave节点,则持续监控mysql的read_only和super_read_only变量是否开启,如果没有,则设置开启。因此需要让phxbinlogsvr停止工作,才能对mysql进行管理员操作。

  1. 从其他集群节点中导出数据 phxsql/percona.src/bin/mysqldump -uroot -S/tmp/data/percona.workspace/tmp/percona.sock --all-databases > phxsql.alldata

导出数据需要加上--all-databases 让slave节点和其他节点的数据一致。

  1. 将导出的数据phxsql.alldata放到节点A上

  2. 重置节点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的数据清空。

  1. 重启phxbinlogsvr python2.7 restart.py -pphxbinlogsvr

恢复phxbinlogsvr的工作

  1. 重启mysql python2.7 restart.py -pmysql

由于数据导入时,user表的数据没有被刷新,权限无法马上启用,因此需要重启mysql让其刷新权限后,phxbinlogsvr才能正常工作。

不能直接在mysql上执行flush privileges,否则会导致机器间的Binlog数据不一致。

#PhxSQL 加入新节点

  1. 进入phxsql/sbin目录,执行phxbinlogsvr_tools_phxrpc -f AddMember -hip -pport -m 新节点ip

ip为当前集群中某个节点的ip,port为phxbinlogsvr的端口

  1. 进入新节点,执行"PhxSQL节点重新部署"的流程

#PhxSQL 删除节点

  1. 进入phxsql/sbin目录,执行phxbinlogsvr_tools_phxrpc -f RemoveMember -hip -pport -m 删除节点ip

ip为当前集群中某个节点的ip,port为phxbinlogsvr的端口

Clone this wiki locally