1 复制类型
PostgreSQL支持物理复制(流复制)及逻辑复制2种。通过流复制技术,可以从实例级复制出一个与主库一模一样的实例级的从库。流复制同步方式有同步、异步两种。
另一种复制方式为逻辑复制,区别于物理复制的是物理复制是基于实例级的复制,只能复制整个PostgreSQL实例,而不能基于部分库及表。从PostgreSQL10开始,出现了基于表级别的复制,即逻辑复制。
2 流复制
主库安装及从库编译此处就省略了,直接进入主从复制的安装环节。
2.1 修改主库配置文件postgresql.conf
/* 除了基础参数,搭建备库至少需要配置如下参数 */ listen_address = '*' wal_level = replica archive_mode = on archive_command = 'cp %p /data/postgresql/archive/%f ' max_wal_senders= 10 wal_keep_segments=1024 hot_standby = on
参数简要说明:
listen_address: 按需设置,本次测试配置为所有主机均可以访问,生产环境可以按需配置网段或IP等 wal_level: 设置流复制模式至少设置为replica archive_mode: 本次启用归档 archive_command:WAL日志归档命令,生产环境可以将归档拷贝到对应目录或其他机器上,本次测试配置为归档到本机的另一个目录下 max_wal_senders: 最大WAL发送进程数,此数量需大于等于从库个数且比max_connections小。 wal_keep_segments: pg_wal目录下保留WAL日志的个数,每个WAL文件默认16M,为保障从库能在应用归档落后时依旧能追上主库,此值建议设置较大一点。 hot_standby: 此参数控制在恢复归档期间是否支持只读操作,设置为ON后从库为只读模式。
注意: 上述参数中有涉及归档日志的路径,需手动创建
mkdir -p /data/postgresql/archive/
2.2 创建复制账号
为了数据安全及便于权限控制,创建一个复制专用的数据库账号
postgres=# create user repl REPLICATION LOGIN ENCRYPTED PASSWORD 'repl123'; CREATE ROLE
2.3 修改配置文件pg_hba.conf
添加复制账号的权限,因可能会主从切换,因此