postgresql11做归档


apt-get install postgresql-11
sudo -u postgres psql
alter user postgres with password 'alex1234';
vim /etc/postgresql/11/main/pg_hba.conf
host all all 0.0.0.0/0 md5
host replication all 0.0.0.0/0 md5
vim /etc/postgresql/11/main/postgresql.conf
listen_addresses = '*'
wal_level = replica
archive_mode = on
archive_command = 'ssh 192.168.219.33 test ! -f /tmp/pg_archive/%f && scp %p 192.168.219.33:/tmp/pg_archive/%f'
max_wal_senders = 10
wal_keep_segments = 1024
wal_sender_timeout = 60s

su - postgres
ssh-keygen
cat .ssh/id_rsa.pub 复制到从机的postgres用户

从:
apt-get install postgresql-11
ssh-keygen
vim .ssh/authorized_keys

主:
ssh 192.168.219.33
在从库创建/tmp/pg_archive 权限为postgres用户
mkdir /tmp/pg_archive
exit
systemctl restart postgresql
sudo -u postgres psql -c "select pg_switch_wal();"

从库的/tmp/pg_archive有日志了
主:
CREATE ROLE repl login replication encrypted password 'repl';


从:
停掉从库。
mv /var/lib/postgresql/11/main /var/lib/postgresql/11/main_bak
pg_basebackup -RFp --progress -D /var/lib/postgresql/11/main -h 192.168.219.32 -p 5432 -U repl --password
vim /var/lib/postgresql/11/main/recovery.conf
#primary_conninfo 注释
restore_command = 'cp /tmp/pg_archive/%f %p'

vim /etc/postgresql/11/main/postgresql.conf
max_connections = 1000 #一般查多于写的应用从库的最大连接数要比较大
hot_standby = on #说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s #数据流备份的最大延迟时间
wal_receiver_status_interval = 1s #多久向主报告一次从的状态,当然从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈


验证:
查看同步情况:
sudo -u postgres psql -c "select * from pg_stat_replication" 这里不是流复制,所有没有显示
主库create database alex;
查看从库是否同步


这种归档模式的同步需要主库上执行检查点切换后,主库的数据才会同步到从库
或是手工进行检查点的切换
select pg_switch_wal();

为啥要切换生成日志,因为架设的是基于文件的备库,只有归档传输到备库后才会应用,否则记录还在主库的xlog中.

原文地址:https://www.cnblogs.com/alexhjl/p/12738126.html