PostgreSQL本地Slave搭建步骤
PostgreSQL是什么?
PostgreSQL是一个开源对象关系型数据库管理系统,并侧重于可扩展性和标准的符合性。PostgreSQL面向企业复杂SQL处理的OLTP在线事务处理场景,支持NoSQL数据类型(JSON/XML/hstore),支持GIS地理信息处理,在可靠性、数据完整性方面有良好声誉,适用于互联网网站、位置应用系统、复杂数据对象处理等应用场景。
本文指导您使用华为云弹性云服务器搭建PostgreSQL。
搭建前准备
- 创建弹性云服务器。
- 配置弹性云服务器安全组规则:开放 5432 端口。
本文使用的云服务器操作系统:CentOS 7.6 64bit
本文使用的PostgreSQL版本:PostgreSQL (11.2)
- 为了更好的获取和更新系统和软件,建议您更新镜像源为华为云镜像源,详细操作,请参见如何使用自动化工具配置华为云镜像源(x86_64和ARM)?。
主节点配置
- 依次执行以下命令,安装PostgreSQL。
# yum update -y
# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install postgresql11-server
# yum install postgresql11
# /usr/pgsql-11/bin/postgresql-11-setup initdb
# systemctl enable postgresql-11
# systemctl start postgresql-11
- 执行以下命令,切换到postgres用户(安装好生成默认的用户)。
- 执行以下命令,进入数据库 。
- 执行以下命令,创建账号并授权。
create role 账户名 login replication encrypted password '密码';
上述命令中密码必须用单引号。
以创建的账号名为dbar,密码为xxxxx为例,命令如下:
create role dbar login replication encrypted password 'xxxxx';
- 执行以下命令,修改/var/lib/pgsql/11/data/pg_hba.conf配置文件,添加如下内容。
- 执行以下命令,修改/var/lib/pgsql/11/data/postgresql.conf。
wal_level = hot_standby #热备模式 max_wal_senders= 6 #可以设置最多几个流复制链接 wal_sender_timeout = 60s #流复制主机发送数据的超时时间 max_connections = 512 #从库的 max_connections要大于主库 archive_command=’cp %p /var/lib/pgsql/11/data/archivelog/%f’#归档 wal_keep_segments=10240 archive_mode = on #允许归档 listen_addresses= xxx.xx.xx.xx #实际的本地ip地址
- 执行以下命令,重启服务。
# systemctl restart postgresql-11
从节点配置
- 依次执行以下命令,完成从节点安装。
# yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# yum install postgresql11-server
# yum install postgresql11
- 执行以下命令,复制master配置相关文件。
# pg_basebackup -h 主节点ip -U dbar -D /var/lib/pgsql/11/data -X stream -P
# cp /usr/pgsql-11/share/recovery.conf.sample /var/lib/pgsql/11/data/recovery.conf
- 执行以下命令,修改recovery.conf文件。
standby_mode = on # 声明此节点为从库 primary_conninfo = 'host=主节点IP port=5432 user=dbar password=xxxxx(此处密码不能加单引号) trigger_file = '/var/lib/pgsql/11/data/trigger.kenyon' #主从切换时后的触发文件 recovery_target_timeline = 'latest' restore_command = 'cp /var/lib/pgsql/11/data/archivelog/%f %p' archive_cleanup_command = 'pg_archivecleanup /var/lib/pgsql/11/data/archivelog %r' #清除过期归档
- 执行以下命令,修改postgresql.conf文件。
- 修改/var/lib/pgsql/11/data/postgresql.conf。
listen_addresses= xxx.xx.xx.xx #实际的本地ip地址
max_connections = 600
- 执行以下命令,启动服务,设置开机自启。
#systemctl enable postgresql-11
#systemctl start postgresql-11
验证部署完成
- 执行以下命令,在主节点中可查看到sender进程。
- 执行以下命令,从节点中可查看到receiver进程。
- 执行以下命令,主库中可查看到从库状态。
-bash-4.2# psql
replication=# select * from pg_stat_replication;