安装部署

PolarDB PostgreSQL轻量版使用PolarFlex软件栈部署,根据您的业务需求,一键部署单节点、一主一备和一主多备集群。

前提条件

购买商业化服务获取PolarDB PostgreSQL轻量版相关软件包。

说明

您可联系我们在未启用License情况下免费使用PolarDB PostgreSQL轻量版单节点版本30天,后续自动限流。

环境要求

硬件需求

安装PolarDB PostgreSQL轻量版应具备基本的硬件要求。在此基础上,您可以根据实际业务需求、数据规模以及期望的数据库响应速度规划硬件配置。

需求项

配置要求

服务器架构

支持X86ARM架构。

硬盘

  • 系统盘:即根分区,需要预留至少10 GB空间用于应用程序安装。

  • 数据盘:至少1个本地数据盘,且容量>=256 GB。

CPU

>=2核。

内存

>=8 GB。

网络

千兆以上以太网。

软件需求

需求项

配置要求

操作系统

Linux CentOS 7.2或以上,以及Redhat系的国产化操作系统(麒麟、龙蜥等)和Debian系的国产化操作系统(统信等)。

说明

建议字符集设置为LANG=en_US.UTF-8。

文件系统

本地盘文件系统为Ext4。

glibc版本

glibc版本为2.15或以上。

说明

您可通过执行以下命令获取当前glibc版本号列表,返回结果中包含GLIBC_2.15或以上版本即可。

strings /lib64/libc.so.6 | grep "^GLIBC_2."

安装集群管理工具pdbcli

pdbcli是安装部署的客户端组件,作为整个PolarDB PostgreSQL轻量版集群的管理客户端,可通过命令行进行集群部署、集群重启、高可用切换、版本升级、集群状态检查等操作。详细的pdbcli使用帮助,请参见pdbcli使用说明

image
  1. 获取目标版本polarflex-${version}-${build-date}.tar.gz的安装包,并将其发送至客户端主机。

  2. 登录客户端主机,根据当前软件版本,设置version变量,例如:

    version=2.2.2.3
  3. 创建工作目录,解压安装文件。

    mkdir -p polarflex-${version}/
    tar -C polarflex-${version}/ -xf polarflex-${version}-${build-date}.tar.gz
  4. 进入工作目录并开始安装,执行./scripts/install.sh,该命令需要root权限。

    cd polarflex-${version}/
    ./scripts/install.sh
  5. 安装完成后,执行如下命令确认安装的版本,版本无误即表明安装正确:

    pdbcli version

安装部署PolarDB PostgreSQL轻量版

预配置操作系统

关闭操作系统的透明大页功能。请执行以下语句以检查当前透明大页的配置:

cat /sys/kernel/mm/transparent_hugepage/enabled

如返回结果为always madvise [never]则表示已关闭透明大页。否则,请执行以下操作以关闭透明大页。

echo never > /sys/kernel/mm/transparent_hugepage/enabled

配置文件检查

pdbcli配置文件包括主机存储、端口配置和数据库参数等内容,是安装数据库的重要配置文件。默认使用的配置文件为polarflex-${version}/文件夹下的config.yaml

为便于您选择config.yaml的配置,在相同目录下提供了不同场景的配置文件模板。

配置文件模板

说明

config_template.yaml

一主两备集群的配置文件模板。一主两备形态可保证高可用,RTO(恢复时间目标)小于60秒,同时确保RPO(恢复点目标)为0。

config_master_slave.yaml

一主一备集群的配置文件模板。一主一备形态可保证高可用,RTO(恢复时间目标)小于60秒,但无法保证RPO(恢复点目标)为0。

config_single_node.yaml

单节点集群的配置文件模板。单节点形态无法保证高可用和高可靠,不建议在生产环境中使用。

如果使用一键部署脚本polarflex-deploy.sh搭建一主两备集群并需要修改参数时,请修改config_template.yaml模板文件中的参数。同理,使用该脚本搭建单节点集群,请修改config_single_node.yaml模板文件中的参数。polarflex-deploy.sh脚本运行中会自动根据模板生成config.yaml

需要注意的是,以下两个参数必须在创建集群之前完成配置,创建集群后将无法进行修改。

  • 兼容模式

    PolarDB PostgreSQL轻量版包括Postgres兼容Oracle兼容两种兼容模式。

    默认为Postgres兼容模式。如需启用Oracle兼容模式,必须在配置文件模板的末尾设置compatibility_mode: ora

  • 文件目录

    数据库文件目录默认位于/var/lib/thirdDB的子目录。您可以通过配置文件中的polardb_data_root_dir参数进行修改。由于默认目录的磁盘空间可能较小,强烈建议根据主机的磁盘容量和预计的数据库文件数量选择合适的目录。

