一、获取安装包
posegresql安装界面找到*Advanced users* can also download a [tar.gz archive](https://www.enterprisedb.com/download-postgresql-binaries) of the binaries, without the installer.
后点击连接[tar.gz archive]
即可进入下载界面,下载后不需要编译直接解压即可。
二、配置文件
1、解压后目录:/opt/pgsql
2、创建目录:/opt/pgsql/data/pg_root
3、查看版本:postgres --version
4、切换到postgres用户初始化数据库:
su postgres
echo "123456" >> /data/pgpass
initdb -D /data/pg10/pg_root -E UTF8 --locale=C -U postgres --pwfile=/data/pgpass
5、修改主库/opt/pgsql/data/pg_root/postgresql.conf文件(主备库保持一致即可):
listen_addresses = '*'
wal_level = hot_standby
archive_mode = on
archive_command = '/bin/date'
max_wal_senders = 10
wal_keep_segments = 512
hot_standby = on
6、(备库先执行1-4步骤)修改备库上的配置文件开启远程访问/opt/pgsql/data/pg_root/pg_hba.conf
host all all 192.168.169.0/24 trust
host replication repuser 192.168.169.0/24 trust
三、创建备份用户
1、启动主库:pg_ctl start -D $PGDATA -l logfile
2、使用管理员用户创建备份用户:
[root@master pgsql]:psql -U postgres -p 5432
postgres=# CREATE USER repuser REPLICATION LOGIN CONNECTION LIMIT 5 ENCRYPTED PASSWORD 'domac123';
四、使用 pg_basebackup 方式部署流复制
1、在备服务器上停止psql服务:pg_ctl stop -m fast
2、删除/opt/pgsql/data/pg_root目录:rm -rf /opt/pgsql/data/pg_root
3、使用pg_basebackup触发基准备份:
pg_basebackup -D $PGDATA -Fp -Xs -v -P -h 192.168.169.91 -p 5432 -U repuser -W
4、备库配置recovery.conf
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=192.168.169.91 port=5432 user=repuser'
五、测试
1、主库上创建test表,并插入了一条数据:
postgres=# create table test(id int4);
postgres=# insert into test values(6);
2、在备库上进行查询观察是否同步成功:
postgres=# select * from test;
3、主库删除数据:
postgres=# delete from test where id=6;
postgres=# insert into test values(9);
4、备库查询:postgres=# select * from test;
5、备库插入数据提示:cannot execute INSERT in a read-only transaction
六、主备切换
1、关闭主库:pg_ctl stop -m fast
2、备库上执行pg_ctl promote命令激活备库:pg_ctl promote -D $PGDATA
,命令执行后,如果原来的 recovery.conf 更名为 recovery.done, 表示切换成功
3、在老的主库的$PGDATA目录下也创建recovery.conf文件内容和原备库内容一致,更换下IP地址即可。
4、启动主库
5、检测主备情况,分别在主备机上执行:select pg_is_in_recovery();
,返回值f代表主库,返回值t代表备库
网友评论