修改迁移步骤,将耗时的升级操作改为tmp数据库进行

This commit is contained in:
wangkuan
2024-05-15 16:06:29 +08:00
parent 50889d6433
commit b357c8d507
5 changed files with 147 additions and 68 deletions

View File

@@ -0,0 +1,11 @@
select 'session_record' as table_name, count(*) as cnt from tsg_galaxy_v3.session_record;
select 'security_event' as table_name, count(*) as cnt from tsg_galaxy_v3.security_event;
select 'transaction_record' as table_name, count(*) as cnt from tsg_galaxy_v3.transaction_record;
select 'voip_record' as table_name, count(*) as cnt from tsg_galaxy_v3.voip_record;
select 'proxy_event' as table_name, count(*) as cnt from tsg_galaxy_v3.proxy_event;
select 'dos_event' as table_name, count(*) as cnt from tsg_galaxy_v3.dos_event;

View File

@@ -15,26 +15,26 @@ timestamp_start=`date --utc --date="$data_start_time" +%s`
timestamp_end=`date --utc --date="$data_end_time" +%s`
# 需要迁移的表名称
session_record_table_src="tsg_galaxy_v3.session_record_local_old"
session_record_table_dest="tsg_galaxy_v3.session_record_local"
session_record_table_src="tsg_galaxy_tmp.session_record_local_old"
session_record_table_dest="tsg_galaxy_tmp.session_record_local"
security_event_table_src="tsg_galaxy_v3.security_event_local_old"
security_event_table_dest="tsg_galaxy_v3.security_event_local"
security_event_table_src="tsg_galaxy_tmp.security_event_local_old"
security_event_table_dest="tsg_galaxy_tmp.security_event_local"
monitor_event_table_src="tsg_galaxy_v3.security_event_local_old"
monitor_event_table_dest="tsg_galaxy_v3.monitor_event_local"
monitor_event_table_src="tsg_galaxy_tmp.security_event_local_old"
monitor_event_table_dest="tsg_galaxy_tmp.monitor_event_local"
transaction_record_table_src="tsg_galaxy_v3.transaction_record_local_old"
transaction_record_table_dest="tsg_galaxy_v3.transaction_record_local"
transaction_record_table_src="tsg_galaxy_tmp.transaction_record_local_old"
transaction_record_table_dest="tsg_galaxy_tmp.transaction_record_local"
voip_record_table_src="tsg_galaxy_v3.voip_record_local_old"
voip_record_table_dest="tsg_galaxy_v3.voip_record_local"
voip_record_table_src="tsg_galaxy_tmp.voip_record_local_old"
voip_record_table_dest="tsg_galaxy_tmp.voip_record_local"
proxy_event_table_src="tsg_galaxy_v3.proxy_event_local_old"
proxy_event_table_dest="tsg_galaxy_v3.proxy_event_local"
proxy_event_table_src="tsg_galaxy_tmp.proxy_event_local_old"
proxy_event_table_dest="tsg_galaxy_tmp.proxy_event_local"
dos_event_table_src="tsg_galaxy_v3.dos_event_local_old"
dos_event_table_dest="tsg_galaxy_v3.dos_event_local"
dos_event_table_src="tsg_galaxy_tmp.dos_event_local_old"
dos_event_table_dest="tsg_galaxy_tmp.dos_event_local"
# ck客户端参数
ip="127.0.0.1"

View File