配置文件示例

请根据实际部署环境的具体情况,调整配置文件中的相关内容。修改完成后,可执行pdbcli validate验证配置的正确性。

说明

配置文件必须符合YAML格式,不得包含(制表符)等字符。

# 以下配置文件示例展示了如何搭建一个由三台主机构建的集群,主机IP分别为10.XX.XX.1、
# 10.XX.XX.2、10.XX.XX.3。请您根据实际情况进行配置。
all:
  children:
    cm:
      hosts:
        host01: null
        host02: null
        host03: null
      var: null
    db:
      hosts:
        host01:
          polardb_polar_hostid: 1
        host02:
          polardb_polar_hostid: 2
          polardb_node_type: standby
        host03:
          polardb_polar_hostid: 3
          polardb_node_type: standby
      vars:
        polardb_custom_params:
        - max_standby_streaming_delay = 900000
        - max_connections = 3300
        - superuser_reserved_connections = 15
        - polar_max_super_conns = 1500
        polardb_service_restart_sec: 5
        hugepage_enabled: off
    proxy:
      hosts:
        host01: null
        host02: null
      var: null
  hosts:
    host01:
      ansible_host: 10.XX.XX.1 # HOST01_IP 【必填】
    host02:
      ansible_host: 10.XX.XX.2 # HOST02_IP 【必填】
    host03:
      ansible_host: 10.XX.XX.3 # HOST03_IP 【必填】
  vars:
    ansible_group_priority: 99
    ansible_python_interpreter: /usr/bin/{{python}}
    cluster_id: polardb1
    cm_consensus_port: 7001
    cm_service_port: 5001
    cm_tls_service_port: 6001
    cm_db_sync_mode: SYNC
    polardb_data_root_dir: /var/lib/thirdDB
    polardb_enable_direct_io: false
    polardb_multi_instance_per_host: true
    polardb_polar_enable_pfs_mode: false
    polardb_port: 1523 # 数据库直连端口
    polardb_proxy_port: 12369 # 代理强一致性端口
    polardb_proxy_port_rwlb: 12370 # 代理读写分离端口
    polardb_proxy_admin_port: 12371
    polardb_storage_mode: local_filesystem_mode
    polardb_user: polar1
    primary_db_host: host01
    ue_node_driver_service_port: 12355
    compatibility_mode: pg # 如果需要使用Oracle兼容模式,需要在安装之前把pg改为ora

安装并创建集群

polarflex目录下提供了一键安装脚本polarflex-deploy.sh。根据需要创建的集群节点数量执行以下命令:

  • 创建一主两备集群,默认使用config_template.yaml配置文件。

    bash polarflex-deploy.sh -m "10.XX.XX.1" -p 'password' -m "10.XX.XX.2" -p 'password' -m "10.XX.XX.3" -p 'password'
  • 创建一主一备集群,默认使用config_master_slave.yaml配置文件。

    bash polarflex-deploy.sh -m "10.XX.XX.1" -p 'password' -m "10.XX.XX.2" -p 'password'
  • 创建单节点集群,默认使用config_single_node.yaml配置文件。

    bash polarflex-deploy.sh -m "10.XX.XX.1" -p 'password'

其中,-m为服务器主机地址,-p为对应服务器主机root密码。您可按需添加-w参数实现一键部署prometheusgrafana,访问执行polarflex-deploy.sh所在机器的3000端口即可查看集群监控。

bash polarflex-deploy.sh -m "10.XX.XX.1" -p 'password' -m "10.XX.XX.2" -p 'password' -m "10.XX.XX.3" -p 'password' -w

该脚本在运行时将执行以下步骤:

  1. 根据指定的安装机器IP地址及其root密码,配置SSH免密登录。

  2. 根据配置模板(例如config_template.yaml等)生成配置文件config.yaml

  3. 执行pdbcli install cluster安装集群所需的依赖。

  4. 执行pdbcli create cluster创建数据库集群。

说明

当前的一键部署方案依赖于已获取的主机root密码,我们在附录中为您提供手动安装方法。

部署后检查

在完成数据库的安装与部署后,需进行安装后检查,以确认集群状态的健康性。

集群状态检查

执行pdbcli status检查集群状态。返回cluster_managermasterstandbyproxy节点状态均为RUNNING即安装成功,且work_path为配置文件中的文件目录。

返回示例

