pgsql安装及主从配置
本次环境:CentOS6.8、pgsql10
主机master:192.168.137.30
主机slave:192.168.137.31
1、安装pgsql
从官网现在pgsql10源码包postgresql-10.4-1-linux-x64-binaries.tar.gz,该包解压后无需安装,初始化数据库后即可直接使用
tar -xzvf postgresql-10.4-1-linux-x64-binaries.tar.gz -C /opt/ #将源码包解压到/opt下,出现pgsql目录
useradd postgres #创建普通用户,pgsql禁止root用户启动
passwd postgres
chown -R postgres.postgres /opt/pgsql/ #更改pgsql目录的所属者
su - postgres #切换到postgres用户
mkdir /opt/pgsql/data #创建data目录,使用该目录来初始化数据库
/opt/pgsql/bin/initdb -D /opt/pgsql/data #初始化数据库
###这时会提醒成功,并且可直接运行./pg_ctl -D /opt/pgsql/data -l logfile start来启动数据库
ls /opt/pgsql/data #查看是否生成数据
###postgresql.conf pgsql配置文件,内容较多,可查阅相关文档进行修改
###pg_hba.conf pgsql用户访问权限配置文件
/opt/pgsql/bin/postgres -D /opt/pgsql/data #启动pgsql
2、pgsql主从搭建
master(192.168.137.30):
/opt/pgsql/bin/psql postgres #登录本地数据库
create role replicator login replication password 'wang123';#创建备份用户及密码
vi /opt/pgsql/data/postgres.conf #修改配置文件,此处仅列出本次必要配置
wal_level = hot_standby #这个是设置主为wal的主机
max_wal_senders = 32 #设置可以最多有几个流复制连接,有几个从,就设置几个
wal_keep_segments = 256 #设置流复制保留的最多的xlog数目
wal_sender_timeout = 60s #设置流复制主机发送数据的超时时间
max_connections = 100 #这个设置要注意下,从库的max_connections必须要大于主库的
vi /opt/pgsql/data/pg_hba.conf #修改控制用户登录权限的文件
host replication replicator 192.168.137.31/32 md5 #增加允许slave主机的ip地址以replicator用户身份访问
重启pgsql服务
slave(192.168.137.31):
解压pgsql源码包文件至/opt下
mkdir data
/opt/pgsql/bin/pg_basebackup -F p --progress -D /opt/pgsql/data -h 192.168.137.30 -p 5432 -U replicator --password
#执行该命令,slave会去master上拷贝data目录至本地data目录下
vi recovery.conf #编写复制用配置文件
standby_mode = on #声明这台机器为从库
primary_conninfo = 'host=192.168.137.30 port=5432 user=replicator password=wang123' #指定master对应主库的信息
recovery_target_timeline = 'latest' #指定流复制同步到最新的数据
vi postgres.conf
max_connections = 1000 #一般查多于写的应用,从库的最大连接数要设置大一些
hot_standby = on #说明这台机器不仅仅是用于数据归档,也用于数据查询
max_standby_streaming_delay = 30s #数据流备份的最大延迟时间
wal_receiver_status_interval = 10s #从每次数据复制都会向主报告状态,这里只是设置最长的间隔时间
hot_standby_feedback = on #如果有错误的数据复制,是否向主进行反馈
/opt/pgsql/bin/postgres -D /opt/pgsql/data #启动pgsql
验证主从是否搭建成功
master:
ps -elf|grep postgres
postgres: wal sender process replica #主库出现发送wal的进程
登录数据库
select * from pg_stat_replication; #显示sender进程信息
create database ceshi; #创建一个库,查看从库是否同步
slave:
ps -elf|grep postgres
postgres: wal receiver process #从库出现接受wal进程
登录数据库
\l #查看是否生成ceshi库