上云无忧 > 文档中心 > 腾讯云云服务器CVM - 搭建 PostgreSQL 主从架构
云服务器CVM
腾讯云云服务器CVM - 搭建 PostgreSQL 主从架构

文档简介:
操作场景: PostgreSQL 是一个开源对象关系型数据库管理系统,并侧重于可扩展性和标准的符合性。PostgreSQL 面向企业复杂 SQL 处理的 OLTP 在线事务处理场景,支持 NoSQL 数据类型(JSON/XML/hstore),支持 GIS(Geographic Information System 或 Geo-Information system)地理信息处理,在可靠性、数据完整性方面有良好声誉,适用于互联网网站、位置应用系统、复杂数据对象处理等应用场景。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

操作场景

PostgreSQL 是一个开源对象关系型数据库管理系统,并侧重于可扩展性和标准的符合性。PostgreSQL 面向企业复杂 SQL 处理的 OLTP 在线事务处理场景,支持 NoSQL 数据类型(JSON/XML/hstore),支持 GIS(Geographic Information System 或 Geo-Information system)地理信息处理,在可靠性、数据完整性方面有良好声誉,适用于互联网网站、位置应用系统、复杂数据对象处理等应用场景。
本文指导您在 CentOS 7 操作系统的云服务器实例上搭建 PostgreSQL。

示例软件版本

本文搭建的 PostgreSQL 组成及版本使用说明如下:
Linux:Linux 操作系统,本文以 CentOS 7.6 为例。
PostgreSQL:关系型数据库管理系统,本文以 PostgreSQL 12 为例。

前提条件

已创建两台云服务器实例(一台云服务器实例作为主节点,另一台云服务器实例作为从节点)。 具体步骤请参见 通过购买页创建实例
新建的两台云服务器实例已配置安全组规则:放通5432端口。 具体步骤请参见 添加安全组规则

操作步骤

配置主节点

1. 登录主节点实例。
2. 执行以下命令,升级所有包、系统版本和内核。
		
yum update -y
3. 依次执行以下命令,安装 PostgreSQL。 本文以使用 PostgreSQL 12 版本为例,您可按需选择其他版本。
		
wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
		
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
		
yum install postgresql12-server postgresql12-contrib -y
		
/usr/pgsql-12/bin/postgresql12-setup initdb
4. 执行以下命令,启动服务。
		
systemctl start postgresql-12.service
5. 执行以下命令,设置服务开机自启动。
		
systemctl enable postgresql-12.service
6. 执行以下命令,登录 postgres 用户。
		
su - postgres
7. 执行以下命令,进入 PostgreSQL 交互终端。
		
psql
8. 执行以下命令,为用户 postgres 设置密码,增强安全性。
		
ALTER USER postgres WITH PASSWORD '自定义密码';
9. 执行以下命令,创建数据库账号,并设置密码及登录权限和备份权限。
		
create role 账户名 login replication encrypted password '自定义密码';
本文以创建数据库账号 replica,密码 123456 为例,则执行以下命令。
		
create role replica login replication encrypted password '123456';
10. 执行以下命令,查询账号是否创建成功。
		
SELECT usename from pg_user;
返回如下结果,表示已创建成功。
		
usename
----------
postgres
replica
(2 rows)
11. 执行以下命令,查询权限是否创建成功。
		
SELECT rolname from pg_roles;
返回如下结果,表示已创建成功。
		
rolname
-------------------
pg_signal_backend
postgres
replica
(3 rows)
12. 输入 \q,按 Enter,退出 SQL 终端。
13. 输入 exit,按 Enter,退出 PostgreSQL。
14. 执行以下命令,打开 pg_hba.conf 配置文件,设置 replica 用户白名单。
		
vim /var/lib/pgsql/12/data/pg_hba.conf
15. 按 i 切换至编辑模式,在 IPv4 local connections 段添加如下两行内容:
		
host all all <从节点的VPC IPv4网段> md5 #允许 VPC 网段中 md5 密码认证连接
host replication replica <从节点的VPC IPv4网段> md5 #允许用户从 replication 数据库进行数据同步
例如,数据库账号为 replica,从节点的 VPC IPv4 网段为 xx.xx.xx.xx/16,则在 IPv4 local connections 段添加如下内容:
		
host all all xx.xx.xx.xx/16 md5
host replication replica xx.xx.xx.xx/16 md5
16. Esc,输入 :wq,保存文件返回。
17. 执行以下命令,打开 postgresql.conf 文件。
		
vim /var/lib/pgsql/12/data/postgresql.conf
18. i 进入编辑模式,分别找到以下参数,并将参数修改为以下内容:
		
listen_addresses = '*' #监听的内网 IP 地址
max_connections = 100 #最大连接数,从库的 max_connections 必须要大于主库的
wal_level = hot_standby #启用热备模式
synchronous_commit = on #开启同步复制
max_wal_senders = 32 #同步最大的进程数量
wal_sender_timeout = 60s #流复制主机发送数据的超时时间
19. Esc,输入 :wq,保存文件返回。
20. 执行以下命令,重启服务。
		