@@ -0,0 +1,53 @@
set distributed_ddl_task_timeout = 180;
-- 删除源表同步子表物化视图
-- 源表rename到历史表
RENAME TABLE tsg_galaxy_tmp.session_record_local to tsg_galaxy_tmp.session_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_tmp.security_event_local to tsg_galaxy_tmp.security_event_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_tmp.transaction_record_local to tsg_galaxy_tmp.transaction_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_tmp.voip_record_local to tsg_galaxy_tmp.voip_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_tmp.proxy_event_local to tsg_galaxy_tmp.proxy_event_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_tmp.dos_event_local to tsg_galaxy_tmp.dos_event_local_old on cluster ck_cluster;
drop table if exists tsg_galaxy_tmp.session_record_old ON CLUSTER ck_query;
drop table if exists tsg_galaxy_tmp.security_event_old ON CLUSTER ck_query;
drop table if exists tsg_galaxy_tmp.transaction_record_old ON CLUSTER ck_query;
drop table if exists tsg_galaxy_tmp.voip_record_old ON CLUSTER ck_query;
drop table if exists tsg_galaxy_tmp.proxy_event_old ON CLUSTER ck_query;
drop table if exists tsg_galaxy_tmp.dos_event_old ON CLUSTER ck_query;
-- 创建源分布式表old
create table IF NOT EXISTS tsg_galaxy_tmp.session_record_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,session_record_local_old,rand());
create table IF NOT EXISTS tsg_galaxy_tmp.security_event_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,security_event_local_old,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.transaction_record_old ON CLUSTER ck_query(
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,transaction_record_local_old,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.voip_record_old ON CLUSTER ck_query(
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,voip_record_local_old,rand());
create table IF NOT EXISTS tsg_galaxy_tmp.proxy_event_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,proxy_event_local_old,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.dos_event_old ON CLUSTER ck_query(
log_id UInt64,
profile_id UInt64,
start_time Int64
) ENGINE = Distributed(ck_cluster,tsg_galaxy_tmp,dos_event_local_old,rand());

View File

@@ -1,46 +1,47 @@
set distributed_ddl_task_timeout = 180;
-- 删除源表同步子表物化视图
create database if not exists tsg_galaxy_tmp on cluster ck_cluster;
create database if not exists tsg_galaxy_tmp on cluster ck_query;
-- 源表rename到历史表
RENAME TABLE tsg_galaxy_v3.session_record_local to tsg_galaxy_tmp.session_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.security_event_local to tsg_galaxy_tmp.security_event_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.transaction_record_local to tsg_galaxy_tmp.transaction_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.voip_record_local to tsg_galaxy_tmp.voip_record_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.proxy_event_local to tsg_galaxy_tmp.proxy_event_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.dos_event_local to tsg_galaxy_tmp.dos_event_local_old on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.session_record_local to tsg_galaxy_tmp.session_record_local on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.security_event_local to tsg_galaxy_tmp.security_event_local on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.transaction_record_local to tsg_galaxy_tmp.transaction_record_local on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.voip_record_local to tsg_galaxy_tmp.voip_record_local on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.proxy_event_local to tsg_galaxy_tmp.proxy_event_local on cluster ck_cluster;
RENAME TABLE tsg_galaxy_v3.dos_event_local to tsg_galaxy_tmp.dos_event_local on cluster ck_cluster;
-- 创建源分布式表old
create table IF NOT EXISTS tsg_galaxy_tmp.session_record_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,session_record_local_old,rand());
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,session_record_local,rand());
create table IF NOT EXISTS tsg_galaxy_tmp.security_event_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,security_event_local_old,rand());
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,security_event_local,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.transaction_record_old ON CLUSTER ck_query(
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,transaction_record_local_old,rand());
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,transaction_record_local,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.voip_record_old ON CLUSTER ck_query(
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,voip_record_local_old,rand());
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,voip_record_local,rand());
create table IF NOT EXISTS tsg_galaxy_tmp.proxy_event_old ON CLUSTER ck_query (
common_recv_time Int64,
common_log_id UInt64
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,proxy_event_local_old,rand());
) ENGINE =Distributed(ck_cluster,tsg_galaxy_tmp,proxy_event_local,rand());
CREATE TABLE IF NOT EXISTS tsg_galaxy_tmp.dos_event_old ON CLUSTER ck_query(
log_id UInt64,
profile_id UInt64,
start_time Int64
) ENGINE = Distributed(ck_cluster,tsg_galaxy_tmp,dos_event_local_old,rand());
) ENGINE = Distributed(ck_cluster,tsg_galaxy_tmp,dos_event_local,rand());

View File

