posegresql搭建及主备切换

2019-08-14  本文已影响0人  建康_木子

一、获取安装包

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代表备库
上一篇下一篇

猜你喜欢

热点阅读