首页 > 数据库 > PostgreSQL > 2. PostgreSQL 流复制
1. PostgreSQL 流复制3 个主要进程:
wal sender, wal receiver , startup
2. 配置流复制:
step 1:
在master 端创建用于流复制的用户replicator
create user replicator with replication encrypted password 'replicator';
创建完成后可以在psql中通过\du命令查看创建的用户

step 2:
在master 的参数配置,下面这些参数需要配置
ALTER SYSTEM SET wal_level TO 'hot_standby';
ALTER SYSTEM SET archive_mode TO 'ON';
ALTER SYSTEM SET max_wal_senders TO '5';
ALTER SYSTEM SET wal_keep_segments TO '10';
ALTER SYSTEM SET listen_addresses TO '*';
ALTER SYSTEM SET hot_standby TO 'ON';
ALTER SYSTEM SET archive_command TO 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f';
配置完这些参数后需要重启数据库pg_ctl restart, 可以在$PGDATA目录下的postgresql.auto.conf文件查看参数是否生效。

step 3:
在$PGDATA目录的pg_hba.conf文件中添加slave主机的信息
host replication replicator 192.168.1.66/32 md5
配置完成后需要重新加载pg_ctl reload。
step 4:
复制master库到备库,可以通过如下方法:
pg_basebackup -h 192.168.1.70 -U replicator -p 5432 -D $PGDATA -P -Xs -R
当前只是做测试,没有数据,此步操作很快,会在slave端生成所有的文件,同时还会包含recovery.conf文件。

step 5:
启动slave端pg数据库 pg_ctl start
检查master端进程:
-bash-4.2$ ps -ef | grep sender
postgres 6515 5852 0 14:55 ? 00:00:00 postgres: wal sender process replicator 192.168.1.66(50228) streaming 0/6000060
检查slave端进程:
-bash-4.2$ ps -ef | grep receiver
postgres 19052 19046 0 14:55 ? 00:00:00 postgres: wal receiver process streaming 0/6000060
-bash-4.2$ ps -ef | grep startup
postgres 19048 19046 0 14:55 ? 00:00:00 postgres: startup process recovering 000000010000000000000006
也可以在master端通过视图检查:

至此一个简单的PostgreSQL 流复制配置完成,其中的知识点:
1. 流复制设计三个进程 wal sender, wal receiver , startup,在配置完成后可以通过下面命令查看。
ps -ef | grep sender
ps -ef | grep receiver
ps -ef | grep startup
也可以在Master端通过视图pg_stat_replication查看。
select * from pg_stat_replication;
2. 会涉及到postgresql.conf, pg_hba.conf两个参数文件的配置,都是在master端进行配置。
postgresql.conf文件需要配置的参数有:
ALTER SYSTEM SET wal_level TO 'hot_standby';
ALTER SYSTEM SET archive_mode TO 'ON';
ALTER SYSTEM SET max_wal_senders TO '5';
ALTER SYSTEM SET wal_keep_segments TO '10';
ALTER SYSTEM SET listen_addresses TO '*';
ALTER SYSTEM SET hot_standby TO 'ON';
ALTER SYSTEM SET archive_command TO 'test ! -f /mnt/server/archivedir/%f && cp %p /mnt/server/archivedir/%f';
pg_hba.conf 文件需要配置slave端的信息:
host replication replicator 192.168.1.66/32 md5
3. pg_basebackup工具的使用
在进行stream replication配置是需要将master端的数据同步到slave端,需要使用pg_basebackup工具将数据同步到slave端。
pg_basebackup 工具的使用可以作为一个单独的章节。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21374452/viewspace-2758683/ ,如需转载,请注明出处,否则将追究法律责任。