PostgreSQL 中的复制
-
配置主服务器
-
要求:
- 复制用户进行复制活动
- 用于存储 WAL 档案的目录
-
创建复制用户
createuser -U postgres replication -P -c 5 --replication
+ option -P will prompt you for new password + option -c is for maximum connections. 5 connections are enough for replication + -replication will grant replication privileges to the user
-
在数据目录中创建存档目录
mkdir $PGDATA/archive
-
编辑 pg_hba.conf 文件
这是主机基本身份验证文件,包含客户端自动身份验证的设置。添加以下条目:
#hosttype database_name user_name hostname/IP method host replication replication <slave-IP>/32 md5
-
编辑 postgresql.conf 文件
这是 PostgreSQL 的配置文件。
wal_level = hot_standby
此参数决定从属服务器的行为。
`hot_standby` logs what is required to accept read only queries on slave server. `streaming` logs what is required to just apply the WAL's on slave. `archive` which logs what is required for archiving.
archive_mode=on
此参数允许使用
archive_command
参数将 WAL 段发送到存档位置。archive_command = 'test ! -f /path/to/archivedir/%f && cp %p /path/to/archivedir/%f'
基本上,
archive_command
的作用是将 WAL 段复制到存档目录。wal_senders = 5
这是 WAL 发送方进程的最大数量。现在重启主服务器。
-
-
将 primay 服务器备份到从属服务器
在服务器上进行更改之前,请停止主服务器。
要点:在完成所有配置和备份步骤之前,请勿再次启动该服务。你必须将备用服务器置于准备好作为备份服务器的状态。这意味着必须安装所有配置设置,并且必须已同步数据库。否则,流复制将无法启动
-
现在运行 pg_basebackup 实用程序
pg_basebackup
实用程序将数据从主服务器数据目录复制到从数据目录。$ pg_basebackup -h <primary IP> -D /var/lib/postgresql/<version>/main -U replication -v -P --xlog-method=stream
-D: This is tells pg_basebackup where to the initial backup
-h: Specifies the system where to look for the primary server
-xlog-method=stream: This will force the pg_basebackup to open another connection and stream enough xlog while backup is running.
It also ensures that fresh backup can be started without failing back to using an archive.
-
配置备用服务器
要配置备用服务器,你将编辑 postgresql.conf 并创建名为 recovery.conf 的新配置文件。
hot_standby = on
这指定是否允许你在恢复时运行查询
-
创建 recovery.conf 文件
standby_mode = on
将连接字符串设置为主服务器。替换为主服务器的外部 IP 地址。替换为名为 replication 的用户的密码
`primary_conninfo =‘host = port = 5432 user = replication password =’
(可选)设置触发器文件位置:
trigger_file = '/tmp/postgresql.trigger.5432'
你指定的
trigger_file
路径是你希望系统故障转移到备用服务器时可以添加文件的位置。文件的存在触发故障转移。或者,你可以使用 pg_ctl promote 命令来触发故障转移。
-
-
启动备用服务器
你现在已经准备就绪,并准备启动备用服务器
归因
本文主要源于并归因于如何设置 PostgreSQL 以实现高可用性和热备份复制,并对格式和示例进行了微小更改,并删除了一些文本。该来源是在知识共享公共许可证 3.0下发布的,该许可证在此处进行了维护。