第八步:启动agent
有两种方式:一次启动全部agent和启动指定的主机agent。
注意:password是host表中主机user对应的linux系统密码,用于与主机通信,而非AntDB数据库的用户密码。
当密码是以数字开头时,需要加上单引号或者双引号,例如password ‘12345z’是正确的,password 12345z则会报错;如果密码不是以数字开头,则加不加引号都行。
start agent all password '123456';
start agent adb01,adb02 password '123456';
start agent adb03 password '123456';
当密码不对,启动agent失败时,报错如下:
postgres=# start agent adb01 password '123456abc';
hostname | status | description
------------+--------+-------------------------------------------
adb01 | f | Authentication failed (username/password)
(1 row)
第九步:配置集群节点
Node表中添加gtmcoord、coordinator、datanode master、datanode slave等节点信息。
注意:host名称必须来自host表,端口号不要冲突,path指定的文件夹下必须为空,否则初始化将失败并报错。这种设置,是防止用户操作时,忘记当前节点下还有有用的数据信息。
添加命令:
add节点 | command |
---|---|
添加coordinator信息 | add coordinator master 名字(path = 'xxx', host='localhost1', port=xxx); |
添加datanode master信息 | add datanode master 名字(path = 'xxx', host='localhost1', port=xxx); |
添加datanode slave信息,从节点与master不同名,所以指定的master必须存在,同异步关系通过SYNC_STATE参数设置 | add datanode slave 名字 for master_name (host='localhost2', port=xxx, path='xxx', SYNC_STATE='sync'); |
添加gtmcoord信息,从节点必须与主节点不同名,所以指定的master必须存在,同异步关系通过SYNC_STATE参数设置 | add gtmcoord master名字(host='localhost3',port=xxx, path='xxx');add gtmcoord slave名字 for maste_name(host='localhost2',port=xxx, path='xxx') |
添加完成后,使用命令list node
查看刚刚添加的节点信息
举例:(gtmcoord/datanode 均为一主一从)
add host adb01(port=22,protocol='ssh',adbhome='/opt/app/antdb',address="10.1.226.201",agentport=8432,user='antdb');
add host adb02(port=22,protocol='ssh',adbhome='/opt/app/antdb',address="10.1.226.202",agentport=8432,user='antdb');
add host adb03(port=22,protocol='ssh',adbhome='/opt/app/antdb',address="10.1.226.203",agentport=8432,user='antdb');
add coordinator master cn1(host='adb01', port=5432,path = '/home/antdb/data/cn1');
add coordinator master cn2(host='adb02', port=5432,path = '/home/antdb/data/cn2');
add datanode master dn1_1(host='adb01', port=14332,path = '/home/antdb/data/dn1_1');
add datanode slave dn1_2 for dn1_1 (host='db02',port=14332,path='/home/antdb/data/dn1_2');
add datanode master dn2_1(host='adb02', port=24332,path = '/home/antdb/data/dn2_1');
add datanode slave dn2_2 for dn2_1(host='adb01',port=24332,path='/home/antdb/data/dn2_2');
add gtmcoord master gc_1(host='adb03',port=6655, path='/home/antdb/data/gc_1');
add gtmcoord slave gc_2 for gc_1(host='adb02',port=6655,path='/home/antdb/data/gc_2');
生产环境节点部署建议:
第十步:init all 初始化集群
集群的节点都已经添加完成,此时就可以使用命令init all
来初始化集群了。如下所示,可以看到init all
内部的操作步骤。
postgres=# init all ;
operation type | nodename | status | description
-----------------------+----------+--------+-------------
init gtmcoord master | gc_1 | t | success
start gtmcoord master | gc_1 | t | success
init coordinator | cn1 | t | success
init coordinator | cn2 | t | success
start coordinator | cn1 | t | success
start coordinator | cn2 | t | success
init datanode master | dn1_1 | t | success
init datanode master | dn2_1 | t | success
start datanode master | dn1_1 | t | success
start datanode master | dn2_1 | t | success
init gtmcoord slave | gc_2 | t | success
start gtmcoord slave | gc_2 | t | success
init datanode slave | dn1_2 | t | success
init datanode slave | dn1_2 | t | success
start datanode slave | dn2_2 | t | success
start datanode slave | dn2_2 | t | success
config coordinator | cn1 | t | success
config coordinator | cn2 | t | success
(18 rows)
如果 init all
中间出现错误,部分节点init失败,想要重新初始化,可以执行以下命令,清理环境后重新初始化。
stop all mode i; --停止所有节点
clean all; --清空节点目录
init all; --重新初始化
通过monitor all
查看集群各个节点的运行状态:
postgres=# monitor all ;
nodename | nodetype | status | description | host | port | recovery | boot time | nodezone
----------+-----------------+--------+-------------+--------------+------------ --------+----- --------+-------------+--------------+------------
cn1 | coordinator master | t | running | 10.1.226.201 | 5432 | false | 2020-09-01 10:09:30.123+08 | local
cn2 | coordinator master | t | running | 10.1.226.202 | 5432 | false | 2020-09-01 10:09:30.123+08 | local
dn1_1 | datanode master | t | running | 10.1.226.201 | 14332 | false | 2020-09-01 10:09:30.123+08 | local
dn1_2 | datanode slave | t | running | 10.1.226.202 | 14332 | true | 2020-09-01 10:09:30.123+08 | local
dn2_1 | datanode master | t | running | 10.1.226.202 | 24332 | false | 2020-09-01 10:09:30.123+08 | local
dn2_2 | datanode slave | t | running | 10.1.226.201 | 24332 | true | 2020-09-01 10:09:30.123+08 | local
gc_1 | gtmcoord master | t | running | 10.1.226.203 | 6655 | false | 2020-09-01 10:09:30.123+08 | local
gc_2 | gtmcoord slave | t | running | 10.1.226.202 | 6655 | true | 2020-09-01 10:09:30.123+08 | local
(8 rows)
至此,AntDB集群初始化完成!
其中:recovery
字段表示节点是否处于 recovery
状态,正常情况下,master 节点的值为 false
, slave 节点的值为 true
.
注意:init all
会包含start all
操作,仅在初始化集群的时候使用,后续如需启动集群,请使用start all
命令。
可以通过psql
命令登录gtmcoord master
或者coord master
节点:
psql -p 5432 #登录coord
psql -p 6655 #登录gtmcoord
注意:应用需要连接gtmcoord
或者coord
,进行增删改查等操作,而非adbmgr
,adbmgr
只是用于管理集群。
AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔电信核心交易,保障系统持续稳定运行近十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。