Using config file: ./config.yaml
Cluster Status:
{
	"phase": "RunningPhase",
	"cluster_manager": [
		{
			"endpoint": "172.x.x.x:5001",
			"phase": "RUNNING"
		},
		{
			"endpoint": "172.x.x.x:5001",
			"phase": "RUNNING"
		},
		{
			"endpoint": "172.x.x.x:5001",
			"phase": "RUNNING"
		}
	],
	"master": {
		"endpoint": "172.x.x.x:1523",
		"cust_id": "0",
		"work_path": "/var/lib/thirdDB/clusters/polardb1",
		"phase": "RUNNING",
		"start_at": "2025-03-13 19:41:50"
	},
	"standby": [
		{
			"endpoint": "172.x.x.x:1523",
			"cust_id": "0",
			"work_path": "/var/lib/thirdDB/clusters/polardb1",
			"phase": "RUNNING",
			"start_at": "2025-03-13 19:42:02",
			"sync_status": "SYNC"
		},
		{
			"endpoint": "172.x.x.x:1523",
			"cust_id": "0",
			"work_path": "/var/lib/thirdDB/clusters/polardb1",
			"phase": "RUNNING",
			"start_at": "2025-03-13 19:42:02",
			"sync_status": "SYNC"
		}
	],
	"proxy": [
		{
			"endpoint": "172.x.x.x:12369",
			"phase": "RUNNING"
		},
		{
			"endpoint": "172.x.x.x:12369",
			"phase": "RUNNING"
		}
	],
	"plugins": [
		{
			"name": "golang-manager",
			"status": "Plugin run err topo is null errCount 2"
		}
	],
	"disk": {
		"state": "UNLOCK",
		"quota": "UNSET",
		"usage": ""
	}

数据库检查

在集群启动后,您可以通过PolarDB PostgreSQL轻量版内核二进制包中内置的psql客户端进行连通性测试。

创建集群时默认创建以下资源:

  • 用户admin,密码为postgres。

  • 数据库admin_db。

集群默认访问端口1523。执行以下命令检查集群连通性:

PGPASSWORD=postgres /u01/polardb_pg/bin/psql -h localhost -p1523 -U admin -d admin_db -c 'SHOW polardb_version'

如果返回PolarDB PostgreSQL轻量版集群内核小版本号,如PolarDB V2.0.14.13.26.0,则说明数据库安装成功,且数据库内核版本检查正常。

兼容性模式检查

在集群启动后,您可以通过PolarDB PostgreSQL轻量版内核二进制包中内置的psql客户端查询当前使用的PolarDB引擎兼容模式。

PGPASSWORD=postgres /u01/polardb_pg/bin/psql -h localhost -p1523 -U admin -d admin_db -c 'SHOW polar_compatibility_mode'

返回结果如下:

  • pg:为Postgres兼容模式。

  • ora:为Oracle兼容模式。

进程检查

PolarDB PostgreSQL轻量版集群成功启动后,将在数据库目录下生成一个名为postmaster.pid的文件。该文件的第一行内容为PolarDB引擎守护进程的进程ID(pid)。您可以通过执行命令ps -ef | grep <pid>来获取所有PolarDB PostgreSQL轻量版集群进程信息,常见的辅助进程如下:

  • postgres: loggerPolarDB打印日志进程。

  • postgres: checkpointerPolarDB周期性检查点进程。

  • postgres: background writerPolarDB周期性刷脏进程。

  • postgres: walwriterPolarDB定期WAL 日志刷盘进程。

  • postgres: autovacuum launcherPolarDB自动清理调度进程。

  • postgres: stats collectorPolarDB统计信息收集进程。

集群卸载

安装部署PolarDB PostgreSQL轻量版异常需要删除残留,请执行以下命令删除集群并卸载软件栈后重新安装。

pdbcli delete cluster && pdbcli uninstall cluster

附录

完成集群管理工具pdbcli安装和预配置操作系统后,如您无法获取服务器主机root密码,可按照以下步骤进行PolarDB PostgreSQL轻量版集群手动部署。

  1. 完成pdbcli客户端主机和服务器主机之间配置SSH免密登录。

    # 生成ssh key
    ssh-keygen -t rsa
    
    # 复制公钥到所有部署机器上
    ssh-copy-id -i ~/.ssh/id_rsa.pub <目标用户>@$HOST
  2. 准备配置文件config.yaml。修改polarflex-${version}/文件夹下的config.yaml,根据实际部署环境的具体情况,调整配置文件中相关内容。修改完成后,可执行pdbcli validate验证配置正确性。

  3. 安装PolarFlex软件栈。

    pdbcli install cluster
  4. 安装PolarDB PostgreSQL轻量版集群和组件。

    pdbcli create cluster

安装成功后,进行部署后检查,确认集群运行状态。