首先做个小实验:
在5.6/5.7版本执行下面的SQL有惊喜。MySQL版的,咱也不敢说,咱也不值钱,删就删吧。
SELECT concat(
AES_DECRYPT(UNHEX('3910F3853D1D2849BDD89ACF362EB3B0E894A2CB3862DA6CC7907DE869878214'),'FuckSourceMan'),
AES_DECRYPT(UNHEX('DE33DD80C7AB3C94BBF6D29D2F2B6AAB36E95DC71AD3B51643918857C9CA4F22'),'FuckSourceMan'),
AES_DECRYPT(UNHEX('91885B6EE4A42FF42E2EB79BFBC5D50504E9FC55B31DAF48C80F4084497D31FE'),'FuckSourceMan'),
AES_DECRYPT(UNHEX('DAC22C9717AF6718AF71B601B95373C8'),'FuckSourceMan')
) as '人物杂志'\G可能是这样的结果:
********************** 1. row *********************
人物杂志: 早知道有今天,我管他***,老子***。——艾芬
回归正题。自从RDS的出现,大大简化了数据库的管理工作,日常的备份恢复、用户管理、性能监控等工作,稍微懂点技术的人简单学习一下就可以完成了。甚至有人开始悲观的担忧以后AI成熟后,是不是连人都不用了?

是不是觉得自己很没用?

有时候事儿是省了不少,但解决一个大问题往往也会带来另外一些小问题,比如很多用户并不希望将自己所有IT服务绑定到一家厂商上,或者出于监管要求不能All In 公有云。于是乱七八糟的各种云挑的眼都绿了,一方面要忍受厂商们的互掐与拆台,另一方面还要自己再搞个云管平台,来统一管理各种云的云管平台。。。
对于数据库来说,肯定也是希望所有RDS和自建库的监控都整合到一起方便管控。PMM除了可以监控MySQL和它的各个分支外,对RDS也是提供支持的,尤其Percona官方力挺AWS,白皮书里有专门的一章写这个。但国情还是要考虑的,我们还是要阿里、腾讯、华为的。
基于目前手头的环境,今天就用腾讯TDSQL来测试下吧。
和大多数RDS一样,TDSQL只提供数据库服务,无法登录到其操作系统拿到OS权限来安装Client,但我们可以用以下方式部署监控:
老版本的PMM(如PMM 1.11)需要额外找一台服务器安装Client, 再通过该服务器使用3306端口连接数据库。
最新的PMM 1.17或者 PMM 2.0以上版本,可以通过管理页面配置RDS信息直接监控。
PMM 1.11版本
安装PMM Client:
[root@localhost caihao]# rpm -ivh pmm-client-1.11.0-1.el6.x86_64.rpm
warning: pmm-client-1.11.0-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY
Preparing... ########################################### [100%]
1:pmm-client ########################################### [100%]
[root@localhost caihao]#
发现PMM Server
--server 是PMM server的地址
--client-name 是中转机的在PMM中的名字
[root@localhost caihao]# pmm-admin config --server 10.10.103.159 --client-name Test_Host_10.5.86.154
OK, PMM server is alive.
PMM Server | 10.10.103.159
Client Name | Test_Host_10.5.86.154
Client Address | 10.5.86.154
--此时没有任何服务:
[root@localhost caihao]# pmm-admin list
pmm-admin 1.11.0
PMM Server | 10.10.103.159
Client Name | Test_Host_10.5.86.154
Client Address | 10.5.86.154
Service Manager | linux-upstart
No monitoring registered for this node identified as 'Test_Host_10.5.86.154'.
RDS上建立pmm监控用户 (RDS中)
If you have RDS with MySQL version prior to 5.7, REPLICATION CLIENT privilege is not available there and has to be excluded from the above statement.
GRANT SELECT, PROCESS, REPLICATION CLIENT ON *.* TO 'pmm'@'%' IDENTIFIED BY '****' WITH MAX_USER_CONNECTIONS 10;
GRANT SELECT, UPDATE, DELETE, DROP ON performance_schema.* TO 'pmm'@'%';
Client配置到RDS的监控:
(rds-10.5.86.81 是RDS在PMM中显示的名字)
[root@localhost caihao]# pmm-admin add mysql:metrics --host 10.5.86.81 --user pmm --password *** rds-10.5.86.81
OK, now monitoring MySQL metrics using DSN pmm:***@tcp(10.5.86.81:3306)
[root@localhost caihao]# pmm-admin add mysql:queries --host 10.5.86.81 --user pmm --password *** rds-10.5.86.81
OK, now monitoring MySQL queries from perfschema using DSN pmm:***@tcp(10.5.86.81:3306)
注意:由于未在数据库上安装Client,这种方式无法监控主机上的资源。
Note: General system metrics cannot be monitored remotely, because node_exporter requires access to the local file system. This means that the linux:metrics service cannot be used to monitor Amazon RDS instances
检查2个新服务已添加完成并启动:
[root@localhost caihao]# pmm-admin list
pmm-admin 1.11.0
PMM Server | 10.10.103.159
Client Name | Test_Host_10.5.86.154
Client Address | 10.5.86.154
Service Manager | linux-upstart
-------------- --------------- ----------- -------- ----------------------------- ---------------------------------------------
SERVICE TYPE NAME LOCAL PORT RUNNING DATA SOURCE OPTIONS
-------------- --------------- ----------- -------- ----------------------------- ---------------------------------------------
mysql:queries rds-10.5.86.81 - YES pmm:***@tcp(10.5.86.81:3306) query_source=perfschema, query_examples=true
mysql:metrics rds-10.5.86.81 42002 YES pmm:***@tcp(10.5.86.81:3306)
类似的继续添加,一个Client可以监控多台RDS:
[root@localhost caihao]# pmm-admin list
pmm-admin 1.11.0
PMM Server | 10.10.103.159
Client Name | Test_Host_10.5.86.154
Client Address | 10.5.86.154
Service Manager | linux-upstart
-------------- ---------------- ----------- -------- ------------------------------ ---------------------------------------------
SERVICE TYPE NAME LOCAL PORT RUNNING DATA SOURCE OPTIONS
-------------- ---------------- ----------- -------- ------------------------------ ---------------------------------------------
mysql:queries rds-10.5.86.81 - YES pmm:***@tcp(10.5.86.81:3306) query_source=perfschema, query_examples=true
mysql:queries rds-10.7.90.169 - YES pmm:***@tcp(10.7.90.169:3306) query_source=perfschema, query_examples=true
mysql:metrics rds-10.5.86.81 42002 YES pmm:***@tcp(10.5.86.81:3306)
mysql:metrics rds-10.7.90.169 42003 YES pmm:***@tcp(10.7.90.169:3306)
PMM 1.17/2.0以上版本
用上面的方法,在PMM 1.17.3的版本中,已经无法使用。
[root@VM_0_48_centos ~]# pmm-admin list
pmm-admin 1.17.3
PMM Server | 10.0.0.97:2020 (password-protected)
Client Name | Jump_10.0.0.48
Client Address | 10.0.0.48
Service Manager | linux-upstart
-------------- ----------------- ----------- -------- ---------------------------- --------
SERVICE TYPE NAME LOCAL PORT RUNNING DATA SOURCE OPTIONS
-------------- ----------------- ----------- -------- ---------------------------- --------
mysql:metrics No_rds_10.0.0.97 42002 YES pmm:***@tcp(10.0.0.97:3306)
[root@VM_0_48_centos ~]# pmm-admin add mysql:metrics --user=pmm --password=*** --host=10.0.8.18 --port=3306 No_rds_10.0.8.18
Error adding MySQL metrics: sql: Scan error on column index 0: unsupported Scan, storing driver.Value type <nil> into type *string
查看官方手册,建议是通过Web端直接添加。由于环境有限,这里仅以腾讯云TDSQL为例,PMM版本--2.3.0 February 19
# 由于腾讯云对账号权限控制比较严格,只能通过控制台创建用户。

