跳到主要内容

备库节点部署

备库节点部署(node2 / node3)​

在两个备库节点(192.168.221.137、192.168.221.138)上,安装类型选择 s(slave)。备库脚本会自动通过 pg_basebackup 从主库同步数据并建立流复制。

备库安装自动步骤​

备库安装的前 5 步与主库一致(依赖、用户、目录、版本、license),第 6 步起为流复制搭建。步骤 1 至步骤 6 开头的实际连续输出如下:

Enter HaloDB database installation type: Enter m for master, s for slave
s
1. Installing HaloDB Database - Slave
1. Start installing database dependencies
Database dependencies installation completed
2. Creating halo user
halouser already exists. Delete user? Enter yes/no, press Enter to skip deletion by default
no
Not deleting userhalo
3. Creating database directory
Warning: For cluster database, database directory and archive directory paths must be consistent across all nodes!
Current software installation directory: /u01/app/halo
Enter database directory, press Enter to use default /data/halo

Input is empty, using default database directory /data/halo
/data/halo directory already exists
Modifying halo user environment variables
Creating /var/run/halo
Modifying existing /var/run/ directoryhalo
total 0
4. Checking halo installation version
pg_ctl (Halo) 1.0.16.11 (268319)
5. Copying license.lic to /u01/app/halo/product/dbms/16
6. Creating streaming replication
Physical streaming replication starts:

说明: 若 halo 用户已存在,脚本会询问 Delete user? Enter yes/no, press Enter to skip deletion by default,默认回车不删除,演示中输入 no 保留现有用户;Not deleting userhalo 为脚本原文输出(user 与 halo 连写)。步骤 4 输出的 pg_ctl (Halo) 1.0.16.11 (268319) 即当前安装的数据库版本号。

流复制配置(步骤 6)​

备库的核心交互是流复制参数。脚本依次提示输入,实际终端输出如下(以 node2 为例):

6. Creating streaming replication
Physical streaming replication starts:

1. Please enter database master IP address, e.g.: 10.10.68.168
192.168.221.136
yes
192.168.221.136 available.
Database master IP address is: 192.168.221.136

2. Enter database streaming replication username, e.g.: replica
replica

Database user is: replica

3. Enter streaming replication user password
(手工输入复制用户密码,输入不回显)

4. Enter streaming replication port, e.g.: 1921, default is 1921
1921
Port is: 1921

5. Enter replication slot name, default is hostname, if hostname is localhost, default is IP
node2
Replication slot name is: node2

流复制交互参数说明:

序号交互项演示输入(node2)演示输入(node3)说明
1主库 IP 地址192.168.221.136192.168.221.136主库节点 IP
2流复制用户名replicareplica主库创建的复制用户
3流复制用户密码(复制用户密码)(复制用户密码)对应复制用户的密码,输入不回显
4流复制端口19211921数据库端口,默认 1921
5复制槽名node2node3各备库需不同,建议与节点名一致

注意: 两个备库的复制槽名必须不同(演示中分别使用 node2、node3)。复制用户 replica 需在主库提前创建并授予 REPLICATION 权限。

基础备份同步​

流复制参数确认后,脚本自动调用 pg_basebackup 从主库拉取基础备份并创建复制槽:

Deleting duplicate replication slot
ERROR: replication slot "node2" does not exist
CHECKPOINT
Creating streaming replication
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/6000028 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created replication slot "node2"
140368/140368 kB (100%), 1/1 tablespace
pg_basebackup: write-ahead log endpoint: 0/6000100
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk...
pg_basebackup: renaming backup_manifest.tmp to backup_manifest
pg_basebackup: base backup completed
Downgrading slave data directory permissions

说明: 首行 ERROR: replication slot "node2" does not exist 是脚本先尝试删除同名复制槽的正常提示(首次创建时槽尚不存在),随后即重新创建。备库执行 pg_basebackup 前,数据目录(/data/halo)必须为空,否则会报错;一键脚本会自动处理目录权限。

至此主库与两备库的数据库及流复制搭建完成。接下来在三台服务器上继续完成 etcd 与 Clustermgr 配置。