TxSQL在线修复、迁移、扩容

适用范围

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个节点均为健康状态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值