From 6bc0b06ddf3a5aff6ae098c83513354d0d9a4ba0 Mon Sep 17 00:00:00 2001 From: iSecloud <869820505@qq.com> Date: Thu, 29 Feb 2024 15:25:25 +0800 Subject: [PATCH 01/37] =?UTF-8?q?fix(backend):=20dbha=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9riak=E7=9A=84=E6=8E=A2=E6=B5=8B=20#3412?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../flow/utils/cloud/script_template/dbha_template.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dbm-ui/backend/flow/utils/cloud/script_template/dbha_template.py b/dbm-ui/backend/flow/utils/cloud/script_template/dbha_template.py index ce25c6a138..e8ac2dfa67 100644 --- a/dbm-ui/backend/flow/utils/cloud/script_template/dbha_template.py +++ b/dbm-ui/backend/flow/utils/cloud/script_template/dbha_template.py @@ -20,6 +20,7 @@ log_compress: true agent_conf: active_db_type: [ + "riak", "tendbha", "tendbcluster", "TwemproxyRedisInstance", @@ -85,6 +86,8 @@ timeout: 10 redis: timeout: 10 + riak: + timeout: 10 name_services: dns_conf: host: "{{nginx_domain}}" @@ -146,6 +149,7 @@ log_compress: true agent_conf: active_db_type: [ + "riak", "tendbha", "tendbcluster", "TwemproxyRedisInstance", @@ -211,6 +215,8 @@ timeout: 10 redis: timeout: 10 + riak: + timeout: 10 name_services: dns_conf: host: "{{nginx_domain}}" From 7b2d5aab430a349d48941793dfa99d4fa6ae8be6 Mon Sep 17 00:00:00 2001 From: xfwduke Date: Fri, 1 Mar 2024 16:03:46 +0800 Subject: [PATCH 02/37] =?UTF-8?q?fix(mysql):=20=E4=BC=98=E5=8C=96mysql-mon?= =?UTF-8?q?itor=E5=9C=BA=E6=99=AF=E5=BF=AB=E7=85=A7=E7=AD=96=E7=95=A5=20cl?= =?UTF-8?q?ose=20#3421?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mysql/db-tools/mysql-monitor/cmd/init.go | 7 +- .../db-tools/mysql-monitor/config2sql.pl | 2 + .../db-tools/mysql-monitor/items-config.sql | 60 ++++----- .../db-tools/mysql-monitor/items-config.yaml | 2 +- .../scenesnapshot/engineinnodbstatus.go | 6 +- .../internal/archivescenes/init.go | 84 ++++++++++++ .../scenesnapshot/internal/tarball/init.go | 122 ++++++++++++++---- .../itemscollect/scenesnapshot/processlist.go | 6 +- 8 files changed, 229 insertions(+), 60 deletions(-) create mode 100644 dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes/init.go diff --git a/dbm-services/mysql/db-tools/mysql-monitor/cmd/init.go b/dbm-services/mysql/db-tools/mysql-monitor/cmd/init.go index ab84eb5fe3..714351ee27 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/cmd/init.go +++ b/dbm-services/mysql/db-tools/mysql-monitor/cmd/init.go @@ -58,7 +58,12 @@ func initLogger(cfg *config.LogConfig) { } } - ioWriters = append(ioWriters, &lumberjack.Logger{Filename: logFile}) + ioWriters = append(ioWriters, &lumberjack.Logger{ + Filename: logFile, + MaxAge: 2, + //MaxBackups: 2, + Compress: true, + }) } handleOpt := slog.HandlerOptions{AddSource: cfg.Source} diff --git a/dbm-services/mysql/db-tools/mysql-monitor/config2sql.pl b/dbm-services/mysql/db-tools/mysql-monitor/config2sql.pl index eb0fcac23c..0b85686406 100755 --- a/dbm-services/mysql/db-tools/mysql-monitor/config2sql.pl +++ b/dbm-services/mysql/db-tools/mysql-monitor/config2sql.pl @@ -10,6 +10,8 @@ my $item_value = encode_json($item); $item_value =~ s/"enable":"1"/"enable":true/; $item_value =~ s/"enable":"0"/"enable":false/; + $item_value =~ s/"enable":""/"enable":false/; + my $sql = sprintf(q#REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, diff --git a/dbm-services/mysql/db-tools/mysql-monitor/items-config.sql b/dbm-services/mysql/db-tools/mysql-monitor/items-config.sql index ffefc4a8ed..bb7f162e97 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/items-config.sql +++ b/dbm-services/mysql/db-tools/mysql-monitor/items-config.sql @@ -1,31 +1,31 @@ DELETE FROM tb_config_name_def WHERE namespace = 'tendb' AND conf_type = 'mysql_monitor' AND conf_file = 'items-config.yaml'; -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'character-consistency', 'STRING', '{"role":[],"schedule":"0 0 14 * * 1","machine_type":["single","backend","remote","spider"],"name":"character-consistency","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'routine-definer', 'STRING', '{"schedule":"0 0 15 * * 1","role":[],"machine_type":["single","backend","remote"],"name":"routine-definer","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'view-definer', 'STRING', '{"schedule":"0 0 15 * * 1","role":[],"name":"view-definer","machine_type":["single","backend","remote"],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'trigger-definer', 'STRING', '{"schedule":"0 0 15 * * 1","role":[],"machine_type":["single","backend","remote"],"name":"trigger-definer","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'engine', 'STRING', '{"role":[],"schedule":"0 0 12 * * *","machine_type":["single","backend","remote"],"name":"engine","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ext3-check', 'STRING', '{"role":[],"schedule":"0 0 16 * * 1","machine_type":["single","backend","remote"],"name":"ext3-check","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ibd-statistic', 'STRING', '{"schedule":"0 0 14 * * 1","role":["slave"],"name":"ibd-statistic","machine_type":["single","backend","remote"],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'master-slave-heartbeat', 'STRING', '{"enable":true,"role":["master","repeater","slave"],"schedule":"@every 1m","machine_type":["backend","remote"],"name":"master-slave-heartbeat"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-config-diff', 'STRING', '{"schedule":"0 5 10 * * *","role":[],"name":"mysql-config-diff","machine_type":["single","backend","remote","spider"],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-connlog-size', 'STRING', '{"machine_type":["single","backend","remote","spider"],"name":"mysql-connlog-size","schedule":"0 0 12 * * *","role":[],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-connlog-rotate', 'STRING', '{"enable":true,"schedule":"0 30 23 * * *","role":[],"machine_type":["single","backend","remote","spider"],"name":"mysql-connlog-rotate"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-err-notice', 'STRING', '{"enable":true,"role":[],"schedule":"@every 1m","machine_type":["single","backend","remote"],"name":"mysql-err-notice"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-err-critical', 'STRING', '{"machine_type":["single","backend","remote"],"name":"mysql-err-critical","role":[],"schedule":"@every 1m","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-notice', 'STRING', '{"schedule":"@every 1m","role":[],"machine_type":["spider"],"name":"spider-err-notice","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-warn', 'STRING', '{"schedule":"@every 1m","role":[],"machine_type":["spider"],"name":"spider-err-warn","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-critical', 'STRING', '{"enable":true,"machine_type":["spider"],"name":"spider-err-critical","role":[],"schedule":"@every 1m"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-lock', 'STRING', '{"enable":true,"role":[],"schedule":"@every 1m","name":"mysql-lock","machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-inject', 'STRING', '{"enable":true,"schedule":"@every 1m","role":[],"machine_type":["single","backend","spider"],"name":"mysql-inject"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'proxy-backend', 'STRING', '{"enable":true,"schedule":"@every 1m","role":[],"machine_type":["proxy"],"name":"proxy-backend"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'proxy-user-list', 'STRING', '{"name":"proxy-user-list","machine_type":["proxy"],"schedule":"@every 1m","role":[],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'rotate-slowlog', 'STRING', '{"enable":true,"schedule":"0 55 23 * * *","role":[],"name":"rotate-slowlog","machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'slave-status', 'STRING', '{"role":["slave","repeater"],"schedule":"@every 1m","name":"slave-status","machine_type":["backend","remote"],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ctl-replicate', 'STRING', '{"schedule":"@every 1m","role":["spider_master"],"machine_type":["spider"],"name":"ctl-replicate","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-remote', 'STRING', '{"role":[],"schedule":"@every 1m","name":"spider-remote","machine_type":["spider"],"enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-table-schema-consistency', 'STRING', '{"schedule":"0 10 1 * * *","role":["spider_master"],"machine_type":["spider"],"name":"spider-table-schema-consistency","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'dbha-heartbeat', 'STRING', '{"enable":true,"schedule":"@every 1m","role":[],"name":"dbha-heartbeat","machine_type":["spider","remote","backend"]}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'unique-ctl-master', 'STRING', '{"schedule":"@every 1m","role":["spider_master"],"machine_type":["spider"],"name":"unique-ctl-master","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'scene-snapshot', 'STRING', '{"enable":true,"name":"scene-snapshot","machine_type":["spider","remote","backend","single"],"role":[],"schedule":"@every 1m"}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-timezone-change', 'STRING', '{"name":"mysql-timezone-change","machine_type":["spider","remote","backend","single"],"role":[],"schedule":"@every 1m","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); -REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'sys-timezone-change', 'STRING', '{"schedule":"@every 1m","role":[],"machine_type":["spider","proxy","remote","backend","single"],"name":"sys-timezone-change","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'character-consistency', 'STRING', '{"role":[],"name":"character-consistency","schedule":"0 0 14 * * 1","enable":true,"machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'routine-definer', 'STRING', '{"role":[],"schedule":"0 0 15 * * 1","enable":true,"name":"routine-definer","machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'view-definer', 'STRING', '{"enable":true,"schedule":"0 0 15 * * 1","name":"view-definer","role":[],"machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'trigger-definer', 'STRING', '{"machine_type":["single","backend","remote"],"schedule":"0 0 15 * * 1","name":"trigger-definer","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'engine', 'STRING', '{"role":[],"enable":true,"schedule":"0 0 12 * * *","name":"engine","machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ext3-check', 'STRING', '{"role":[],"schedule":"0 0 16 * * 1","name":"ext3-check","enable":true,"machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ibd-statistic', 'STRING', '{"role":["slave"],"schedule":"0 0 14 * * 1","name":"ibd-statistic","enable":true,"machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'master-slave-heartbeat', 'STRING', '{"machine_type":["backend","remote"],"name":"master-slave-heartbeat","schedule":"@every 1m","enable":true,"role":["master","repeater","slave"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-config-diff', 'STRING', '{"machine_type":["single","backend","remote","spider"],"name":"mysql-config-diff","schedule":"0 5 10 * * *","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-connlog-size', 'STRING', '{"role":[],"schedule":"0 0 12 * * *","name":"mysql-connlog-size","enable":true,"machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-connlog-rotate', 'STRING', '{"role":[],"schedule":"0 30 23 * * *","name":"mysql-connlog-rotate","enable":true,"machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-err-notice', 'STRING', '{"role":[],"enable":true,"schedule":"@every 1m","name":"mysql-err-notice","machine_type":["single","backend","remote"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-err-critical', 'STRING', '{"machine_type":["single","backend","remote"],"name":"mysql-err-critical","schedule":"@every 1m","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-notice', 'STRING', '{"machine_type":["spider"],"name":"spider-err-notice","schedule":"@every 1m","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-warn', 'STRING', '{"machine_type":["spider"],"role":[],"name":"spider-err-warn","schedule":"@every 1m","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-err-critical', 'STRING', '{"machine_type":["spider"],"role":[],"schedule":"@every 1m","enable":true,"name":"spider-err-critical"}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-lock', 'STRING', '{"role":[],"name":"mysql-lock","schedule":"@every 1m","enable":true,"machine_type":["single","backend","remote","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-inject', 'STRING', '{"role":[],"name":"mysql-inject","schedule":"@every 1m","enable":true,"machine_type":["single","backend","spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'proxy-backend', 'STRING', '{"role":[],"schedule":"@every 1m","name":"proxy-backend","enable":true,"machine_type":["proxy"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'proxy-user-list', 'STRING', '{"machine_type":["proxy"],"schedule":"@every 1m","name":"proxy-user-list","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'rotate-slowlog', 'STRING', '{"machine_type":["single","backend","remote","spider"],"role":[],"schedule":"0 55 23 * * *","enable":true,"name":"rotate-slowlog"}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'slave-status', 'STRING', '{"machine_type":["backend","remote"],"role":["slave","repeater"],"schedule":"@every 1m","name":"slave-status","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'ctl-replicate', 'STRING', '{"machine_type":["spider"],"enable":true,"schedule":"@every 1m","name":"ctl-replicate","role":["spider_master"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-remote', 'STRING', '{"machine_type":["spider"],"role":[],"enable":true,"schedule":"@every 1m","name":"spider-remote"}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'spider-table-schema-consistency', 'STRING', '{"role":["spider_master"],"name":"spider-table-schema-consistency","schedule":"0 10 1 * * *","enable":true,"machine_type":["spider"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'dbha-heartbeat', 'STRING', '{"schedule":"@every 1m","enable":true,"name":"dbha-heartbeat","role":[],"machine_type":["spider","remote","backend"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'unique-ctl-master', 'STRING', '{"machine_type":["spider"],"enable":true,"schedule":"@every 1m","name":"unique-ctl-master","role":["spider_master"]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'scene-snapshot', 'STRING', '{"machine_type":["spider","remote","backend","single"],"enable":false,"schedule":"@every 1m","name":"scene-snapshot","role":[]}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'mysql-timezone-change', 'STRING', '{"machine_type":["spider","remote","backend","single"],"role":[],"schedule":"@every 1m","name":"mysql-timezone-change","enable":true}', '', 'MAP', 1, 0, 0, 0, 1); +REPLACE INTO tb_config_name_def( namespace, conf_type, conf_file, conf_name, value_type, value_default, value_allowed, value_type_sub, flag_status, flag_disable, flag_locked, flag_encrypt, need_restart) VALUES( 'tendb', 'mysql_monitor', 'items-config.yaml', 'sys-timezone-change', 'STRING', '{"machine_type":["spider","proxy","remote","backend","single"],"schedule":"@every 1m","name":"sys-timezone-change","enable":true,"role":[]}', '', 'MAP', 1, 0, 0, 0, 1); diff --git a/dbm-services/mysql/db-tools/mysql-monitor/items-config.yaml b/dbm-services/mysql/db-tools/mysql-monitor/items-config.yaml index 2f3ce33b46..33a221b8a3 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/items-config.yaml +++ b/dbm-services/mysql/db-tools/mysql-monitor/items-config.yaml @@ -210,7 +210,7 @@ role: - spider_master - name: scene-snapshot - enable: true + enable: false schedule: '@every 1m' machine_type: - spider diff --git a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/engineinnodbstatus.go b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/engineinnodbstatus.go index 12c52e0bd4..d7f0fc32ae 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/engineinnodbstatus.go +++ b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/engineinnodbstatus.go @@ -7,7 +7,7 @@ import ( "github.com/jmoiron/sqlx" "dbm-services/mysql/db-tools/mysql-monitor/pkg/config" - "dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball" + "dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes" ) type engineInnodbStatus struct { @@ -19,7 +19,7 @@ type engineInnodbStatus struct { var engineInnodbStatusName = "engine-innodb-status" func engineInnodbStatusScene(db *sqlx.DB) error { - err := tarball.DeleteOld(engineInnodbStatusName, sceneBase, 1) + err := archivescenes.DeleteOld(engineInnodbStatusName, sceneBase, 1) if err != nil { return err } @@ -31,7 +31,7 @@ func engineInnodbStatusScene(db *sqlx.DB) error { content := fmt.Sprintf("Type:%s\nName:%s\nStatus:%s", res[0].Type, res[0].Name, res[0].Status) - err = tarball.Write(engineInnodbStatusName, sceneBase, []byte(content)) + err = archivescenes.Write(engineInnodbStatusName, sceneBase, []byte(content)) if err != nil { return err } diff --git a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes/init.go b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes/init.go new file mode 100644 index 0000000000..458c73b067 --- /dev/null +++ b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes/init.go @@ -0,0 +1,84 @@ +package archivescenes + +import ( + "compress/gzip" + "fmt" + "io/fs" + "os" + "path/filepath" + "strings" + "time" + + "dbm-services/mysql/db-tools/mysql-monitor/pkg/config" +) + +func DeleteOld(name string, basePath string, days int) error { + oldFiles, err := findBefore(name, basePath, days) + if err != nil { + return err + } + + for _, oldFile := range oldFiles { + err := os.RemoveAll(oldFile) + if err != nil { + return err + } + } + + return nil +} + +func findBefore(name string, basePath string, days int) (oldFiles []string, err error) { + t := time.Now().Add(time.Hour * time.Duration((1-days)*24)) + d := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location()) + + err = filepath.Walk(basePath, func(p string, i fs.FileInfo, e error) error { + if e != nil { + return e + } + if strings.HasPrefix(i.Name(), name) && i.ModTime().Before(d) { + oldFiles = append(oldFiles, p) + } + return nil + }) + + return +} + +func Write(name string, basePath string, content []byte) error { + now := time.Now() + + archivePath := filepath.Join( + basePath, + fmt.Sprintf("%s.%d.%s", + name, + config.MonitorConfig.Port, + now.Format("20060102"), + ), + ) + + err := os.MkdirAll(archivePath, 0777) + if err != nil { + return err + } + + filePath := filepath.Join(archivePath, fmt.Sprintf("%s.gz", now.Format("20060102150405"))) + file, err := os.OpenFile(filePath, os.O_CREATE|os.O_RDWR, 0777) + if err != nil { + return err + } + defer func() { + _ = file.Close() + }() + + gw := gzip.NewWriter(file) + _, err = gw.Write(content) + if err != nil { + return err + } + defer func() { + _ = gw.Close() + }() + + return nil +} diff --git a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball/init.go b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball/init.go index 7aacf873e0..0f9930508a 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball/init.go +++ b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball/init.go @@ -2,6 +2,8 @@ package tarball import ( "archive/tar" + "bytes" + "compress/gzip" "fmt" "io" "io/fs" @@ -10,6 +12,8 @@ import ( "strings" "time" + "github.com/pingcap/errors" + "dbm-services/mysql/db-tools/mysql-monitor/pkg/config" ) @@ -47,53 +51,127 @@ func findBefore(name string, basePath string, days int) (oldFiles []string, err } func Write(name string, basePath string, content []byte) error { - diskFile, err := os.OpenFile( + now := time.Now() + + return appendToTarGz( filepath.Join( basePath, - fmt.Sprintf("%s.%d.%s.tar", name, config.MonitorConfig.Port, time.Now().Format("20060102"))), - os.O_CREATE|os.O_RDWR, - 0777) + fmt.Sprintf("%s.%d.%s.tar.gz", + name, config.MonitorConfig.Port, now.Format("20060102")), + ), + now.Format("20060102150405"), + content, + now, + ) +} + +/* +在 golang 里面只能用这样别扭的办法来实现 +追加内容到已有的 tar.gz 文件 +原因是 +1. tar 文件末尾有 1k 的空记录, 追加的时候需要做 Seek +2. tar.gz 的操作要嵌套一层 gzip.Writer/Reader, golang 没办法在 Writer/Reader 上做随机访问 +3. 有一个 WriterSeeker interface, 自己实现其实也挺麻烦 +*/ +func readTarGz(filePath string) (content []byte, err error) { + content = []byte{} + + file, err := os.OpenFile(filePath, os.O_CREATE|os.O_RDWR, 0777) if err != nil { - return err + return nil, errors.AddStack(err) } defer func() { - _ = diskFile.Close() + _ = file.Close() }() - st, err := diskFile.Stat() + st, err := file.Stat() if err != nil { - return err + return nil, errors.AddStack(err) } + if st.Size() > 0 { + /* + 如果文件不为空 + 把解压后的内容读入 content + */ + gzReader, err := gzip.NewReader(file) + if err != nil { + return nil, err + } + defer func() { + _ = gzReader.Close() + }() - if st.Size() >= 1024 { - _, err = diskFile.Seek(-1024, io.SeekEnd) + content, err = io.ReadAll(gzReader) if err != nil { - return err + return nil, errors.AddStack(err) + } + + /* + content 的内容是 tar 文件内容 + 如果长度大于 1k, 则丢弃掉末尾的空 tar 记录 + */ + if len(content) >= 1024 { + content = content[:len(content)-1024] } } - tarBall := tar.NewWriter(diskFile) - defer func() { - _ = tarBall.Close() - }() + return content, nil +} - now := time.Now() - err = tarBall.WriteHeader(&tar.Header{ - Name: time.Now().Format("20060102150405"), +func appendToTarGz(tarGzPath string, appendFileName string, appendContent []byte, now time.Time) error { + legacyContent, err := readTarGz(tarGzPath) + if err != nil { + return errors.AddStack(err) + } + + /* + 把新增内容写到内存的 []byte 中 + legacyContent + */ + buf := bytes.NewBuffer(legacyContent) + tw := tar.NewWriter(buf) + + err = tw.WriteHeader(&tar.Header{ + Name: appendFileName, Mode: 0644, - Size: int64(len(content)), + Size: int64(len(appendContent)), ModTime: now, AccessTime: now, ChangeTime: now, }) if err != nil { - return err + return errors.AddStack(err) } + _, err = tw.Write(appendContent) + if err != nil { + _ = tw.Close() + return errors.AddStack(err) + } + _ = tw.Flush() + _ = tw.Close() - _, err = tarBall.Write(content) + /* + 以覆盖方式把追加后的全量内容回写到归档文件 + */ + file, err := os.OpenFile(tarGzPath, os.O_TRUNC|os.O_RDWR|os.O_CREATE, 0777) if err != nil { - return err + return errors.AddStack(err) } + defer func() { + _ = file.Close() + }() + + gw, err := gzip.NewWriterLevel(file, gzip.BestCompression) + if err != nil { + return errors.AddStack(err) + } + _, err = gw.Write(buf.Bytes()) + if err != nil { + return errors.AddStack(err) + } + defer func() { + _ = gw.Close() + }() return nil } diff --git a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/processlist.go b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/processlist.go index 7353b2038f..34b26e403a 100644 --- a/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/processlist.go +++ b/dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/processlist.go @@ -11,7 +11,7 @@ import ( "github.com/spf13/cast" "dbm-services/mysql/db-tools/mysql-monitor/pkg/config" - "dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/tarball" + "dbm-services/mysql/db-tools/mysql-monitor/pkg/itemscollect/scenesnapshot/internal/archivescenes" ) type mysqlProcess struct { @@ -45,7 +45,7 @@ func queryProcesslist(db *sqlx.DB) (res []*mysqlProcess, err error) { } func processListScene(db *sqlx.DB) error { - err := tarball.DeleteOld(processListName, sceneBase, 1) + err := archivescenes.DeleteOld(processListName, sceneBase, 1) if err != nil { return err } @@ -77,7 +77,7 @@ func processListScene(db *sqlx.DB) error { table.Render() - err = tarball.Write(processListName, sceneBase, b.Bytes()) + err = archivescenes.Write(processListName, sceneBase, b.Bytes()) if err != nil { return err } From c420988fe33d3ef0ece2c41d608d1f14ca34ca67 Mon Sep 17 00:00:00 2001 From: Austin <1344583166@qq.com> Date: Mon, 4 Mar 2024 11:45:12 +0800 Subject: [PATCH 03/37] =?UTF-8?q?fix(frontend):=20=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=BC=80=E5=8C=BA=E6=97=B6=E6=B7=BB=E5=8A=A0=E6=8E=88=E6=9D=83?= =?UTF-8?q?=E8=A7=84=E5=88=99=E9=99=90=E5=88=B6account=5Ftype=20#3435?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../RenderData/RenderPrivData/components/PermissionRule.vue | 2 ++ .../RenderData/RenderPrivData/components/PermissionRule.vue | 2 ++ 2 files changed, 4 insertions(+) diff --git a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue index 582ba2f5d6..f46fbe7c8a 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue @@ -174,6 +174,8 @@ nextTick(() => { tableRef.value.fetchData({ cluster_id: props.clusterId, + }, { + account_type: 'mysql', }); }); }); diff --git a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue index 0cdd545d75..0b5450f711 100644 --- a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue +++ b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderPrivData/components/PermissionRule.vue @@ -180,6 +180,8 @@ nextTick(() => { tableRef.value.fetchData({ cluster_id: props.clusterId, + }, { + account_type: 'tendbcluster', }); }); }); From 0e5e0236f877d4869901dded295e203ce755b486 Mon Sep 17 00:00:00 2001 From: Austin <1344583166@qq.com> Date: Fri, 1 Mar 2024 17:29:25 +0800 Subject: [PATCH 04/37] =?UTF-8?q?fix(frontend):=20spider=E9=9B=86=E7=BE=A4?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E5=88=A0=E9=99=A4=E5=BC=80=E5=85=B3=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=20#3423?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/spider-manage/list/components/list/Index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbm-ui/frontend/src/views/spider-manage/list/components/list/Index.vue b/dbm-ui/frontend/src/views/spider-manage/list/components/list/Index.vue index a7fdf145af..9a4c1253c7 100644 --- a/dbm-ui/frontend/src/views/spider-manage/list/components/list/Index.vue +++ b/dbm-ui/frontend/src/views/spider-manage/list/components/list/Index.vue @@ -613,7 +613,7 @@ text theme={theme} action-id="tendbcluster_destroy" - disabled={data.operationDisabled} + disabled={data.operationDisabled && !data.isOffline} permission={data.permission.tendbcluster_destroy} resource={data.id} class="mr-8" From b65fdfc3067b185a8340b802732ab93f278c309f Mon Sep 17 00:00:00 2001 From: xfwduke Date: Mon, 4 Mar 2024 12:10:11 +0800 Subject: [PATCH 05/37] =?UTF-8?q?fix(mysql):=20=E4=BF=AE=E5=A4=8Dtendbclus?= =?UTF-8?q?ter=E5=85=83=E6=95=B0=E6=8D=AE=E5=AF=BC=E5=85=A5init=20close=20?= =?UTF-8?q?#3437?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbm-ui/backend/flow/engine/controller/redis.py | 2 +- .../plugins/components/collections/spider/import_metadata.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dbm-ui/backend/flow/engine/controller/redis.py b/dbm-ui/backend/flow/engine/controller/redis.py index 5bf5b2ac95..507e34155d 100644 --- a/dbm-ui/backend/flow/engine/controller/redis.py +++ b/dbm-ui/backend/flow/engine/controller/redis.py @@ -33,10 +33,10 @@ from backend.flow.engine.bamboo.scene.redis.redis_instance_apply_flow import RedisInstanceApplyFlow from backend.flow.engine.bamboo.scene.redis.redis_keys_delete import RedisKeysDeleteFlow from backend.flow.engine.bamboo.scene.redis.redis_keys_extract import RedisKeysExtractFlow +from backend.flow.engine.bamboo.scene.redis.redis_predixy_cluster_apply_flow import TendisPlusApplyFlow from backend.flow.engine.bamboo.scene.redis.redis_predixy_config_servers_rewrite import ( RedisPredixyConfigServersRewriteFlow, ) -from backend.flow.engine.bamboo.scene.redis.redis_predixy_cluster_apply_flow import TendisPlusApplyFlow from backend.flow.engine.bamboo.scene.redis.redis_proxy_scale import RedisProxyScaleFlow from backend.flow.engine.bamboo.scene.redis.redis_remove_dts_server import RedisRemoveDtsServerFlow from backend.flow.engine.bamboo.scene.redis.redis_reupload_old_backup_records import RedisReuploadOldBackupRecordsFlow diff --git a/dbm-ui/backend/flow/plugins/components/collections/spider/import_metadata.py b/dbm-ui/backend/flow/plugins/components/collections/spider/import_metadata.py index 27059ade76..9de2fb8cfe 100644 --- a/dbm-ui/backend/flow/plugins/components/collections/spider/import_metadata.py +++ b/dbm-ui/backend/flow/plugins/components/collections/spider/import_metadata.py @@ -77,8 +77,8 @@ def _create_entries(cluster_json: Dict, cluster_obj: Cluster): class TenDBClusterImportMetadataService(BaseService): - def __init__(self): - super().__init__() + def __init__(self, name=None): + super().__init__(name=name) self.bk_biz_id = 0 self.db_module_id = 0 self.spider_spec: Spec = Spec() From d7ef145a805b8bbd27400f529b95f78a10580139 Mon Sep 17 00:00:00 2001 From: Austin <1344583166@qq.com> Date: Mon, 4 Mar 2024 15:55:16 +0800 Subject: [PATCH 06/37] =?UTF-8?q?fix(frontend):=20=E6=96=B0=E5=BB=BA?= =?UTF-8?q?=E5=BC=80=E5=8C=BA=E5=85=8B=E9=9A=86=E8=A1=A8=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E5=8E=BB=E9=99=A4=E5=BF=85=E9=80=89=20#3441?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/render-table/columns/select/index.vue | 2 +- .../views/mysql/openarea/template-create/Index.vue | 12 ++++++------ .../config-rule/components/RenderData/Index.vue | 2 ++ .../components/RenderData/RenderSchmalTable.vue | 10 ++-------- .../components/RenderData/RenderTableData.vue | 8 -------- .../spider-manage/openarea-template-create/Index.vue | 12 ++++++------ .../config-rule/components/RenderData/Index.vue | 2 ++ .../components/RenderData/RenderSchmalTable.vue | 10 ++-------- .../components/RenderData/RenderTableData.vue | 8 -------- 9 files changed, 21 insertions(+), 45 deletions(-) diff --git a/dbm-ui/frontend/src/components/render-table/columns/select/index.vue b/dbm-ui/frontend/src/components/render-table/columns/select/index.vue index c6e7f0e937..8a88425d63 100644 --- a/dbm-ui/frontend/src/components/render-table/columns/select/index.vue +++ b/dbm-ui/frontend/src/components/render-table/columns/select/index.vue @@ -155,7 +155,7 @@ .is-error { background-color: #fff0f1 !important; - :deep(input) { + :deep(.bk-input) { background-color: #fff0f1 !important; } diff --git a/dbm-ui/frontend/src/views/mysql/openarea/template-create/Index.vue b/dbm-ui/frontend/src/views/mysql/openarea/template-create/Index.vue index a44be7f856..ebe2e0daba 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/template-create/Index.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/template-create/Index.vue @@ -159,17 +159,17 @@ params.id = Number(route.params.id); } const handler = isEditMode ? updateOpenarea : createOpenarea; - handler(params).then(() => { + return handler(params).then(() => { messageSuccess(isEditMode ? t('编辑成功') : t('新建成功')); window.changeConfirm = false; router.push({ name: 'mysqlOpenareaTemplate', }); - }) - .finally(() => { - isSubmiting.value = false; - }); - }); + }); + }) + .finally(() => { + isSubmiting.value = false; + }); }; const handleReset = () => { diff --git a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/Index.vue b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/Index.vue index 26b51e46d4..611a550635 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/Index.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/Index.vue @@ -22,11 +22,13 @@ {{ t('克隆表结构') }} {{ t('克隆表数据') }} diff --git a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue index 1180b35aba..a5b89999f7 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue @@ -20,7 +20,6 @@ :list="dbNameList" multiple :placeholder="t('请选择')" - :rules="rules" show-select-all /> @@ -57,13 +56,6 @@ const dbNameList = shallowRef<{value: string, label: string}[]>([]); - const rules = [ - { - validator: (value: string[]) => value.length > 0, - message: t('克隆表结构不能为空'), - }, - ]; - const { loading: isLoading, run: fetchList, @@ -75,6 +67,8 @@ value: item, label: item, })); + // 默认全选 + modelValue.value = dbNameList.value.map(item => item.value); }, }); diff --git a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderTableData.vue b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderTableData.vue index fc77f8678c..1c1ad5658e 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderTableData.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/template-create/components/config-rule/components/RenderData/RenderTableData.vue @@ -20,7 +20,6 @@ :list="dbNameList" multiple :placeholder="t('请选择')" - :rules="rules" show-select-all /> @@ -54,13 +53,6 @@ const dbNameList = shallowRef<{value: string, label: string}[]>([]); - const rules = [ - { - validator: (value: string[]) => value.length > 0, - message: t('目标集群不能为空'), - }, - ]; - const { loading: isLoading, run: fetchList, diff --git a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/Index.vue b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/Index.vue index 26064c50c2..6daef13b5b 100644 --- a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/Index.vue +++ b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/Index.vue @@ -160,17 +160,17 @@ params.id = Number(route.params.id); } const handler = isEditMode ? updateOpenarea : createOpenarea; - handler(params).then(() => { + return handler(params).then(() => { messageSuccess(isEditMode ? t('编辑成功') : t('新建成功')); window.changeConfirm = false; router.push({ name: 'spiderOpenareaTemplate', }); - }) - .finally(() => { - isSubmiting.value = false; - }); - }); + }); + }) + .finally(() => { + isSubmiting.value = false; + }); }; const handleReset = () => { diff --git a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/Index.vue b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/Index.vue index 26b51e46d4..611a550635 100644 --- a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/Index.vue +++ b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/Index.vue @@ -22,11 +22,13 @@ {{ t('克隆表结构') }} {{ t('克隆表数据') }} diff --git a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue index 4228b9bf9f..bf7822d037 100644 --- a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue +++ b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderSchmalTable.vue @@ -20,7 +20,6 @@ :list="dbNameList" multiple :placeholder="t('请选择')" - :rules="rules" show-select-all /> @@ -60,13 +59,6 @@ const editRef = ref>(); const dbNameList = shallowRef<{value: string, label: string}[]>([]); - const rules = [ - { - validator: (value: string[]) => value.length > 0, - message: t('克隆表结构不能为空'), - }, - ]; - const { loading: isLoading, run: fetchList, @@ -78,6 +70,8 @@ value: item, label: item, })); + // 默认全选 + modelValue.value = dbNameList.value.map(item => item.value); }, }); diff --git a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderTableData.vue b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderTableData.vue index 061615bb33..432b6bcbc7 100644 --- a/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderTableData.vue +++ b/dbm-ui/frontend/src/views/spider-manage/openarea-template-create/components/config-rule/components/RenderData/RenderTableData.vue @@ -20,7 +20,6 @@ :list="dbNameList" multiple :placeholder="t('请选择')" - :rules="rules" show-select-all /> @@ -59,13 +58,6 @@ const editRef = ref>(); const dbNameList = shallowRef<{value: string, label: string}[]>([]); - const rules = [ - { - validator: (value: string[]) => value.length > 0, - message: t('目标集群不能为空'), - }, - ]; - const { loading: isLoading, run: fetchList, From f84f9b4c92225b25736315b5feaf8bb02796e40f Mon Sep 17 00:00:00 2001 From: fanfanyangyang Date: Fri, 23 Feb 2024 17:50:16 +0800 Subject: [PATCH 07/37] =?UTF-8?q?fix:=20=E6=96=B0=E5=A2=9E=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=A0=A1=E9=AA=8C=E5=B7=A1=E6=A3=80=5Friak=E9=87=8D?= =?UTF-8?q?=E5=90=AF=E4=BC=98=E5=8C=96=E7=9A=84=E5=8A=9F=E8=83=BD=20#3351?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ha-module/bk-dbha/templates/configmap.yaml | 3 +++ dbm-services/common/dbha/ha-module/ha.yaml | 3 +++ .../service/check_partition_base_func.go | 9 ++++++--- .../mysql/db-priv/service/accout_rule.go | 4 ++++ .../pkg/components/riak/deploy_monitor.go | 1 - .../dbactuator/pkg/components/riak/restart.go | 10 +++++++++- .../local_tasks/check_checksum.py | 7 ++++--- .../scene/riak/riak_cluster_apply_flow.py | 2 +- .../scene/riak/riak_cluster_destroy_flow.py | 1 - .../scene/riak/riak_cluster_migrate_flow.py | 17 ++++++++++++++++- 10 files changed, 46 insertions(+), 11 deletions(-) diff --git a/dbm-services/common/dbha/ha-module/bk-dbha/templates/configmap.yaml b/dbm-services/common/dbha/ha-module/bk-dbha/templates/configmap.yaml index 8d620650ff..4cebfe021b 100644 --- a/dbm-services/common/dbha/ha-module/bk-dbha/templates/configmap.yaml +++ b/dbm-services/common/dbha/ha-module/bk-dbha/templates/configmap.yaml @@ -10,6 +10,7 @@ data: active_db_type: [ "tendbha:backend", "tendbha:proxy", + "riak" ] city: "3" campus: "深圳" @@ -57,6 +58,8 @@ data: proxy_pass: "proxy-conn-pass" timeout: 10 redis: + riak: + timeout: 10 dns: bind_conf: host: "bind-api-host" diff --git a/dbm-services/common/dbha/ha-module/ha.yaml b/dbm-services/common/dbha/ha-module/ha.yaml index 8c1e77969b..fc7932e612 100644 --- a/dbm-services/common/dbha/ha-module/ha.yaml +++ b/dbm-services/common/dbha/ha-module/ha.yaml @@ -9,6 +9,7 @@ agent_conf: active_db_type: [ "tendbha:backend", "tendbha:proxy", + "riak" ] city: "3" campus: "深圳" @@ -59,6 +60,8 @@ db_conf: timeout: 10 redis: timeout: 10 + riak: + timeout: 10 password_conf: host: "bind-api-host" port: 80 diff --git a/dbm-services/mysql/db-partition/service/check_partition_base_func.go b/dbm-services/mysql/db-partition/service/check_partition_base_func.go index f8e98e375e..fedceab695 100644 --- a/dbm-services/mysql/db-partition/service/check_partition_base_func.go +++ b/dbm-services/mysql/db-partition/service/check_partition_base_func.go @@ -56,6 +56,8 @@ func (config *PartitionConfig) GetPartitionDbLikeTbLike(dbtype string, splitCnt } AddString(&addSqls, sql) if tb.Phase == online { + // 启用的分区规则,会执行删除历史分区 + // 禁用的分区规则,会新增分区,但是不会删除历史分区 sql, err = tb.GetDropPartitionSql() if err != nil { slog.Error("msg", "GetDropPartitionSql error", err) @@ -642,7 +644,7 @@ func CreatePartitionTicket(check Checker, objects []PartitionObject, zoneOffset zone, date, scheduler, "", ExecuteAsynchronous, check.ClusterType) } -// NeedPartition TODO +// NeedPartition 获取需要实施的分区规则 func NeedPartition(cronType string, clusterType string, zoneOffset int, cronDate string) ([]*Checker, error) { var configTb, logTb string var all, doNothing []*Checker @@ -657,10 +659,11 @@ func NeedPartition(cronType string, clusterType string, zoneOffset int, cronDate return nil, errors.New("不支持的db类型") } vzone := fmt.Sprintf("%+03d:00", zoneOffset) + // 集群被offline时,其分区规则也被禁用,规则不会被定时任务执行 vsql := fmt.Sprintf( "select id as config_id, bk_biz_id, cluster_id, immute_domain, port, bk_cloud_id,"+ - " '%s' as cluster_type from `%s`.`%s` where time_zone='%s' order by 2,3;", - clusterType, viper.GetString("db.name"), configTb, vzone) + " '%s' as cluster_type from `%s`.`%s` where time_zone='%s' and phase in ('%s','%s') order by 2,3;", + clusterType, viper.GetString("db.name"), configTb, vzone, online, offline) slog.Info(vsql) err := model.DB.Self.Raw(vsql).Scan(&all).Error if err != nil { diff --git a/dbm-services/mysql/db-priv/service/accout_rule.go b/dbm-services/mysql/db-priv/service/accout_rule.go index ddb09d54be..1c8db06666 100644 --- a/dbm-services/mysql/db-priv/service/accout_rule.go +++ b/dbm-services/mysql/db-priv/service/accout_rule.go @@ -49,6 +49,10 @@ func (m *BkBizId) QueryAccountRule() ([]*AccountRuleSplitUser, int64, error) { if err != nil { return nil, count, err } + // 没有查到帐号规则 + if len(acountList) == 0 { + return nil, count, nil + } for _, id := range acountList { accountIds = fmt.Sprintf("%d,%s", id.AccountId, accountIds) } diff --git a/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/deploy_monitor.go b/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/deploy_monitor.go index 1f6206167f..e4507aa3d0 100644 --- a/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/deploy_monitor.go +++ b/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/deploy_monitor.go @@ -191,7 +191,6 @@ func (i *DeployMonitorComp) GenerateCrondConfigYaml() (err error) { logger.Error("generate crond runtime.yaml error: %s", err.Error()) return err } - // todo mysql-crond 模版中jobs_user不是固定值 cmd := fmt.Sprintf(`sed -i "s/jobs_user: mysql/jobs_user: root/g" %s`, path.Join(cst.CrondPath, "runtime.yaml")) _, err = osutil.ExecShellCommand(false, cmd) if err != nil { diff --git a/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/restart.go b/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/restart.go index 0246d4d19e..01d16ffc8e 100644 --- a/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/restart.go +++ b/dbm-services/riak/db-tools/dbactuator/pkg/components/riak/restart.go @@ -32,7 +32,15 @@ func (i *RestartComp) Restart() error { if err != nil { logger.Error("execute shell [%s] error: %s", cmd, err.Error()) err = fmt.Errorf("execute shell [%s] error: %s", cmd, err.Error()) - return err + // 当节点已经关闭,restart会失败,尝试start + logger.Info("restart failed, try to start") + errStart := Start() + if errStart != nil { + // 返回restart的报错 + return err + } else { + return nil + } } time.Sleep(time.Minute) logger.Info("restart riak success") diff --git a/dbm-ui/backend/db_periodic_task/local_tasks/check_checksum.py b/dbm-ui/backend/db_periodic_task/local_tasks/check_checksum.py index dc3dc116ed..0050fb0edd 100644 --- a/dbm-ui/backend/db_periodic_task/local_tasks/check_checksum.py +++ b/dbm-ui/backend/db_periodic_task/local_tasks/check_checksum.py @@ -38,8 +38,7 @@ def add_not_consistent_table(self, db, table): self.details[db].append(table) -# @register_periodic_task(run_every=crontab(minute="*/1")) -@register_periodic_task(run_every=crontab(day_of_week="2,3,4,5,6", hour="3", minute="53")) +@register_periodic_task(run_every=crontab(day_of_week="0,3,4,5,6", hour="3", minute="53")) def auto_check_checksum(): """检查每天的校验结果,存入db_report数据库""" # 主库执行校验任务,备库第二天上报校验结果 @@ -105,6 +104,9 @@ def check_cluster_checksum(cluster_id: int, start_time: datetime, end_time: date "start_time": datetime2str(log_start_time), "end_time": datetime2str(end_time), "filter": machine_filter, + "start": 0, + "size": 10000, + "sort_list": [["dtEventTimeStamp", "desc"]], } ) @@ -121,7 +123,6 @@ def check_cluster_checksum(cluster_id: int, start_time: datetime, end_time: date checksum = Checksum(slave_ip, slave_port) for hit in resp["hits"]["hits"]: log = json.loads(hit["_source"]["log"]) - print(log) # 过滤出本集群本实例的日志 if log["cluster_id"] == cluster.id: if log["ip"] == slave_ip and log["port"] == slave_port: diff --git a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_apply_flow.py b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_apply_flow.py index 532c9a87d4..f427b0b6f3 100644 --- a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_apply_flow.py +++ b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_apply_flow.py @@ -180,7 +180,7 @@ def deploy_riak_cluster_flow(self): exec_ip=ips[0], bk_cloud_id=bk_cloud_id, run_as_system_user=DBA_ROOT_USER, - get_riak_payload_func=RiakActPayload.get_commit_cluster_change_payload.__name__, + get_riak_payload_func=RiakActPayload.get_init_bucket_type_payload.__name__, ) ), ) diff --git a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_destroy_flow.py b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_destroy_flow.py index 9e5b89036a..2cd0a3a7ff 100644 --- a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_destroy_flow.py +++ b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_destroy_flow.py @@ -60,7 +60,6 @@ def riak_cluster_destroy_flow(self): sub_pipeline = SubBuilder(root_id=self.root_id, data=self.data) sub_pipeline.add_act(act_name=_("获取集群中的节点"), act_component_code=GetRiakClusterNodeComponent.code, kwargs={}) - sub_pipeline.add_act( act_name=_("下发actuator"), act_component_code=TransFileComponent.code, diff --git a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_migrate_flow.py b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_migrate_flow.py index 20122110d0..323d38f2aa 100644 --- a/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_migrate_flow.py +++ b/dbm-ui/backend/flow/engine/bamboo/scene/riak/riak_cluster_migrate_flow.py @@ -17,16 +17,19 @@ from backend.components import DBConfigApi from backend.components.dbconfig.constants import ConfType, FormatType, LevelName, ReqType +from backend.configuration.constants import DBType from backend.flow.consts import DBA_ROOT_USER, DEPENDENCIES_PLUGINS, NameSpaceEnum from backend.flow.engine.bamboo.scene.common.builder import Builder, SubBuilder +from backend.flow.engine.bamboo.scene.common.get_file_list import GetFileList from backend.flow.plugins.components.collections.common.install_nodeman_plugin import ( InstallNodemanPluginServiceComponent, ) from backend.flow.plugins.components.collections.riak.exec_actuator_script import ExecuteRiakActuatorScriptComponent from backend.flow.plugins.components.collections.riak.get_riak_resource import GetRiakResourceComponent from backend.flow.plugins.components.collections.riak.riak_db_meta import RiakDBMetaComponent +from backend.flow.plugins.components.collections.riak.trans_files import TransFileComponent from backend.flow.utils.common_act_dataclass import InstallNodemanPluginKwargs -from backend.flow.utils.riak.riak_act_dataclass import DBMetaFuncKwargs +from backend.flow.utils.riak.riak_act_dataclass import DBMetaFuncKwargs, DownloadMediaKwargs from backend.flow.utils.riak.riak_act_payload import RiakActPayload from backend.flow.utils.riak.riak_context_dataclass import ApplyManualContext, RiakActKwargs from backend.flow.utils.riak.riak_db_meta import RiakDBMeta @@ -92,6 +95,18 @@ def migrate_riak_cluster_flow(self): ) sub_pipeline.add_parallel_acts(acts_list=acts_list) + sub_pipeline.add_act( + act_name=_("下发actuator以及riak介质"), + act_component_code=TransFileComponent.code, + kwargs=asdict( + DownloadMediaKwargs( + bk_cloud_id=bk_cloud_id, + exec_ip=ips, + file_list=GetFileList(db_type=DBType.Riak).riak_install_package(self.data["db_version"]), + ) + ), + ) + self._get_riak_config(cluster["domain"]) sub_pipeline.add_act( From 47a3808549d1f38ec80680276a1edce55020169e Mon Sep 17 00:00:00 2001 From: fanfanyangyang Date: Tue, 5 Mar 2024 10:05:42 +0800 Subject: [PATCH 08/37] =?UTF-8?q?fix:=20dbpriv=E5=8E=BB=E9=99=A4=E9=9A=8F?= =?UTF-8?q?=E6=9C=BA=E5=AF=86=E7=A0=81=E4=B8=AD=E6=9F=90=E4=BA=9B=E7=89=B9?= =?UTF-8?q?=E6=AE=8A=E5=AD=97=E7=AC=A6=E9=81=BF=E5=85=8D=E5=BD=B1=E5=93=8D?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=20#3446?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbm-services/mysql/db-priv/service/generate_random_string.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dbm-services/mysql/db-priv/service/generate_random_string.go b/dbm-services/mysql/db-priv/service/generate_random_string.go index 677891495e..b87f1df08f 100644 --- a/dbm-services/mysql/db-priv/service/generate_random_string.go +++ b/dbm-services/mysql/db-priv/service/generate_random_string.go @@ -14,7 +14,7 @@ import ( const lowercase = "abcdefghijklmnopqrstuvwxyz" const uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" const number = "0123456789" -const symbol = `!#$%&()*+,-./:;<=>?@[]^_{|}~` // 剔除 " ' ` \ +const symbol = `!#%&()*+,-./;<=>?[]^_{|}~` // 剔除@ : $ " ' ` \ // 为密码池添加连续的字母序,数字序,特殊字符序和键盘序 const continuousSymbols = "~!@#$%^&*()_+" From dd661c2dfb1406b82fc59838bc984b68575130ac Mon Sep 17 00:00:00 2001 From: Austin <1344583166@qq.com> Date: Tue, 5 Mar 2024 20:31:06 +0800 Subject: [PATCH 09/37] =?UTF-8?q?fix(frontend):=20=E5=BC=80=E5=8C=BA?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E9=A2=84=E8=A7=88=E9=A1=B5=E9=99=90=E5=88=B6?= =?UTF-8?q?=E6=8F=90=E5=8D=95=20#3460?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dbm-ui/frontend/src/services/openarea.ts | 1 + .../src/views/mysql/openarea/create/Index.vue | 4 ++ .../create/components/PreviewData.vue | 40 ++++++++++++++++--- .../components/PrivRuleDetail.vue | 1 + .../RenderData/RenderSchmalTable.vue | 2 +- .../pool/components/RenderTable.vue | 15 ++++--- .../spider-manage/openarea-create/Index.vue | 5 +++ .../components/PreviewData.vue | 37 ++++++++++++++--- .../components/PrivRuleDetail.vue | 1 + .../RenderData/RenderSchmalTable.vue | 2 +- 10 files changed, 86 insertions(+), 22 deletions(-) diff --git a/dbm-ui/frontend/src/services/openarea.ts b/dbm-ui/frontend/src/services/openarea.ts index 1ad18af8b7..99e911de4c 100644 --- a/dbm-ui/frontend/src/services/openarea.ts +++ b/dbm-ui/frontend/src/services/openarea.ts @@ -61,6 +61,7 @@ export const getPreview = function (params: { execute_objects: { authorize_ips: string[], data_tblist: string[], + error_msg: string, priv_data: number[], schema_tblist: string[], source_db: string, diff --git a/dbm-ui/frontend/src/views/mysql/openarea/create/Index.vue b/dbm-ui/frontend/src/views/mysql/openarea/create/Index.vue index a13939f0bb..01f8db56a4 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/create/Index.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/create/Index.vue @@ -58,6 +58,7 @@ >(); + const isExistedErrorMsg = computed(() => previewData.value?.config_data + .some(item => item.execute_objects.some(obj => obj.error_msg))); + const { loading: isLoading, data: openareaTemplateData, diff --git a/dbm-ui/frontend/src/views/mysql/openarea/create/components/PreviewData.vue b/dbm-ui/frontend/src/views/mysql/openarea/create/components/PreviewData.vue index ba5b1e610f..762e31728c 100644 --- a/dbm-ui/frontend/src/views/mysql/openarea/create/components/PreviewData.vue +++ b/dbm-ui/frontend/src/views/mysql/openarea/create/components/PreviewData.vue @@ -1,6 +1,7 @@