kudu集群运行避免不了服务器硬件,软件异常导致宕机。如果宕机的是master节点且服务器不能启动如何恢复master?下面介绍下如何在服务器宕机的情况下迁移master服务。
1. 将每个活着的master uuid 记录下来
命令:
sudo -u kudu kudu fs dump uuid --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] 2>/dev/null
示例:
sudo -u kudu kudu fs dump uuid --fs_wal_dir=/data/data1/kmaster
--fs_data_dirs=/data/data2/kmdata,/data/data3/kmdata,/data/data4/kmdata 2>/dev/null
2. 在活动的master上执行
命令
sudo -u kudu kudu local_replica cmeta print_replica_uuids --fs_wal_dir=<master_data_dir> <tablet_id> 2>/dev/null
示例
$ sudo -u kudu kudu local_replica cmeta print_replica_uuids --fs_wal_dir=/data/kudu/master/wal
--fs_data_dirs=/data/kudu/master/data 00000000000000000000000000000000 2>/dev/null
3. 根据前面两个uuid 列表找出dead master uuid
4. 使用先前记录的死亡主机的UUID格式化替换主机上的数据目录。 使用以下命令序列:
命令:
sudo -u kudu kudu fs format --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] --uuid=<uuid>
示例:
$ sudo -u kudu kudu fs format --fs_wal_dir=/data/kudu/master/wal --fs_data_dirs=/data/kudu/master/data
--uuid=80a82c4b8a9f4c819bab744927ad765c
5. 使用以下命令将主数据复制到替换主服务器
命令:
sudo -u kudu kudu local_replica copy_from_remote --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] <tablet_id> <reference_master>
tablet_id 固定值:00000000000000000000000000000000
示例:
sudo -u kudu kudu local_replica copy_from_remote --fs_wal_dir=/data/data1/kmaster -- fs_data_dirs=/data/data3/kmdata,/data/data2/kmdata,/data/data4/kmdata 00000000000000000000000000000000 cdh-15-170:7051
6. 使用cloucera manager在新主机上添加master
7. 更新master ,在所有master上执行,需要先停止活动的master服务
命令:
sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=<master_wal_dir> [--fs_data_dirs=<master_data_dir>] <tablet_id> <all_masters>
tablet_id 固定值:00000000000000000000000000000000
示例:
sudo -u kudu kudu local_replica cmeta rewrite_raft_config --fs_wal_dir=/data/data3/kmaster/wal --fs_data_dirs=/data/data1/kmaster/data,/data/data2/kmaster/data,/data/data4/kmaster/data 00000000000000000000000000000000 5cd17814d4e748e0b52b776daaff21bf:cdh-15-170:7051 164623e4b7ee45139ad00f64ee84be84:cdh-15-171:7051 85534db90b604fe38323041af882363b:cdh-15-172:7051
8. 启动替换的master 和 重启之前的master ,重启tablet
9. 在kudu ui 界面查看master状态,每个master节点状态要一致
10. 执行健康检查脚本
sudo -u kudu kudu cluster ksck master-01.example.com,master-02.example.com,master-03.example.com
11. 在cm上删除 死亡的Kudu master