From 0723ecc3dde58c3d3778136c60e98686b7976a76 Mon Sep 17 00:00:00 2001 From: riversome1 <1154252108@qq.com> Date: Tue, 13 Jun 2023 20:15:58 +0800 Subject: [PATCH 1/5] fix version bug & menu bug & update README.md --- Privileges/Privileges_Inspection.go | 14 ++++++++------ go.sum | 4 ++++ main.go | 4 ++-- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Privileges/Privileges_Inspection.go b/Privileges/Privileges_Inspection.go index a2fa8b3..22f2fb9 100644 --- a/Privileges/Privileges_Inspection.go +++ b/Privileges/Privileges_Inspection.go @@ -20,7 +20,8 @@ var ( Completed = color.S256(255, 27) ) -var user_usera_slice = make([]string, 0, 30) +var user_username_slice = make([]string, 0, 30) +var user_userhost_slice = make([]string, 0, 30) func Privileges_Inspection() { sqlStr := "select user,host from mysql.user where user not in ('mysql.session','mysql.sys','mysql.infoschema');" @@ -34,8 +35,8 @@ func Privileges_Inspection() { for counts.Next() { var user User err := counts.Scan(&user.TABLE_SCHEMA, &user.TABLE_NAME) - user_usera_slice = append(user_usera_slice, user.TABLE_SCHEMA) - + user_username_slice = append(user_username_slice, user.TABLE_SCHEMA) + user_userhost_slice = append(user_userhost_slice, user.TABLE_NAME) if err != nil { panic(err.Error()) } @@ -47,9 +48,10 @@ func Privileges_Inspection() { func User_Privileges_Inspection() { var user User - for j := 0; j < len(user_usera_slice); j++ { - values := user_usera_slice[j] - sqlStr := "show grants for" + "'" + values + "'" + for j := 0; j < len(user_username_slice); j++ { + userName := user_username_slice[j] + userHost := user_userhost_slice[j] + sqlStr := "show grants for" + "'" + userName + "'@'" + userHost + "'" err := Global.DB.QueryRow(sqlStr).Scan(&user.TABLE_SCHEMA) if err != nil { fmt.Printf("scan failed, err:%v\n", err) diff --git a/go.sum b/go.sum index 9d4ae08..8c93937 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,12 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc= github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/gookit/color v1.5.3 h1:twfIhZs4QLCtimkP7MOxlF3A0U/5cDPseRT9M/+2SCE= github.com/gookit/color v1.5.3/go.mod h1:NUzwzeehUfl7GIb36pqId+UGmRfQcU/WiiyTTeNjHtE= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/main.go b/main.go index cb7bfac..d4f55c4 100644 --- a/main.go +++ b/main.go @@ -75,7 +75,7 @@ func main() { flag.Parse() if *v { - fmt.Println("DB OSInspection V1.0") + fmt.Println("DB OSInspection V2.0") return } @@ -88,7 +88,7 @@ func main() { //调用banner banner() // 32 设置绿色,使用 33 设置黄色,使用 34 设置蓝色 - fmt.Printf("\033[31m%s\033[0m", "欢迎使用数据库巡检工具 DB OSInspection V1.0\n") + fmt.Printf("\033[31m%s\033[0m", "欢迎使用数据库巡检工具 DB OSInspection V2.0\n") fmt.Printf("————————————————————————————————————————————————————————\n") conn := fmt.Sprintf("%s:%s@%s(%s)/%s", *u, *p, *nw, *P, "mysql") -- Gitee From 06b5c4122a980ae4c5603235407c8f7cd8174751 Mon Sep 17 00:00:00 2001 From: KAiTO <929654790@qq.com> Date: Sun, 23 Jul 2023 19:09:47 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E6=9B=B4=E6=94=B9=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Menu/DBA_Toolbox_Logo.png | Bin 0 -> 23463 bytes ...\345\233\276\347\211\207_20230329094139.png" | Bin 15652 -> 0 bytes README.md | 12 ++++++------ main.go | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 Menu/DBA_Toolbox_Logo.png delete mode 100644 "Menu/\345\276\256\344\277\241\345\233\276\347\211\207_20230329094139.png" diff --git a/Menu/DBA_Toolbox_Logo.png b/Menu/DBA_Toolbox_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..66d7e501f154e738eeb2dfb30db5ef1b432d3a5a GIT binary patch literal 23463 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
g20=(#>ttLtY7+|4)ld;7 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 rO8?)err.log + ./DBA TOOLBOX -u 用户名 -p 密码 >err.log 监测模式 -./DB_OSInspection -u 用户名 -p 密码 -m monitor +./DBA TOOLBOX -u 用户名 -p 密码 -m monitor ``` ### 参数解析 **所有输入后面都需要跟空格,否则会错误** diff --git a/main.go b/main.go index d4f55c4..cf5679b 100644 --- a/main.go +++ b/main.go @@ -75,12 +75,12 @@ func main() { flag.Parse() if *v { - fmt.Println("DB OSInspection V2.0") + fmt.Println("DBA_TOOLBOX V2.0") return } if *h || *u == "" { - fmt.Println("Usage: DB OSInspection [options]") + fmt.Println("Usage: DBA_TOOLBOX [options]") flag.PrintDefaults() return } @@ -88,7 +88,7 @@ func main() { //调用banner banner() // 32 设置绿色,使用 33 设置黄色,使用 34 设置蓝色 - fmt.Printf("\033[31m%s\033[0m", "欢迎使用数据库巡检工具 DB OSInspection V2.0\n") + fmt.Printf("\033[31m%s\033[0m", "欢迎使用 DBA_TOOLBOX V2.0\n") fmt.Printf("————————————————————————————————————————————————————————\n") conn := fmt.Sprintf("%s:%s@%s(%s)/%s", *u, *p, *nw, *P, "mysql") @@ -110,6 +110,6 @@ func main() { //跳转菜单页面 Menu.Menu(*m) - fmt.Println("感谢您使用数据库巡检工具 DB OSInspection") + fmt.Println("Enjoy DBA_TOOLBOX :)") } -- Gitee From 0ebae1260b45ee852ac3b5a90f6ce04ec9f0704a Mon Sep 17 00:00:00 2001 From: KAiTO <929654790@qq.com> Date: Sun, 23 Jul 2023 19:15:22 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=89=8B=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 67 +++++++++++++++++-------------------------------------- 1 file changed, 21 insertions(+), 46 deletions(-) diff --git a/README.md b/README.md index cc1b7af..ea01353 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,9 @@ [![](https://img.shields.io/badge/License-Apache_v2.0-blue.svg)](https://gitee.com/GreatSQL/GreatSQL/blob/master/LICENSE) [![](https://img.shields.io/badge/release-1.2.1-blue.svg)](https://gitee.com/GreatSQL/gt-checksum/releases/tag/1.2.1) ![输入图片说明](Menu\DBA_Toolbox_Logo.png) -# 数据库巡检工具 DBA_TOOLBOX +# DBA工具箱 DBA_TOOLBOX ## 简介: -DBA_TOOLBOX 数据库巡检工具,实现对数据库一秒巡检,对实例有大概了解。 -该工具具有简单易用、高效准确等特点,非常适合运维人员和开发人员使用。 +这款软件是一个全面的数据库管理工具,旨在帮助DBA更轻松地管理和维护数据库。它提供了各种功能,包括数据库监控、性能优化、备份和恢复、安全管理、查询分析等等。此外,它还支持多种数据库平台,如MySQL、Oracle、SQL Server等。无论您是初学者还是经验丰富的DBA,这个工具箱都将成为您工作中不可或缺的助手。 ## 下载 - [V1.2 Windows版本](https://gitee.com/KAITOO/db_-osinspection/releases/download/V1.2/DB_OSInspection.exe) @@ -15,13 +14,13 @@ DBA_TOOLBOX 数据库巡检工具,实现对数据库一秒巡检,对实例 ## 快速上手 ```go Windows环境下可直接使用,不能保存巡检结果 -./DBA TOOLBOX -u 用户名 -p 密码 +./DBA_TOOLBOX -u 用户名 -p 密码 在Linux环境下保存巡检结果可以用 - ./DBA TOOLBOX -u 用户名 -p 密码 >err.log + ./DBA_TOOLBOX -u 用户名 -p 密码 >err.log 监测模式 -./DBA TOOLBOX -u 用户名 -p 密码 -m monitor +./DBA_TOOLBOX -u 用户名 -p 密码 -m monitor ``` ### 参数解析 **所有输入后面都需要跟空格,否则会错误** @@ -35,50 +34,26 @@ Windows环境下可直接使用,不能保存巡检结果 - -h 输出帮助 ## 已实现功能 ### 实现数据库监控可实时输出 --m 选择monitor 模式即可 +-m 选择monitor 模式即可时间监控通用日志,实现对数据库操作实时输出 ### 实现表巡检 -- 大小超过10G的表 -- 索引超过6个的表 -- 碎片率超过50%的表 -- 行数超过1000万行的表 -- 非默认字符集的表 -- 含有大字段的表 -- varchar定义超长的表 -- 无主键/索引的表 +- 大小超过10G的表 \ 索引超过6个的表 \ 碎片率超过50%的表 +- 行数超过1000万行的表 \ 非默认字符集的表 \ 含有大字段的表 +- varchar定义超长的表 \ 无主键/索引的表 ### 索引巡检 -- 重复索引 -- 索引列超过5个的索引 -- 无用索引 +- 重复索引 \ 索引列超过5个的索引 \ 无用索引 ### 重要参数 -- version -- innodb_buffer_pool_size -- innodb_flush_log_at_trx_commit -- innodb_log_file_size -- innodb_log_files_in_group -- innodb_file_per_table -- innodb_max_dirty_pages_pct -- sync_binlog -- max_connections -- table_open_cache -- table_definition_cache +- version\innodb_buffer_pool_size\innodb_flush_log_at_trx_commit +- innodb_log_file_size\innodb_log_files_in_group\innodb_file_per_table +- innodb_max_dirty_pages_pct\sync_binlog\max_connections +- table_open_cache\table_definition_cache ### 重要状态指标 -- Uptime -- Opened_files -- Opened_table_definitions -- Opened_tables -- Max_used_connections -- Threads_created -- Threads_connected -- Aborted_connects -- Aborted_clients -- Table_locks_waited -- Innodb_buffer_pool_wait_free -- Innodb_log_waits -- Table_locks_waited -- Innodb_row_lock_waits -- Innodb_row_lock_time_avg -- Binlog_cache_disk_use -- Created_tmp_disk_tables +- Uptime\Opened_files\Opened_table_definitions +- Opened_tables\Max_used_connections +- Threads_created\Threads_connected +- Aborted_connects\Aborted_clients\Table_locks_waited +- Innodb_buffer_pool_wait_free\Innodb_log_waits +- Table_locks_waited\Innodb_row_lock_waits +- Innodb_row_lock_time_avg\Binlog_cache_disk_use\Created_tmp_disk_tables ### 用户检查 - 无密码用户 - %用户 -- Gitee From 7dbca80093f0b6ac76859d7fc104b00fdfb9de9e Mon Sep 17 00:00:00 2001 From: KAiTO <929654790@qq.com> Date: Sun, 23 Jul 2023 11:17:03 +0000 Subject: [PATCH 4/5] update README.md. Signed-off-by: KAiTO <929654790@qq.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea01353..f4930ce 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![](https://img.shields.io/badge/GreatSQL-博客-brightgreen.svg)](https://greatsql.cn/home.php?mod=space&uid=10&do=blog&view=me&from=space) [![](https://img.shields.io/badge/License-Apache_v2.0-blue.svg)](https://gitee.com/GreatSQL/GreatSQL/blob/master/LICENSE) [![](https://img.shields.io/badge/release-1.2.1-blue.svg)](https://gitee.com/GreatSQL/gt-checksum/releases/tag/1.2.1) -![输入图片说明](Menu\DBA_Toolbox_Logo.png) +![输入图片说明](dba_toolbox/Menu/DBA_Toolbox_Logo.png ) # DBA工具箱 DBA_TOOLBOX ## 简介: 这款软件是一个全面的数据库管理工具,旨在帮助DBA更轻松地管理和维护数据库。它提供了各种功能,包括数据库监控、性能优化、备份和恢复、安全管理、查询分析等等。此外,它还支持多种数据库平台,如MySQL、Oracle、SQL Server等。无论您是初学者还是经验丰富的DBA,这个工具箱都将成为您工作中不可或缺的助手。 -- Gitee From a16eccdb4347db193414b5a8dc73ce47c6f096ce Mon Sep 17 00:00:00 2001 From: KAiTO <929654790@qq.com> Date: Sun, 23 Jul 2023 11:17:28 +0000 Subject: [PATCH 5/5] update README.md. Signed-off-by: KAiTO <929654790@qq.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f4930ce..bdaedb3 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![](https://img.shields.io/badge/GreatSQL-博客-brightgreen.svg)](https://greatsql.cn/home.php?mod=space&uid=10&do=blog&view=me&from=space) [![](https://img.shields.io/badge/License-Apache_v2.0-blue.svg)](https://gitee.com/GreatSQL/GreatSQL/blob/master/LICENSE) [![](https://img.shields.io/badge/release-1.2.1-blue.svg)](https://gitee.com/GreatSQL/gt-checksum/releases/tag/1.2.1) -![输入图片说明](dba_toolbox/Menu/DBA_Toolbox_Logo.png ) +![输入图片说明](Menu/DBA_Toolbox_Logo.png) # DBA工具箱 DBA_TOOLBOX ## 简介: 这款软件是一个全面的数据库管理工具,旨在帮助DBA更轻松地管理和维护数据库。它提供了各种功能,包括数据库监控、性能优化、备份和恢复、安全管理、查询分析等等。此外,它还支持多种数据库平台,如MySQL、Oracle、SQL Server等。无论您是初学者还是经验丰富的DBA,这个工具箱都将成为您工作中不可或缺的助手。 -- Gitee