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的端口

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.