@@ -1,70 +1,84 @@
由于各环境当前使用tsg版本与升级的版本均不同故在此提供通用步骤因主键与字段不同旧版本统一升级至23.07版本进行处理
由于各环境当前使用tsg版本与升级的版本均不同,故在此提供通用步骤,因主键与字段不同,旧版本统一升级至23.07版本进行处理,为及时接入数据,离线迁移操作在tmp数据库进行。
具体步骤:
Step1 :停止入库任务。
Step2 旧版本clickhouse库表升级到23.07版本
Step3 tsg_galaxy_tmp数据库新建24.02版本库表,修改建表语句中数据库名tsg_galaxy_v3->tsg_galaxy_tmp
Step4 23.07版本库表迁移至tsg_galaxy_tmp数据库
Step5 : tsg_galaxy_v3数据库新建目标版本库表如24.04
Step6 : 启动入库任务->tsg_galaxy_v3
Step2 旧版本clickhouse库表迁移至tsg_galaxy_tmp,验证成功后删除tsg_galaxy_v3数据库
Step3 : tsg_galaxy_v3数据库新建目标版本库表如24.04
Step4 : 启动入库任务->tsg_galaxy_v3
Step5 : tsg_galaxy_tmp数据库表升级到23.07修改升级语句中数据库名tsg_galaxy_v3->tsg_galaxy_tmp,升级验证成功后重命名为old表。
Step6 tsg_galaxy_tmp数据库新建24.02版本库表,修改建表语句中数据库名tsg_galaxy_v3->tsg_galaxy_tmp
Step7 : 迁移脚本迁移tsg_galaxy_tmp(23.07)->tsg_galaxy_tmp(24.02)
Step8 : 升级tsg_galaxy_tmp(24.02)->升级tsg_galaxy_tmp目标版本如24.04
Step9 : 命令迁移tsg_galaxy_tmp目标版本如24.04->tsg_galaxy_v3目标版本如24.04,按照partition手动迁移
说明
请按步骤依次执行执行脚本报错时联系研发处理后再执行之后的步骤。
请按步骤依次执行,执行脚本报错时联系研发处理后再执行之后的步骤。
所有ck步骤都需要在query节点执行
执行所有sql语句之前需要停止日志留存调度任务确保ck中无分布式ddl语句H执行否则执行的sql会阻塞住影响后续步骤执行
验证sql需要在query节点执行
执行所有sql语句之前需要停止日志留存调度任务,确保ck中无分布式ddl语句执行,否则执行的sql会阻塞住,影响后续步骤执行
验证sql需要在所有query节点执行
clickhouse-client -h 127.0.0.1 --port 9001 -m -u default --password ****** --query "select query from system.distributed_ddl_queue where status =0 limit 1"
若返回结果为空则可执行升级步骤否则需要等待。
若返回结果为空则可执行升级步骤,否则需要等待。
一、停止旧表ck入库任务
停止旧表ck入库任务
二、旧版本clickhouse库表升级到23.07版本,依次执行版本升级语句
二、旧版本clickhouse库表迁移至tsg_galaxy_tmp
1.查看迁移前v3库表数据量
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < cat_v3_old_table_row_count.sql
三、临时库初始化24.02版本库表
1.执行2402版本初始化建表语句
2.执行迁移sql
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < move_v3_to_tmp.sql
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < init_tsg_galaxy_tmp_24_02_table.sql
2.校验表结构
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < check_tsg_galaxy_tmp_24_02_table.sql
无报错信息说明校验通过
23.07版本库表迁移至tsg_galaxy_tmp数据库
1.迁移sql
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < move_v3_2307_to_tmp_2307.sql
2.查看tmp库old表数据量
3.查看tmp库old表数据量
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < cat_tmp_old_table_row_count.sql
tsg_galaxy_v3数据库新建目标版本库表
4.数据量与原数据量一致,可删除数据库tsg_galaxy_v3
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 --query "drop database if exists tsg_galaxy_v3 on cluster ck_cluster "
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 --query "drop database if exists tsg_galaxy_v3 on cluster ck_query "
tsg_galaxy_v3数据库新建目标版本库表并进行校验
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < 对应版本初始化sql
启动ck入库任务
启动ck入库任务
1.启动目标版本ck入库任务
tsg_galaxy_tmp数据库表升级到23.07,升级验证成功后重命名为old表
1.tsg_galaxy_tmp旧版本clickhouse库表升级到23.07版本注意所有版本升级sql需要将tsg_galaxy_v3替换tsg_galaxy_tmp,包括校验sql,依次执行版本升级语句,并进行校验
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < 各版本升级sql
2.验证成功后重命名为old表
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < move_tmp_2307_to_tmp_2307_old.sql
3.查看tmp库old表数据量
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < cat_tmp_old_table_row_count.sql
临时库初始化24.02版本库表
1.执行2402版本初始化建表语句
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < init_tsg_galaxy_tmp_24_02_table.sql
2.校验表结构
clickhouse-client -h 127.0.0.1 --port 9001 -m -n -u default --password ****** --distributed_ddl_task_timeout 180 < check_tsg_galaxy_tmp_24_02_table.sql
无报错信息说明校验通过
离线脚本同步历史数据至临时数据库2402版本库表
在query节点执行以下步骤iplist.txt中为ck所有data节点ip地址
在query节点执行以下步骤,iplist.txt中为ck所有data节点ip地址
步骤描述
1.进入migrate_table_2402文件夹,使脚本可执行
@@ -81,7 +95,7 @@ chmod +x ./*.sh
2.选择迁移某个表同步需要时间区间的数据时间区间:实时同步任务开始时间向前推n天, 实时同步任务开始时间)时间区间为左闭右开不包含结束时间点
2.选择迁移某个表,同步需要时间区间的数据,时间区间:实时同步任务开始时间向前推n天, 实时同步任务开始时间),时间区间为左闭右开,不包含结束时间点
# 迁移security_event表
@@ -89,7 +103,7 @@ chmod +x ./*.sh
3.监控data节点迁移情况所有表迁移完成后确认每个节点同步数据成功/失败批次数如有失败批次确认是否需要处理
3.监控data节点迁移情况,所有表迁移完成后,确认每个节点同步数据成功/失败批次数,如有失败批次确认是否需要处理
# 监控security_event表迁移
@@ -97,7 +111,7 @@ chmod +x ./*.sh
4.选择下个张需要迁移的表重复2-4步骤支持选择迁移的表有: security_event, monitor_event, session_record, transaction_record, voip_record, proxy_event, dos_event
4.选择下个张需要迁移的表,重复2-4步骤支持选择迁移的表有: security_event, monitor_event, session_record, transaction_record, voip_record, proxy_event, dos_event
迁移和监控各个表执行命令示例
@@ -143,8 +157,8 @@ chmod +x ./*.sh
./03_monitor_migrate_table.sh dos_event
迁移日志无报错数据迁移完成
如果有数据迁移失败批次查看新老表迁移数据量对应情况(ck每台data节点)
迁移日志无报错,数据迁移完成
如果有数据迁移失败批次,查看新老表迁移数据量对应情况(ck每台data节点)
-- security_event