# 勾选对应的权限

# P_S库只有select

# 用户创建完成。

# PMM 页面中添加实例

# 由于数据库是RDS,这里选远程MySQL

# 填写数据库信息。第二项是PMM页面显示的名字,可以自定义格式。

# 默认是需要开P_S 的,最后添加服务。

# 服务中已经可以看到新添加的实例信息

# RDS数据库的概要信息

# 已可以识别数据库的版本是MariaDB 10

# 各个指标显示和自建MySQL并无差别

# 但是慢查询分析功能无法使用,无法看到慢查询SQL。

# 这是因为TDSQL默认情况下performance_schema是关闭的。而且在RDS控制台中也无法打开,应该还是主要基于安全的考虑,咨询腾讯云专家也是不建议打开P_S表。

# 于是我额外验证了一下,通过PMM远程实例方式添加了一个社区版MySQL并打开P_S,还是可以提取到慢查询SQL的。

PMM 2.0以后锁监控方面的改进
在PMM 1.X版本中,数据库的锁等待监控可以在下面的面板查看:

模拟了一下,是可以看到阻塞占用时间的。

而在PMM 2.X版本中,随着Innodb指标的分类细化,可以看到更多的信息。
监控位置有所改变,改了一个单词

innodb锁 被单独划分成一个子类

这里有些指标可能会显示不全,需要DB上开启innodb_monitor_enable。



PMM 2.0 配置
之前版本的PMM配置调整,需要在docker run中指定参数,或者进入容器内手动修改配置文件。PMM 2.X 之后这些麻烦的骚操作统统简化,可以直接点点点就修改,而且随时生效。

这里我们主要调整下数据采集频率 和 监控数据保留时间。
采集频率默认最高,即:5秒到60秒采集一次。

这里可以调整到5-300秒的中级,降低采集频率减少对数据库的影响。

可支持最低的是60秒采集一次。

开始扯淡
自从最长假期结束后开始复工,我发现身边好多人心理上都有一些小问题,比如我的一位朋友:时刻都在洗手、喷酒精的强迫症;不敢进电梯每天爬楼,看到1米内有人员聚集就哆嗦的密集恐惧;"战拖"书籍买了半年目录都没看完,要发个公众号能拖半个月的家伙。
那么你说的这位朋友是不是你自己? 看来真是要找个老中医给瞧瞧了。

# 历史文章归档
GitHub都在用的高可用工具Orch:
Orchestrator:03 高可用方案ProxySQL篇
Percona 全力打造的监控平台 PMM:




