Postgresql 9.6.6主从流复制配置
1.主从介绍
PostgreSQL在9之后引入了主从的流复制机制,集群中主库工作在连续归档模式下,备库工作在恢复模式下,备库持续从主服务器读取WAL文件;连续归档不需要对数据库表做任何改动,对主服务器的性能影响相对较低。
1.1主从方式
基于文件日志传送和流复制
2.实验环境
序号 |
主机名 |
IP地址 |
操作系统版本 |
DB版本 |
主从关系 |
1 |
post1 |
10.0.120.150 |
Redhat 6.6 |
Postgres 9.6.6 |
psql_master |
2 |
post2 |
10.0.120.151 |
Redhat 6.6 |
Postgres 9.6.6 |
psql_standby |
3.安装前环境配置
3.1环境依赖包安装
分区划分如下
两台同时安装:
yum -y install readline
yum -y install readline-devel
yum -y install zlib
yum -y install bison
yum -y install flex
yum -y install perl
yum install -y gcc*
3.2主、从账号添加
groupadd postgres
useradd -g postgres postgres
echo "postgres" | passwd --stdin postgres
mkdir -p /postgres/data
chown -R postgres:postgres /postgres/
chmod -R 775 /postgres
3.3环境变量配置
两台同时配置:
echo "export PATH=/postgres/bin:$PATH" >>/home/postgres/.bash_profile
echo "export LD_LIBRARY_PATH=/postgres/lib" >>/home/postgres/.bash_profile
echo "export MANPATH=/postgres/share/man:$MANPATH" >>/home/postgres/.bash_profile
4.安装步骤
源码下载:http://www.postgresql.org/download/
su - postgres
wget http://www.postgresql.org/download/postgresql-9.6.6.tar.gz
gunzip postgresql-9.6.6.tar.gz
tar -xvf postgresql-9.6.6.tar
cd postgresql-9.6.6
5.主库初始化(此处为post1)
6.主库配置
(1)创建复制用户,进行主从同步使用
(2)主库上配置从库可以采用repl账号
Vi /postgres/data/pg_hba.conf
(3)修改主库配置文件/postgres/data/postgresql.conf
改监控端口:
Listen_adresses = ‘*’
wal_level = hot_standby 主从设置为热血模式,流复制必选
max_wal_senders=2 流复制允许连接进程
wal_keep_segments =64
max_connections = 100 默认参数,非主从配置相关参数,表示到数据库的连接数
(4)重启主库服务
7.从库配置
(1)基础备份
从库安装完成后,不初始化,若已经初始化,删除其data目录
备注:
-h,主库主机,-p,主库服务端口;
-U,复制用户;
-F,p是默认输出格式,输出数据目录和表空间相同的布局,t表示tar格式输出;
-P,同--progress,显示进度;
-D,输出到指定目录;
因为主库采用的是md5认证,这里需要密码认证。
(2) 从库配置文件配置
#在基础备份时,初始化文件是从主库复制来的,所以配置文件一致,注释掉(3)创建恢复文件recovery.conf
调整参数:
recovery_target_timeline = 'latest'
standby_mode = on
primary_conninfo = 'host=10.0.120.150port=5432 user=repl password=repl1234'
备注:
recovery.conf #在做基础备份时,也可通过-R参数在备份结束后自动生产一个recovery.conf文件
standby_mode = on #指明从库身份
primary_conninfo = 'host=10.0.120.150 port=5432 user=repl password=repl1234' #连接到主库信息
recovery_target_timeline = 'latest' #同步到最新数据
指定触发文件,文件存在时,将触发从库提升为主库,前提是必须设置”standby_mode = on”;如果不设置此参数,也可采用”pg_ctl promote“触发从库切换成主库
#trigger_file = ‘/postgres/data/trigger_activestandby’
(4)启动从库服务
8.验证主从配置
(1)查看主库sender进程
(2)查看从库receiver进程
(3)SQL查询主从状态
主库创建表test:
从库可查询,从库只能读,不可插入数据
命令查看主从状态
到此主从复制建立完成。
9.主从切换
(1)主库上执行:
su - postgres
pg_ctl stop -m fast #停主库日志
pg_controldata /postgres/data/ #此时Database cluster state: shutdown
(2)从库切换为主库:
su - postgres
pg_ctl promote
pg_controldata /postgres/data #此时Database cluster state: Inproduction