适用范围
1、系统中的多数节点仍然处于健康状态(且他们的流水也处于正常的状态,流水检查方法:TxSQL流水监控)。
2、数据量比较小。一般需要小于5GB,否则容易由于pod操作超时而失败。数据量大小的查看方法:
进入master pod (确定master节点的方法:TxSQL运维手册#%E5%A6%82%E6%9E%9C%E7%A1%AE%E5%AE%9Amaster%E8%8A%82%E7%82%B9),cd到percona的数据目录(5.2.2 之前的版本,percona默认数据目录在/vdir/hadoop/txsql/percona.workspace/data),看这个目录下文件的总大小。
3、如果数据量过大,建议使用离线修复步骤:TxSQL单节点离线故障修复或迁移步骤
修复受损节点
假设TxSQL部署于host1、host2、host3三台机器上且IP地址分别为 0.0.0.1, 0.0.0.2, 0.0.0.3。假设出现故障的节点为host1,我们要修复这个节点。以下描述中,我们同时用机器名来命名对应的机器上TxSQL pod的名称。
1、操作前检查host2、host3上的TxSQL处于启动状态且健康(多数派存活)。若未启动,请启动它们。若无法正常提供服务(manager界面显示它们不健康),则停止操作。
2、检查master信息和成员信息。进入TxSQL pod host2(或者host3)。cd /usr/bin/txsql/tools ,执行 ./txsql.sh list,你应该看到类似于以下的输出
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.1 port 17000
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
3、移除故障节点。执行 ./txsql.sh rm 0.0.0.1 从集群中移除 host1。这一步无论host1是否启动都可以执行。删除成功后请 list (第2步)加以确认。
[root@host2 /usr/bin/txsql/tools] ./txsql.sh rm 0.0.0.1
get master 0.0.0.2 expire time XXXXXXXXXXXXX
Remove Member 0.0.0.1 done
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
4、强制故障节点重新初始化
进入故障节点host1的pod,cd /usr/bin/txsql/etc/,编辑 install_conf.sh,确保host1的IP(即0.0.0.1)在 TxSQLNodes数组中不是第一个 (非常重要!)。如果是,可以把它与第二个交换位置。
TDH环境修改方式:
直接进故障节点的pod修改顺序
TDC环境修改方式:
kubectl -n ${namspace} get cm | grep txsql-confd-cnf 得到cmA
kubectl -n ${namspace} edit cm ${cmA},修改变量
install_conf.sh 的DATA_DIR变量记录了TxSQL数据目录的路径,需要手动删除该目录下的全部内容(但要保留这个目录),之后使用manager重新启动该pod,这会强制这个pod重新初始化。
5、备份数据。
进入host1新启动的pod(!注意,必须在pod内部操作,以保证dump数据的兼容性,否则后期数据很可能无法导入),等待数据目录下(5.2.2之前的版本默认为 /vdir/hadoop/txsql/)出现 init_done.flag 文件(该文件的出现标志着初始化完成)。
使用下面的命令从一个健康的节点(比如host2)备份数据。端口(-P13306)和密码(-p"123456")请根据具体情况修改,root密码存储在 /usr/bin/txsql/etc/db.properties中(5.6.47版本密码隐藏,命令行执行echo $TXSQL_DB_PASSWORD ,即可获得密码)
[root@host2 /] cd /usr/bin/txsql/tools
[root@host2 /usr/bin/txsql/tools] /usr/bin/txsql/percona.src/bin/mysqldump -h0.0.0.2 -P13306 -uroot -p"123456" --single-transaction --all-databases --triggers --routines --events >mydata.sql
5.1、待host1的数据目录下出现init_done.flag后,编辑文件 /usr/bin/txsql/tools/txsql.sh,在函数restart_role的第一行添加 return 0,目的是禁止新pod自动重启服务。
以下是用vim编辑后的结果(行号可能与此不同)。
vim /usr/bin/txsql/tools/txsql.sh
# Helper for act_start
restart_role()
{
# 必须在本函数的一开始增加如下一行,其他的代码可能与此示例有差异,不用管
return 0
if [ $# -ne 1 ]; then
return 1
fi
if [ $OPT_FORCE = "N" ]; then
phx_is_role_running_by_name "$1"
[ $? -eq 0 ] && return 0
fi
# zqdai: change directory to tools to ensure the python scripts work as expected
local lPwd=$(pwd)
if [ -x "$PHX_HOME/tools" ]; then
cd "$PHX_HOME/tools"
python restart.py -p "$1"
cd "$lPwd"
else
return 1
fi
return 0
}
6、kill host1 pod上的phxbinlogsvr进程
在host1 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh kill phxbinlogsvr 。请用 ps -ef 验证改进程已经被杀死。
[root@host1 /usr/bin/txsql/tools] ./txsql.sh kill phxbinlogsvr
7、把host1添加回TxSQL的Paxos Group中。
回到host2的pod,在 /usr/bin/txsql/tools 下执行 ./txsql.sh add 0.0.0.1把host1添加到txsql的paxos group中。请务必./txsql.sh list确认该操作已经成功完成。要等待20秒验证,确认它没有自动重启。
[root@host2 /usr/bin/txsql/tools] ./txsql.sh add 0.0.0.1
get master 0.0.0.2 expire time XXXXXXXXXXXXX
Add Member 0.0.0.1 done
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.1 port 17000
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
8、向host1中导入数据。
确认phxbinlogsvr已经自杀。
[root@host1 /usr/bin/txsql/tools] ps -ef | grep phxbinlogsvr
<不应该看到phxbinlogsvr进程>
导入数据,命令如下。注意mydata.sql是第5步dump出来的文件,该文件应放置在你执行"mysql -S XXXX"命令的当前目录下,示例中是在/usr/bin/txsql/tools下。
注意以下命令会导入数据两次,这是有必要的。实际上,第一次导入很可能会因为缺少用户而导致一些问题,因此需要导入两次。flush privileges 必须要先set sql_log_bin=0,否则会引起严重的错误。
[root@host1 /usr/bin/txsql/tools]
ps -ef|grep mysqld,根据进程信息找到--socket=xxxx/percona.sock
mysql -S xxxx/percona.sock
mysql> set global super_read_only=off;
mysql> set global read_only=off;
mysql> source mydata.sql;
mysql> set sql_log_bin=0;
mysql> flush privileges;
mysql> source mydata.sql;
mysql> reset slave;
如果操作出现任何问题或者错误,则必须到host2的pod里上,从第3步重新开始整个修复过程。
9、重启phxbinlogsvr
恢复host1上文件 /usr/bin/txsql/tools/txsql.sh的原有内容。即删除restart_role函数里新添加的第一行 return 0 语句即可。最多等待20s中后,phxbinlogsvr进程自动重启(一般会重启两次)。请用 ps -ef 验证。
特殊注意事项:在6.0之前的版本,phxbinlogsvr在负载较低的集群中此时可能会出现反复重启的情况,tools目录下每隔20s会产生一个core文件。这种情况下,需要到一个健康的pod上,向txsql中插入超过10MB的数据来解决。例如在本例中,可以在host2上编写如下脚本:
load.sh
#!/bin/bash
# 这个脚本会插入10MB的数据,每次插入256字节,连续插入4w次,插入后删除。这是为了解决6.0之前一个bug导致phxbinlogsvr在低负载情况下反复重启的问题
#注意修改以下变量为与现场情况相符的值
master_ip='0.0.0.2 '
master_port='3316'
password='123456'
mysql -h$master_ip -P$master_port -uroot -p"$password" -e "create database if not exists d1"
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "create table if not exists t1(c1 text)"
i=0
while [ $i -lt 2 ]
do
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "insert into t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')"
i=$((i+1))
done
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "drop database d1"
执行这个脚本(bash load.sh),插入足够数据后,新的phxbinlogsvr会停止自动重启。
10、检查mysql的流水是否正常
在host1 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh localshell ,然后执行 show slave status\G,检查流水状态是否正常(流水监控的方法),特别是Slave_IO_Running、Slave_SQL_Running必须处于Yes状态。
11、操作完成。检查新节点状态。manager中此时应显示3个节点均为健康状态。
迁移受损的节点
如果需要把host1的服务迁移到一个新的host(例如host4),则在以上步骤中,第4步改为用manager添加一个新的pod到host4,然后后续在host1上操作的步骤都在host4上操作即可。详细步骤如下。
1、操作前检查host2、host3上的TxSQL处于启动状态且健康(多数派存活)。若未启动,请启动它们。若无法正常提供服务(manager界面显示它们不健康),则停止操作。
2、检查master信息和成员信息。进入TxSQL pod host2(或者host3)。cd /usr/bin/txsql/tools ,执行 ./txsql.sh list,你应该看到类似于以下的输出
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.1 port 17000
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
3、移除故障节点。执行 ./txsql.sh rm 0.0.0.1 从集群中移除 host1。这一步无论host1是否启动都可以执行。删除成功后请 list (第2步)加以确认。
[root@host2 /usr/bin/txsql/tools] ./txsql.sh rm 0.0.0.1
get master 0.0.0.2 expire time XXXXXXXXXXXXX
Remove Member 0.0.0.1 done
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
4、在manager中,添加一个新的txsql pod 到这个txsql服务。这个pod应该位于host4上。
添加之后等待,直到host4的数据目录(6.0之前默认在pod内的 /vdir/hadoop/txsql/)下出现init_done.flag
注意: 有一些版本禁止了 TxSQL_SERVER 扩容,需要修改 Manager TxSQL Application-metainfo. vi /var/lib/transwarp-manager/master/content/meta/services/TXSQL/${当前版本}/metainfo.yaml, 修改 TXSQL_SERVER 的 frontendOperations. 示例: frontendOperations: [“Start”, “Stop”, “Delete”, “Scaleout”]. 然后重启Manager(命令: service transwarp-manager restart) , 扩容界面会出现 TxSQL_SERVER.
5、备份数据。
进入host4新启动的pod(!注意,必须在pod内部操作,以保证dump数据的兼容性,否则后期数据很可能无法导入),使用下面的命令从一个健康的节点(比如host2)备份数据。端口(-P3316)和密码(-p"123456")请根据具体情况修改,root密码存储在 /usr/bin/txsql/etc/db.properties中。
[root@host4 /] cd /usr/bin/txsql/tools
[root@host4 /usr/bin/txsql/tools] /usr/bin/txsql/percona.src/bin/mysqldump -h0.0.0.2 -P3316 -uroot -p"123456" --single-transaction --all-databases --triggers --routines --events >mydata.sql
5.1、待host4中出现init_done.flag后,编辑文件 /usr/bin/txsql/tools/txsql.sh,在函数restart_role的第一行添加 return 0,目的是禁止新pod自动重启服务。
以下是用vim编辑后的结果(行号可能与此不同)。
vim /usr/bin/txsql/tools/txsql.sh
# Helper for act_start
restart_role()
{
# 必须在本函数的一开始增加如下一行,其他的代码可能与此示例有差异,不用管
return 0
if [ $# -ne 1 ]; then
return 1
fi
if [ $OPT_FORCE = "N" ]; then
phx_is_role_running_by_name "$1"
[ $? -eq 0 ] && return 0
fi
# zqdai: change directory to tools to ensure the python scripts work as expected
local lPwd=$(pwd)
if [ -x "$PHX_HOME/tools" ]; then
cd "$PHX_HOME/tools"
python restart.py -p "$1"
cd "$lPwd"
else
return 1
fi
return 0
}
6、kill host4 pod上的phxbinlogsvr进程
在host4 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh kill phxbinlogsvr 。请用 ps -ef 验证改进程已经被杀死。
[root@host4 /usr/bin/txsql/tools] ./txsql.sh kill phxbinlogsvr
7、把host4添加到TxSQL的Paxos Group中。
回到host2的pod,在 /usr/bin/txsql/tools 下执行 ./txsql.sh add 0.0.0.4 把host1添加到txsql的paxos group中。请务必./txsql.sh list确认该操作已经成功完成。要等待20秒验证,确认它没有自动重启。
[root@host2 /usr/bin/txsql/tools] ./txsql.sh add 0.0.0.4
get master 0.0.0.2 expire time XXXXXXXXXXXXX
Add Member 0.0.0.4 done
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.2 port 17000
ip 0.0.0.3 port 17000
ip 0.0.0.4 port 17000
8、向host4中导入数据。
确认phxbinlogsvr已经自杀。
[root@host1 ~] ps -ef | grep phxbinlogsvr
<不应该看到phxbinlogsvr进程>
导入数据,命令如下。注意mydata.sql是第4步dump出来的文件,该文件应放置在你执行"mysql -S XXXX"命令的当前目录下,示例中是在/usr/bin/txsql/tools下。
注意以下命令会导入数据两次,这是有必要的。实际上,第一次导入很可能会因为缺少用户而导致一些问题,因次要导入两次。flush privileges 必须要先set sql_log_bin=0,否则会引起严重的错误。
[root@host4 /usr/bin/txsql/tools] mysql -S /vdir/hadoop/txsql/percona.workspace/tmp/percona.sock
mysql> set global super_read_only=off;
mysql> set global read_only=off;
mysql> source mydata.sql;
mysql> set sql_log_bin=0;
mysql> flush privileges;
mysql> source mydata.sql;
mysql> reset slave;
如果操作出现任何问题或者错误,则必须到host2的pod里上,从第3步重新开始整个修复过程(但注意此时要移除的节点是 0.0.0.4,而非 0.0.0.1)
9、重启phxbinlogsvr
恢复host4上文件 /usr/bin/txsql/tools/txsql.sh的原有内容。即删除restart_role函数里新添加的第一行 return 0 语句即可。最多等待20s中后,phxbinlogsvr进程自动重启(最多重启两次)。请用 ps -ef 验证。
特殊注意事项:在6.0之前的版本,phxbinlogsvr在负载较低的集群中此时可能会出现反复重启的情况,tools目录下每隔20s会产生一个core文件。这种情况下,需要到一个健康的pod上,向txsql中插入超过10MB的数据来解决。在本例中,可以在host2上编写如下脚本:
load.sh
#!/bin/bash
# 这个脚本会插入10MB的数据,每次插入256字节,连续插入4w次,插入后删除。这是为了解决6.0之前一个bug导致phxbinlogsvr在低负载情况下反复重启的问题
#注意修改以下变量为与现场情况相符的值
master_ip='0.0.0.2 '
master_port='3316'
password='123456'
mysql -h$master_ip -P$master_port -uroot -p"$password" -e "create database if not exists d1"
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "create table if not exists t1(c1 text)"
i=0
while [ $i -lt 2 ]
do
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "insert into t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')"
i=$((i+1))
done
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "drop database d1"
执行这个脚本(bash load.sh),插入足够数据后,新的phxbinlogsvr会停止自动重启。
10、检查mysql的流水是否正常
在host4 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh localshell ,然后执行 show slave status\G,检查流水状态是否正常(流水监控的方法),特别是Slave_IO_Running、Slave_SQL_Running必须处于Yes状态。
11、操作完成。检查新节点状态。manager中此时应显示3个节点均为健康状态。
在线扩容
本节是在现有基础上增加一个新的节点的步骤。假设现有节点是0.0.0.1, 0.0.0.2,我们想在此基础上扩展一个新的节点,新节点部署在0.0.0.4上。详细的步骤为:
1、操作前检查host1、host2上的TxSQL处于启动状态且健康(多数派存活)。若未启动,请启动它们。若无法正常提供服务(manager界面显示它们不健康),则停止操作。
2、检查master信息和成员信息。进入TxSQL pod host1(或者host2)。cd /usr/bin/txsql/tools ,执行 ./txsql.sh list,你应该看到类似于以下的输出。
[root@host1 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.1 port 17000
ip 0.0.0.2 port 17000
3、在manager中,添加一个新的txsql pod 到这个txsql服务。这个pod应该位于host4上。
添加之后等待,直到host4的数据目录(6.0之前默认在pod内的 /vdir/hadoop/txsql/)下出现init_done.flag 。注意此时不需要等待这个pod进入健康状态(实际上它是不可能自行进入健康状态的)。
注意: 有一些版本禁止了 TxSQL_SERVER 扩容,需要修改 Manager TxSQL Application-metainfo. vi /var/lib/transwarp-manager/master/content/meta/services/TXSQL/${当前版本}/metainfo.yaml, 修改 TXSQL_SERVER 的 frontendOperations. 示例: frontendOperations: [“Start”, “Stop”, “Delete”, “Scaleout”]. 然后重启Manager(命令: service transwarp-manager restart), 扩容界面会出现 TxSQL_SERVER.
4、备份数据。
进入host4新启动的pod(!注意,必须在pod内部操作,以保证dump数据的兼容性,否则后期数据可能无法导入),使用下面的命令从一个健康的节点(比如host2)备份数据。端口(-P3316)和密码(-p"123456")请根据具体情况修改,root密码存储在 /usr/bin/txsql/etc/db.properties中。
[root@host4 /] cd /usr/bin/txsql/tools
[root@host4 /usr/bin/txsql/tools] /usr/bin/txsql/percona.src/bin/mysqldump -h0.0.0.2 -P3316 -uroot -p"123456" --single-transaction --all-databases --triggers --routines --events >mydata.sql
4.1、待host4中(新扩容的pod)出现init_done.flag后,编辑文件 /usr/bin/txsql/tools/txsql.sh,在函数restart_role的第一行添加 return 0,目的是禁止新pod自动重启服务。
以下是用vim编辑后的结果(行号可能与此不同)。
vim /usr/bin/txsql/tools/txsql.sh
# Helper for act_start
restart_role()
{
# 必须在本函数的一开始增加如下一行,其他的代码可能与此示例有差异,不用管
return 0
if [ $# -ne 1 ]; then
return 1
fi
if [ $OPT_FORCE = "N" ]; then
phx_is_role_running_by_name "$1"
[ $? -eq 0 ] && return 0
fi
# zqdai: change directory to tools to ensure the python scripts work as expected
local lPwd=$(pwd)
if [ -x "$PHX_HOME/tools" ]; then
cd "$PHX_HOME/tools"
python restart.py -p "$1"
cd "$lPwd"
else
return 1
fi
return 0
}
5、kill host4 pod(新扩容的pod)上的phxbinlogsvr进程
在host1 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh kill phxbinlogsvr 。请用 ps -ef 验证改进程已经被杀死。
[root@host4 /usr/bin/txsql/tools] ./txsql.sh kill phxbinlogsvr
6、把host4添加到TxSQL的Paxos Group中。
回到host2的pod,在 /usr/bin/txsql/tools 下执行 ./txsql.sh add 0.0.0.4 把host1添加到txsql的paxos group中。请务必./txsql.sh list确认该操作已经成功完成。要等待20秒验证,确认它没有自动重启。
[root@host2 /usr/bin/txsql/tools] ./txsql.sh add 0.0.0.4
get master 0.0.0.2 expire time XXXXXXXXXXXXX
Add Member 0.0.0.4 done
[root@host2 /usr/bin/txsql/tools] ./txsql.sh list
get master 0.0.0.2 expire time XXXXXXXXXXXXX
ip 0.0.0.1 port 17000
ip 0.0.0.2 port 17000
ip 0.0.0.4 port 17000
7、向host4中导入数据。
(在新扩容的pod)确认phxbinlogsvr未自动重启。
[root@host1 ~] ps -ef | grep phxbinlogsvr
<不应该看到phxbinlogsvr进程>
导入数据,命令如下。注意mydata.sql是第4步dump出来的文件,该文件应放置在你执行"mysql -S XXXX"命令的当前目录下,示例中是在/usr/bin/txsql/tools下。
注意以下命令会导入数据两次,这是有必要的。实际上,第一次导入很可能会因为缺少用户而导致一些问题,因次要导入两次。执行 flush privileges 前必须要先set sql_log_bin=0,否则会引起严重的错误(如果出现这种情况需要重新开始,新节点数据会永久损坏。必须按照“修复受损节点”修复0.0.0.4节点。)。
[root@host4 /usr/bin/txsql/tools] mysql -S /vdir/hadoop/txsql/percona.workspace/tmp/percona.sock
mysql> set global super_read_only=off;
mysql> set global read_only=off;
mysql> source mydata.sql;
mysql> set sql_log_bin=0;
mysql> flush privileges;
mysql> source mydata.sql;
mysql> reset slave;
8、重启phxbinlogsvr
(新扩容的pod)恢复host4上文件 /usr/bin/txsql/tools/txsql.sh的原有内容。即删除restart_role函数里新添加的第一行 return 0 语句即可。最多等待20s中后,phxbinlogsvr进程自动重启(最多重启两次)。请用 ps -ef 验证。
特殊注意事项:在6.0之前的版本,phxbinlogsvr在负载较低的集群中此时可能会出现反复重启的情况,tools目录下每隔20s会产生一个core文件。这种情况下,需要到一个健康的pod上,向txsql中插入超过10MB的数据来解决。在本例中,可以在host2上编写如下脚本:
load.sh
#!/bin/bash
# 这个脚本会插入10MB的数据,每次插入256字节,连续插入4w次,插入后删除。这是为了解决6.0之前一个bug导致phxbinlogsvr在低负载情况下反复重启的问题
#注意修改以下变量为与现场情况相符的值
master_ip='0.0.0.2 '
master_port='3316'
password='123456'
mysql -h$master_ip -P$master_port -uroot -p"$password" -e "create database if not exists d1"
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "create table if not exists t1(c1 text)"
i=0
while [ $i -lt 2 ]
do
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "insert into t1 values('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')"
i=$((i+1))
done
mysql -h$master_ip -P$master_port -uroot -p"$password" -D d1 -e "drop database d1"
执行这个脚本(bash load.sh),插入足够数据后,新的phxbinlogsvr会停止自动重启。
9、检查mysql的流水是否正常
在host4 pod的目录 /usr/bin/txsql/tools 下执行 ./txsql.sh localshell ,然后执行 show slave status\G,检查流水状态是否正常(流水监控的方法),特别是Slave_IO_Running、Slave_SQL_Running必须处于Yes状态。
10、操作完成。检查新节点状态。manager中此时应显示3个节点均为健康状态。