## 6.2、版本升级手册 注意: - 如果想升级至具体版本,需要将你当前版本至你期望使用版本的变更统统执行一遍,然后才能正常使用。 - 如果中间某个版本没有升级信息,则表示该版本直接替换安装包即可从前一个版本升级至当前版本。 ### 6.2.0、升级至 `master` 版本 暂无 ### 6.2.1、升级至 `v3.0.1` 版本 **ES 索引模版** ```bash # 新增 ks_kafka_zookeeper_metric 索引模版。 # 可通过再次执行 bin/init_es_template.sh 脚本,创建该索引模版。 # 索引模版内容 PUT _template/ks_kafka_zookeeper_metric { "order" : 10, "index_patterns" : [ "ks_kafka_zookeeper_metric*" ], "settings" : { "index" : { "number_of_shards" : "10" } }, "mappings" : { "properties" : { "routingValue" : { "type" : "text", "fields" : { "keyword" : { "ignore_above" : 256, "type" : "keyword" } } }, "clusterPhyId" : { "type" : "long" }, "metrics" : { "properties" : { "AvgRequestLatency" : { "type" : "double" }, "MinRequestLatency" : { "type" : "double" }, "MaxRequestLatency" : { "type" : "double" }, "OutstandingRequests" : { "type" : "double" }, "NodeCount" : { "type" : "double" }, "WatchCount" : { "type" : "double" }, "NumAliveConnections" : { "type" : "double" }, "PacketsReceived" : { "type" : "double" }, "PacketsSent" : { "type" : "double" }, "EphemeralsCount" : { "type" : "double" }, "ApproximateDataSize" : { "type" : "double" }, "OpenFileDescriptorCount" : { "type" : "double" }, "MaxFileDescriptorCount" : { "type" : "double" } } }, "key" : { "type" : "text", "fields" : { "keyword" : { "ignore_above" : 256, "type" : "keyword" } } }, "timestamp" : { "format" : "yyyy-MM-dd HH:mm:ss Z||yyyy-MM-dd HH:mm:ss||yyyy-MM-dd HH:mm:ss.SSS Z||yyyy-MM-dd HH:mm:ss.SSS||yyyy-MM-dd HH:mm:ss,SSS||yyyy/MM/dd HH:mm:ss||yyyy-MM-dd HH:mm:ss,SSS Z||yyyy/MM/dd HH:mm:ss,SSS Z||epoch_millis", "type" : "date" } } }, "aliases" : { } } ``` **SQL 变更** ```sql DROP TABLE IF EXISTS `ks_km_zookeeper`; CREATE TABLE `ks_km_zookeeper` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `cluster_phy_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '物理集群ID', `host` varchar(128) NOT NULL DEFAULT '' COMMENT 'zookeeper主机名', `port` int(16) NOT NULL DEFAULT '-1' COMMENT 'zookeeper端口', `role` varchar(16) NOT NULL DEFAULT '' COMMENT '角色, leader follower observer', `version` varchar(128) NOT NULL DEFAULT '' COMMENT 'zookeeper版本', `status` int(16) NOT NULL DEFAULT '0' COMMENT '状态: 1存活,0未存活,11存活但是4字命令使用不了', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uniq_cluster_phy_id_host_port` (`cluster_phy_id`,`host`, `port`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Zookeeper信息表'; DROP TABLE IF EXISTS `ks_km_group`; CREATE TABLE `ks_km_group` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `cluster_phy_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群id', `name` varchar(192) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT 'Group名称', `member_count` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '成员数', `topic_members` text CHARACTER SET utf8 COMMENT 'group消费的topic列表', `partition_assignor` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '分配策略', `coordinator_id` int(11) NOT NULL COMMENT 'group协调器brokerId', `type` int(11) NOT NULL COMMENT 'group类型 0:consumer 1:connector', `state` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT '' COMMENT '状态', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), UNIQUE KEY `uniq_cluster_phy_id_name` (`cluster_phy_id`,`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Group信息表'; ``` --- ### 6.2.2、升级至 `v3.0.0` 版本 **SQL 变更** ```sql ALTER TABLE `ks_km_physical_cluster` ADD COLUMN `zk_properties` TEXT NULL COMMENT 'ZK配置' AFTER `jmx_properties`; ``` --- ### 6.2.3、升级至 `v3.0.0-beta.2`版本 **配置变更** ```yaml # 新增配置 spring: logi-security: # know-streaming 依赖的 logi-security 模块的数据库的配置,默认与 know-streaming 的数据库配置保持一致即可 login-extend-bean-name: logiSecurityDefaultLoginExtendImpl # 使用的登录系统Service的Bean名称,无需修改 # 线程池大小相关配置,在task模块中,新增了三类线程池, # 从而减少不同类型任务之间的相互影响,以及减少对logi-job内的线程池的影响 thread-pool: task: # 任务模块的配置 metrics: # metrics采集任务配置 thread-num: 18 # metrics采集任务线程池核心线程数 queue-size: 180 # metrics采集任务线程池队列大小 metadata: # metadata同步任务配置 thread-num: 27 # metadata同步任务线程池核心线程数 queue-size: 270 # metadata同步任务线程池队列大小 common: # 剩余其他任务配置 thread-num: 15 # 剩余其他任务线程池核心线程数 queue-size: 150 # 剩余其他任务线程池队列大小 # 删除配置,下列配置将不再使用 thread-pool: task: # 任务模块的配置 heaven: # 采集任务配置 thread-num: 20 # 采集任务线程池核心线程数 queue-size: 1000 # 采集任务线程池队列大小 ``` **SQL 变更** ```sql -- 多集群管理权限2022-09-06新增 INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2000', '多集群管理查看', '1593', '1', '2', '多集群管理查看', '0', 'know-streaming'); INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2002', 'Topic-迁移副本', '1593', '1', '2', 'Topic-迁移副本', '0', 'know-streaming'); INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2004', 'Topic-扩缩副本', '1593', '1', '2', 'Topic-扩缩副本', '0', 'know-streaming'); INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2006', 'Cluster-LoadReBalance-周期均衡', '1593', '1', '2', 'Cluster-LoadReBalance-周期均衡', '0', 'know-streaming'); INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2008', 'Cluster-LoadReBalance-立即均衡', '1593', '1', '2', 'Cluster-LoadReBalance-立即均衡', '0', 'know-streaming'); INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('2010', 'Cluster-LoadReBalance-设置集群规格', '1593', '1', '2', 'Cluster-LoadReBalance-设置集群规格', '0', 'know-streaming'); -- 系统管理权限2022-09-06新增 INSERT INTO `logi_security_permission` (`id`, `permission_name`, `parent_id`, `leaf`, `level`, `description`, `is_delete`, `app_name`) VALUES ('3000', '系统管理查看', '1595', '1', '2', '系统管理查看', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2000', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2002', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2004', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2006', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2008', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '2010', '0', 'know-streaming'); INSERT INTO `logi_security_role_permission` (`role_id`, `permission_id`, `is_delete`, `app_name`) VALUES ('1677', '3000', '0', 'know-streaming'); -- 修改字段长度 ALTER TABLE `logi_security_oplog` CHANGE COLUMN `operator_ip` `operator_ip` VARCHAR(64) NOT NULL COMMENT '操作者ip' , CHANGE COLUMN `operator` `operator` VARCHAR(64) NULL DEFAULT NULL COMMENT '操作者账号' , CHANGE COLUMN `operate_page` `operate_page` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '操作页面' , CHANGE COLUMN `operate_type` `operate_type` VARCHAR(64) NOT NULL COMMENT '操作类型' , CHANGE COLUMN `target_type` `target_type` VARCHAR(64) NOT NULL COMMENT '对象分类' , CHANGE COLUMN `target` `target` VARCHAR(1024) NOT NULL COMMENT '操作对象' , CHANGE COLUMN `operation_methods` `operation_methods` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '操作方式' ; ``` --- ### 6.2.4、升级至 `v3.0.0-beta.1`版本 **SQL 变更** 1、在`ks_km_broker`表增加了一个监听信息字段。 2、为`logi_security_oplog`表 operation_methods 字段设置默认值''。 因此需要执行下面的 sql 对数据库表进行更新。 ```sql ALTER TABLE `ks_km_broker` ADD COLUMN `endpoint_map` VARCHAR(1024) NOT NULL DEFAULT '' COMMENT '监听信息' AFTER `update_time`; ALTER TABLE `logi_security_oplog` ALTER COLUMN `operation_methods` set default ''; ``` --- ### 6.2.5、`2.x`版本 升级至 `v3.0.0-beta.0`版本 **升级步骤:** 1. 依旧使用**`2.x 版本的 DB`**,在上面初始化 3.0.0 版本所需数据库表结构及数据; 2. 将 2.x 版本中的集群,在 3.0.0 版本,手动逐一接入; 3. 将 Topic 业务数据,迁移至 3.0.0 表中,详见下方 SQL; **注意事项** - 建议升级 3.0.0 版本过程中,保留 2.x 版本的使用,待 3.0.0 版本稳定使用后,再下线 2.x 版本; - 3.0.0 版本仅需要`集群信息`及`Topic的描述信息`。2.x 版本的 DB 的其他数据 3.0.0 版本都不需要; - 部署 3.0.0 版本之后,集群、Topic 等指标数据都为空,3.0.0 版本会周期进行采集,运行一段时间之后就会有该数据了,因此不会将 2.x 中的指标数据进行迁移; **迁移数据** ```sql -- 迁移Topic的备注信息。 -- 需在 3.0.0 部署完成后,再执行该SQL。 -- 考虑到 2.x 版本中还存在增量数据,因此建议改SQL周期执行,是的增量数据也能被迁移至 3.0.0 版本中。 UPDATE ks_km_topic INNER JOIN (SELECT topic.cluster_id AS cluster_id, topic.topic_name AS topic_name, topic.description AS description FROM topic WHERE description != '' ) AS t ON ks_km_topic.cluster_phy_id = t.cluster_id AND ks_km_topic.topic_name = t.topic_name AND ks_km_topic.id > 0 SET ks_km_topic.description = t.description; ```