概要描述
一些不规范的操作导致 Manager 8180 页面无法关闭 Manager 高可用,需要在后台操作删除 Manager 高可用,来完成 Manager 的修复;
本案例集群环境:Manager 6.0-2019-01-25,TDH 6.0.2
详细说明
后台关闭 Manager 高可用的流程如下:
- 停止 Manager 和 Manager-db,并通过修改配置文件关闭 Manager HA
- 将 Manager-TXSQL 数据迁移到 MariaDB,并更新权限
- 登录 Manager 数据库停止正在运行的任务
- 修改 Manager-db 的登录连接方式
- 删除 Manager HA 相关的 container
- 登录 MariDB 删除 Manager HA 的安装信息
- 删除 Manager HA 相关的目录文件
1、停止 Manager 和 Manager-db,并通过修改配置文件关闭 Manager HA
执行下面命令,手动停止 manager 进程和 manager db,需要在每个 Manager server 节点都操作
/etc/init.d/transwarp-manager stop
/etc/init.d/transwarp-manager-db stop
在配置文件中关闭HA,需要在每个 Manager 节点都操作,涉及到的配置文件:
/etc/transwarp-manager/master/ha.properties
/etc/transwarp-manager/master/application.conf
将文件 ha.properties 中的参数 “transwarp.manager.master.ha.enable”
值修改为 false
将文件 application.conf 中的参数 “ha.enabled”
值修改为 false
修改后的参数如下:
2、将 Manager-TXSQL 数据迁移到 MariaDB,并更新权限
2.1 备份数据库数据信息
一定要备份如下数据文件,涉及到的需要备份的文件:
/var/lib/transwarp-manager/master/data/mysql/* 和 /etc/transwarp-manager/master/mysql_dump.out
可以参考如下方式 cp 一份到其他目录:
cp -r /var/lib/transwarp-manager/master/data/mysql /root/mysql_manager_data
cp /etc/transwarp-manager/master/mysql_dump.out /root/mysql_dump-ha.out
备份完毕之后,清空 /var/lib/transwarp-manager/master/data/mysql
,注意是只清空该目录下的数据,目录要保留
rm -rfv /var/lib/transwarp-manager/master/data/mysql/*
2.2 Manager-TXSQL 数据迁移到 MariaDB
执行下面命令启动 Manager-db 数据库(MariaDB):
/etc/init.d/transwarp-manager-db start
执行下面命令将 Manager-Txsql 的数据导出到 manager-txsql_dump.out 文件中,注意下面使用到的密码 “538043184” 是文件 /etc/manager/conf/db.properties 中 db.password 对应的密码。导出后检查下文件大小,文件内容等大致对不对!!!
mysqldump --single-transaction -h$(hostname -i) -uroot -P3366 -p"538043184" transwarp_manager > /etc/transwarp-manager/master/manager-txsql_dump.out
执行下面SQL,刷新权限并将 Manager-TXSQL 数据迁移到 MariaDB,注意下面命令中使用到的密码 “rOsNsqX4uC” 是文件 /etc/transwarp-manager/master/db.properties 中的密码
# 设置数据库 root 用户的密码,此密码要和 transwarp 用户的密码保持一致
mysqladmin -S /var/run/mariadb/transwarp-manager-db.sock -h127.0.0.1 -uroot -P3308 password "rOsNsqX4uC"
# 刷新数据库的用户权限
mysql -h127.0.0.1 -uroot -p"rOsNsqX4uC" -P3308 -e "
CREATE DATABASE IF NOT EXISTS transwarp_manager CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON transwarp_manager.* TO 'transwarp'@'%' IDENTIFIED BY 'rOsNsqX4uC';
GRANT ALL PRIVILEGES ON transwarp_manager.* TO 'transwarp'@'localhost' IDENTIFIED BY 'rOsNsqX4uC';
SET PASSWORD FOR 'transwarp'@'%' = PASSWORD('rOsNsqX4uC');
SET PASSWORD FOR 'transwarp'@'localhost' = PASSWORD('rOsNsqX4uC');
FLUSH PRIVILEGES;"
# 将 Manager-TXSQL 数据迁移到 MariaDB
mysql -h127.0.0.1 -utranswarp -p"rOsNsqX4uC" -P3308 transwarp_manager < /etc/transwarp-manager/master/manager-txsql_dump.out
3、登录 Manager 数据库停止正在运行的任务
进入 Manager MariaDB 数据库:
mysql -h localhost -u transwarp -p$(cat /etc/transwarp-manager/master/db.properties | grep io.transwarp.manager.db.password | awk -F = '{print $2}') -S /var/run/mariadb/transwarp-manager-db.sock -D transwarp_manager
将 task、stage、job表中状态是 WAITING 和 RUNNING 的任务都设置为 FAILED,参考如下SQL:
UPDATE task SET status = 'FAILED' WHERE status = 'WAITING' OR status = 'RUNNING';
UPDATE stage SET status = 'FAILED' WHERE status = 'WAITING' OR status = 'RUNNING';
UPDATE job SET status = 'FAILED' WHERE status = 'WAITING' OR status = 'RUNNING';
4、修改 Manager-db 的登录连接方式
修改配置文件 jdbc 连接串和密码,涉及文件:/etc/transwarp-manager/master/db.properties
# MariaDB 连接串参考示例
io.transwarp.manager.db.url=jdbc:mysql://localhost:3308/transwarp_manager?autoReconnect=true&failOverReadOnly=false&createDatabaseIfNotExist=false&characterEncoding=UTF-8
然后执行如下命令重启 Manager:
/etc/init.d/transwarp-manager restart
此时 Manager 的 8180 页面应该恢复正常,可以使用了。打开 8180 检查服务信息是否完整正确。
5、删除 Manager HA 相关的 container
在 Manager 正常使用后,执行如下操作:
查看并删除 Manager-TxSQL container,需要在每个 Manager-TXSQL 节点都执行,60bd7d50ccc1 是 Manager-TXSQL container id
docker ps -a | grep Manager-TxSQL
docker rm -vf 60bd7d50ccc1
查看并删除各个节点的 Manager-Zookeeper 镜像,需要在每个Manager-Zookeeper 节点都执行,d7696be27642 是 Manager-Zookeeper container id:
docker ps -a | grep Manager-Zookeeper
docker rm -vf d7696be27642
6、删除 Manager HA 的安装信息
进到 Manager 数据库,在 service 表中把 Manager 服务删除:
# 登录 Manager-db 数据库
mysql -h localhost -u transwarp -p$(cat /etc/transwarp-manager/master/db.properties | grep io.transwarp.manager.db.password | awk -F = '{print $2}') -S /var/run/mariadb/transwarp-manager-db.sock -D transwarp_manager
# 删除 Manager HA 的安装信息
select * from service where type="MANAGER";
delete from service where type="MANAGER";
7、删除 Manager HA 相关的目录文件
Manager 正常使用后,在 Manager HA 相关的每个节点执行以下命令,删除目录和文件
mountpoint -q /transwarp/mounts/manager/var/lib/transwarp-manager/master/data/txsql && umount -lf /transwarp/mounts/manager/var/lib/transwarp-manager/master/data/txsql
rm -rfv /var/lib/transwarp-manager/master/data/txsql
mountpoint -q /transwarp/mounts/manager/etc/manager/conf && umount -lf /transwarp/mounts/manager/etc/manager/conf
rm -rfv /etc/manager/conf
mountpoint -q /transwarp/mounts/manager/var/log/manager && umount -lf /transwarp/mounts/manager/var/log/manager
rm -rfv /var/log/manager
mountpoint -q /transwarp/mounts/manager/var/manager/zookeeper && umount -lf /transwarp/mounts/manager/var/manager/zookeeper
rm -rfv /var/manager/zookeeper
至此,Manager 高可用通过后台的方式彻底删除了