ADBMGR简介
ADBMGR 概述
ADBMGR 是针对 AntDB 集群的管理工具,具有管理 AntDB 集群的所有功能,包括 AntDB 集群的初始化,启动,停止;所有集群节点的参数设置;也包括 AntDB 集群的扩缩容等功能。
AntDB 集群部署可以在多台机器上,ADBMGR 为了实现管理 AntDB 集群的功能,需要在每台主机上启动一个叫 agent 的进程,ADBMGR 通过 agent 进程实现对 AntDB 集群的管理。ADBMGR 包括对 agent 进程的管理。
比如,用户执行了一个 start 命令来启动 host1 主机上的某个集群节点,ADBMGR 就会把 start 命令传给 host1 主机上的 agent 进程,由 agent 进程执行 start 命令;然后 agent 把 start 命令的执行结果传给 ADBMGR 并显示为用户命令的执行结果。所以,AntDB 集群所在的主机上都要启动一个 agent 进程。
为实现方便管理 AntDB 集群的目的,在 ADBMGR 中有 4 张表,用于存储 AntDB 集群的基本配置,ADBMGR 的所有操作命令都是针对这4张表进行操作的,所以有必要详细介绍这 4 张表。
主机信息表
Host 表用于存放部署 AntDB 集群的主机和 agent 进程等信息。如下图所示,是存放了 2 条主机信息的 host 表:
示例: 连接 ADBMGR 执行:
antdb=# list host;
输出结果罗列在下面的表格中:
name | user | port | protocol | agentport | address | adbhome |
---|---|---|---|---|---|---|
localhost1 | gd | 22 | ssh | 10906 | 10.21.20.175 | /data/antdb/app |
localhost2 | gd | 22 | ssh | 10906 | 10.21.20.176 | /data/antdb/app |
Host表每列的详细解释如下:
列名 | 描述 |
---|---|
name | 主机名,即 address 列的 IP address 对应的主机名。 |
user | 用户名,部署 AntDB 集群的用户名。 |
port | Protocol 列使用的协议的端口,ssh 协议默认使用 22 端口。 |
protocol | ADBMGR 与 agent 通信使用的协议。默认使用 ssh 协议。 |
agentport | Agent 进程使用的端口。这个需要由用户指定一个与其他进程不冲突的端口号。 |
address | IP address,主机的 ip 地址。 |
pghome | 部署 AntDB 集群的可执行文件(二进制文件)在主机上的存放路径。 |
- 使用 add host 命令可以往 host 表中添加一行;
- 使用 alter host 命令可以修改行中的字段;
- 使用 drop host 可以删除 host 表中的一行;
- 使用 list host 命令可以显示 host 表中指定的 host 的信息。
上述命令的详细使用请参考第四章中 host 表相关命令。
下面是对 host 表常用操作命令例子:
ADD host localhost1( user=gd, protocol=ssh, address='10.21.20.175', agentport=10906, adbhome='/data/antdb/app');
ALTER host localhost1(adbhome='/opt/antdb/app');
DROP host localhost1;
list host;
节点信息表
node 表用于保存部署 AntDB 集群中每个节点的信息,同时包括从节点与主节点之间的同/异步关系等。
下面是使用 list node 命令查看的 node 表中的数据。
示例:
连接 ADBMGR 执行:
antdb=# list node;
输出结果选取 5 条罗列在下面的表格中:
name | host | type | mastername | port | sync_state | path | initialized | incluster | readonly |
---|---|---|---|---|---|---|---|---|---|
coord1 | localhost1 | coordinator master | 6604 | /data/antdb/data/coord1 | t | t | f | ||
coord2 | localhost2 | coordinator master | 6604 | /data/antdb/data/coord1 | t | t | f | ||
db1 | localhost1 | datanode master | 16323 | /data/antdb/data/db1 | t | t | f | ||
db2 | localhost2 | datanode master | 16323 | /data/antdb/data/db2 | t | t | f | ||
gc | localhost1 | gtmcoord master | 7693 | /data/antdb/data/gc | t | t | f |
Node 表中每列的解释如下:
列名 | 描述 |
---|---|
name | AntDB 集群中节点的名字,比如 coord2 就是其中一个 coordinator 的名称。 |
host | 节点所在的主机,比如 coord2 节点部署在 localhost2 主机上。 |
type | 节点的类型,比如 coord2 就是 AntDB 集群中其中一个 coordinator。 |
mastername | 主节点名字。本列只有从节点有效,对主节点无效 |
port | 端口号。节点部署在主机上使用的端口号。 |
sync_state | 同/异步关系。仅对从节点有效。值“sync”表示该从节点是同步从节点,“potential”表示该从节点是潜在同步节点,“async”表示该从节点是异步从节点。 |
path | 节点在主机上存放数据文件的路径。 |
initialized | 本节点是否已经初始化,“t”代表已经初始化,“f”代表没有初始化。 |
incluster | 本节点是否在集群中,“t”代表本节点属于集群,“f”代表本节点不属于集群。 |
readonly | 本节点是否是只读模式的,只针对 coordinator 类型的节点有效。“t”表示本节点为只读,“f”表示本节点为可读写。 |
下面是对 node 表常用操作命令例子(详细命令的使用方法参考第四章中 node 表相关命令):
-- 向node表添加AntDB集群的节点信息:
ADD GTMCOORD MASTER gc_1 (host=localhost1,port=6768,path='/home/antdb/data/gc1');
ADD GTMCOORD SLAVE gc_2 for gtm_1 (host=localhost2,port=6768,path='/home/antdb/data/gc2');
ADD COORDINATOR MASTER coord1(host=localhost1, port=5532,path='/home/antdb/data/coord1');
ADD COORDINATOR MASTER coord2(host=localhost2, port=5532,path='/home/antdb/data/coord2');
ADD DATANODE MASTER db1_1 (host=localhost1, port=15533,path='/home/antdb/data/db1');
ADD DATANODE SLAVE db1_2 for db1_1 (host=localhost2, port=15533,path='/home/antdb/data/db1');
ADD DATANODE SLAVE db1_3 for db1_1 (host=localhost3, port=15533,path='/home/antdb/data/db1');
ADD DATANODE MASTER db2_1(host=localhost2, port=15436,path='/home/antdb/data/db2');
ADD DATANODE SLAVE db2_2 for db2_1 (host=localhost1, port=15436,path='/home/antdb/data/db2');
ADD DATANODE SLAVE db2_3 for db2_1 (host=localhost3, port=15436,path='/home/antdb/data/db2');
-- 修改node表中的某一列(在集群没有init以前可以随意修改node表中的值):
ALTER DATANODE SLAVE db1_2(port=34332);
ALTER DATANODE MASTER db1_1(port=8899);
-- 删除node表中的一行(在集群没有init以前可以随意添加和删除node表中的值):
DROP DATANODE SLAVE db1_2;
DROP DATANODE MASTER db1_1;
DROP COORDINATOR MASTER coord1;
DROP GTMCOORD SLAVE gc_2;
-- 显示node表中所有节点信息:
list node;
参数设置表
Param 表(mgr_parm)用于存放 AntDB 集群中所有节点的 postgresql.conf 文件中变量的配置。所有在 postgresql.conf 文件中的变量都可以在这张表中设置并 reload 指定的节点。
下面是通过 list param 命令查看 param 表中的数据。
示例:
连接 ADBMGR 执行:
antdb=# list param;
输出结果示例如下:
| nodename | nodetype | key | value |
| -------- | ------------------ | ------------------------- | ----- |
| '*' | coordinator master | listen_addresses | '*' |
| '*' | coordinator master | max_connections | 800 |
| '*' | coordinator master | max_prepared_transactions | 800 |
| '*' | datanode master | max_connections | 1000 |
| '*' | gtmcoord master | max_connections | 2000 |
param 表每列的解释如下:
列名 | 描述 |
---|---|
nodename | AntDB 集群节点名字,星号“*”代表所有 nodetype 节点配置相同的配置。 |
nodetype | 节点类型。 |
key | postgresql.conf 文件中变量名 |
value | key 对应的变量值。 |
对 param 表常用操作命令举例如下(命令的具体使用方法参考第四章 param 表相关命令):
-- 向param表中添加一行:
SET GTMCOORD ALL (max_connections=1200);
SET GTMCOORD MASTER gc_1(superuser_reserved_connections=13);
SET GTMCOORD SLAVE gc_2(superuser_reserved_connections=14);
SET COORDINATOR ALL(autovacuum_max_workers=5);
SET COORDINATOR coord1(checkpoint_segments=128);
SET COORDINATOR coord2(checkpoint_segments=200);
SET DATANODE ALL(default_statistics_target=100);
SET DATANODE MASTER db1_1 (autovacuum_vacuum_cost_delay='30ms');
SET DATANODE SLAVE db1_2 (autovacuum_vacuum_cost_delay='60ms');
SET DATANODE SLAVE db1_3 (autovacuum_vacuum_cost_delay='90ms');
-- 把参数重新设置为默认值:
RESET DATANODE MASTER ALL ( max_connections);
-- 显示param表中所有数据:
list param;
注意1:
--若执行参数后出现需要重启服务的提示,则需要重启对应节点
antdb=# SET COORDINATOR MASTER coord2 (max_connections=1200);
NOTICE: parameter "max_connections" cannot be changed without restarting the server
SET PARAM
antdb=# stop COORDINATOR MASTER coord2;
NOTICE: [SUCCESS] host(10.21.13.210) cmd(STOP COORD) params( stop -D /data/ci62/datav2/coord2 -Z coordinator -m smart -o -i -w -c).
nodename | status | description
----------+--------+-------------
coord2 | t | success
(1 row)
antdb=# START COORDINATOR MASTER coord2;
NOTICE: [SUCCESS] host(10.21.13.210) cmd(START COORD) params( start -D /data/ci62/datav2/coord2 -Z coordinator -o -i -w -c -l /data/ci62/datav2/coord2/logfile).
nodename | status | description
----------+--------+-------------
coord2 | t | success
(1 row)
注意 2: 修改参数要保持主备节点的一致性。
数据库可配置参数的列表请参考附录。
访问策略表
hba 表用于管理存放 AntDB 集群中所有节点的 pg_hba.conf 文件中的配置项,当配置项被添加后,就会记录到此表中,用来标识。对于添加过的配置项,可以通过 list hba 命令显示。 hba 表每列的解释如下:
列名 | 描述 |
---|---|
nodename | AntDB 集群节点名字,星号“*”代表所有 nodetype 节点配置相同的配置。 |
hbavalue | hba 配置项的具体值。 |
对 hba 表常用操作命令举例如下(命令的具体使用方法参考第四章 hba 表相关命令):
--向hba表中添加coordinator的hba内容:
ADD hba COORDINATOR ALL ("host all all 10.0.0.0 8 md5");
-- 向hba表中添加datanode的hba内容:
ADD hba DATANODE ALL ("host all all 10.0.0.0 8 trust");
--显示hba表中的内容:
list hba;
--删除hba表中的内容:
DROP hba COORDINATOR ALL ("host all all 10.0.0.0 8 trust");