systemctl restart postgresql-12.service

配置从节点

1. 登录从节点实例。
2. 执行以下命令,升级所有包、系统版本和内核。
		
yum update -y
3. 依次执行以下命令,安装 PostgreSQL。
		
wget --no-check-certificate https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
		
rpm -ivh pgdg-redhat-repo-latest.noarch.rpm
		
yum install postgresql12-server postgresql12-contrib -y
4. 执行以下命令,使用 pg_basebackup 基础备份工具制定备份目录。
		
pg_basebackup -D /var/lib/pgsql/12/data -h <主节点公网 IP> -p 5432 -U replica -X stream -P
根据提示,输入数据库账号对应的密码,按 Enter。返回如下结果,表示备份成功。
		
Password:
24526/24526 kB (100%), 1/1 tablespace
5. 执行以下命令,拷贝 master 配置相关文件。
		
cp /usr/pgsql-12/share/recovery.conf.sample /var/lib/pgsql/12/data/recovery.conf
6. 执行以下命令,打开 recovery.conf 文件。
		
vim /var/lib/pgsql/12/data/recovery.conf
7. i 切换至编辑模式,分别找到如下参数,并修改为如下内容:
		
standby_mode = on #声明此节点为从库
primary_conninfo = 'host=<主节点公网 IP> port=5432 user=数据库账号 password=数据库密码' #对应主库的连接信息
recovery_target_timeline = 'latest' #流复制同步到最新的数据
8. Esc,输入 :wq,保存文件返回。
9. 执行以下命令,打开 postgresql.conf 文件。
		
vim /var/lib/pgsql/12/data/postgresql.conf
10. i 切换至编辑模式,分别找到如下参数,并修改为如下内容:
		
max_connections = 1000 # 最大连接数,从库的 max_connections 必须要大于主库的
hot_standby = on # 开启热备
max_standby_streaming_delay = 30s # 数据流备份的最大延迟时间
wal_receiver_status_interval = 1s # 从节点向主节点报告自身状态的最长间隔时间
hot_standby_feedback = on # 如果有错误的数据复制向主进行反馈
11. Esc,输入 :wq,保存文件返回。
12. 执行以下命令,修改数据目录的属组和属主。
		
chown -R postgres.postgres /var/lib/pgsql/12/data
13. 执行以下命令,启动服务。
		
systemctl start postgresql-12.service
14. 执行以下命令,设置服务开机自启动。
		
systemctl enable postgresql-12.service

验证部署

您可以通过如下操作验证是否部署成功:
1. 执行以下命令,从节点备份目录。
		
pg_basebackup -D /var/lib/pgsql/12/data -h <主节点公网 IP> -p 5432 -U replica -X stream -P
输入数据库密码并按 Enter,返回如下结果,则表示已备份成功。
		
Password:
24526/24526 kB (100%), 1/1 tablespace
2. 在主节点中,执行以下命令,查看 sender 进程。
		
ps aux |grep sender
3. 在从节点中,执行以下命令,查看 receiver 进程。
		
ps aux |grep receiver
返回如下结果,即表示可成功查看到 receiver 进程。

4. 在主节点中,依次执行以下命令,进入 PostgreSQL 交互终端,在主库中查看从库状态。
		
su - postgres
		
psql
		
select * from pg_stat_replication;
返回如下结果,即表示可成功查看到从库状态。

相似文档
  • 操作场景: 宝塔面板是一款使用很方便、功能强大且终身免费的服务器管理软件,支持 Linux 与 Windows 系统。在宝塔面板中,您可以一键配置 LAMP、LNMP、网站、数据库、FTP、SSL,还可以通过 Web 端轻松管理服务器。本文指导您如何在云服务器的 Linux 实例上手动安装宝塔面板。
  • 操作场景: 本文档介绍如何在腾讯云云服务器上搭建和使用 Docker。本文适用于熟悉 Linux 操作系统,刚开始使用腾讯云云服务器的开发者。如需了解更多关于 Docker 相关信息,请参见 Docker 官方文档。
  • 操作场景: GitLab 是使用 Ruby 开发的开源版本管理系统,以 Git 作为代码管理工具并实现自托管的 Git 项目仓库,可通过 Web 界面访问公开或私人的项目。本文介绍如何在腾讯云云服务器上安装并使用 GitLab。
  • 操作场景: RabbitMQ 是实现了高级消息队列协议(Advanced Message Queuing Protocol,AMQP)的开源消息代理软件。服务器端使用 Erlang 语言编写,支持 Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP 及 AJAX 等多种客户端。具备易用性、扩展性及高可用性等优势,您可参考本文在腾讯云云服务器上部署 RabbitMQ。
  • 操作场景: VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发。VNC 是基于 UNIX 和 Linux 操作系统的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows、MAC 中的任何远程控制软件媲美。本文档指导您如何在 Ubuntu 操作系统的云服务器中搭建可视化界面。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部