- 关于PTK
- 快速上手
- 安装PTK
- 使用手册
- 配置文件字段说明
- 配置文件示例
- 命令介绍
- ptk
- ptk completion
- ptk register
- ptk init-cluster
- ptk collect
- ptk rec-guc
- ptk cache
- ptk gen-ptkc
- ptk manage
- ptk demo
- ptk meta
- ptk version
- ptk self
- ptk gen-om-xml
- ptk env
- ptk gen-static-config
- ptk cluster
- ptk cluster rename
- ptk cluster throwout
- ptk cluster takeover
- ptk cluster uninstall-cm
- ptk cluster install-cm
- ptk cluster gen-cert-files
- ptk cluster load-cm-vip
- ptk cluster del-kerberos-auth
- ptk cluster add-kerberos-auth
- ptk cluster uninstall-kerberos-server
- ptk cluster install-kerberos-server
- ptk cluster is-in-upgrade
- ptk cluster upgrade-rollback
- ptk cluster upgrade-commit
- ptk cluster upgrade
- ptk cluster demote
- ptk cluster promote
- ptk cluster refresh
- ptk cluster shell
- ptk cluster modify-comment
- ptk cluster show-config
- ptk cluster set-guc
- ptk cluster show-guc
- ptk cluster set-hba
- ptk cluster show-hba
- ptk cluster scale-out
- ptk cluster scale-in
- ptk cluster uninstall-mogha
- ptk cluster install-mogha
- ptk cluster list-plugins
- ptk cluster install-plugin
- ptk cluster inspect
- ptk cluster failover
- ptk cluster switchover
- ptk cluster build
- ptk cluster status
- ptk cluster restart
- ptk cluster stop
- ptk cluster start
- ptk uninstall
- ptk ls
- ptk install
- ptk exec
- ptk template
- ptk encrypt
- ptk checkos
- ptk download
- ptk candidate
- 故障排查
- 常见问题
- 发布记录
- GPTK - 图形化部署工具
- 社区
- 附录:YAML语法
数据库安装
准备配置文件
使用 PTK 进行数据库的安装或扩容时,需要用户提前准备一个用来描述集群拓扑结构的 YAML 格式的配置文件,可以通过查看现有的配置示例进行修改,也可以通过 ptk 提供的 template 指令进行自动生成,生成方式可以参考创建配置文件章节
以下我们以一主一备的配置文件为例说明:
假设文件名为 config.yaml
global:
cluster_name: c1
user: omm
db_port: 26000
base_dir: /opt/mogdb
ssh_option:
port: 22
user: root
key_file: ~/.ssh/id_rsa
db_servers:
- host: 192.168.100.100
role: primary
# ssh_option:
# port: 22
# user: root
# key_file: ~/.ssh/id_rsa
- host: 192.168.100.101
role: standby
# ssh_option:
# port: 22
# user: root
# key_file: ~/.ssh/id_rsa
在配置文件的 global 部分,我们定义了集群的唯一名称 c1
, 运行数据库的系统用户 omm
,数据库的端口 26000
, 安装数据库的基础目录 /opt/mogdb
,以及连接目标服务器的 ssh 验证信息。
在配置文件的 db_servers 部分,这部分配置了要部署数据库的实例列表,对于每个实例,至少需指定服务器的 IP 和数据库的角色,数据库的角色支持 primary
, standby
和 cascade_standby
。
如果集群内所有的服务器登录所使用的 ssh 验证信息都相同的话,可以直接在 global 部分定义一次即可,如果不同的服务器登录信息不同时,我们需要 db_servers 部分下每个服务信息中,单独定义 ssh_option (上述示例中注释的部分)。配置 ssh 登录信息时支持密码登录和密钥登录方式,任选一种即可。具体配置方式参考配置文件中 ssh_option 字段的说明。
配置文件中 ssh_option 字段中的用户,我们推荐是直接使用 root 用户进行安装,虽然这样配置 PTK 拥有的权限很大,但 PTK 会尽可能的约束自己的行为,在安装过程中 PTK 仅会使用 root 用户创建用户以及配置用户的 ulimit 信息,其余操作均会通过创建的普通用户进行安装操作。
但某些客户场景下,不允许 root 直接远程登录操作,针对这种情况,PTK 也支持使用普通用户安装。
用户需提前创建好运行数据库的系统用户(假设为 omm),并在 /etc/security/limits.conf 中配置 omm 用户的 ulimits 配置,确保以下满足以下需求,否则可能导致数据库无法启动:
omm soft as unlimited
omm hard as unlimited
omm soft nproc unlimited
omm hard nproc unlimited
omm soft nofile 1000000
omm hard nofile 1000000
omm soft stack unlimited
omm hard stack unlimited
然后在 ssh_option
中配置 omm 用户的登录信息即可。
需说明的是,如果 PTK 通过普通用户管理集群,部分需要 sudo 权限的功能将无法使用,比如:ptk cluster install-mogha
等
系统检查
准备好配置文件后,在正式安装数据库前,我们需要通过 checkos 命令对所有的目标服务器先进行一下环境检查,以确保满足数据库的安装要求。
系统检查命令, --detail
为可选参数:
ptk checkos -f config.yaml [--detail]
在检查完系统以后,PTK 会在终端最后输出检查的结果,在安装数据库前需确保系统检查的所有项目不存在 Abnormal 状态的项。
如果存在 Abnormal 的项,PTK 会在当前目录下生成系统修复的脚本 (root_fix_os前缀的文件),在修复脚本中可能涉及需要超级用户权限的命令,如果您的配置文件中提供的是超级用户来 ssh 登录的话,可以通过以下命令来执行快速修复:
ptk exec -f config.yaml -s <root_fix_os脚本>
或者将生成的修复脚本拷贝到每个服务器上,手动执行即可,脚本内包含了所有节点的修复命令,自动根据当前运行的服务器IP进行判断执行对应的修复命令。
PTK 生成的修复脚本能修复环境配置类的项,如果是端口冲突错误,需用户自行排查端口占用情况手动处理。
执行安装
系统检查完成后,我们就可以使用 PTK 进行数据库安装了,安装仅需输入以下指令即可:
$ ptk install -f config.yaml [-y] [-p <安装包>] [--db-version <MogDB版本>]
注: 安装过程会有一些交互确认的流程,如果全部自动确认可以通过增加
-y
参数 当配置文件中没有配置数据库密码时,-y
无法跳过询问密码的步骤
默认 PTK 会自动从网络上下载 MogDB 的最新的LTS(长期支持)版本数据库进行安装。
如果您想要指定安装其他的版本需要通过 --db-version
参数指定。
支持安装的数据库版本列表可通过 ptk candidate db 查看
如果 PTK 所在的机器没有访问外网的场景,用户可以提前将 MogDB 介质下载好,在安装时通过 -p
或 --pkg
参数指定本地安装包的路径。
安装结果状态
状态 | 说明 |
---|---|
precheck_success | 安装前预检查成功 |
precheck_failed | 安装前预检查失败 |
setup_db_success | 数据库实例安装成功 |
setup_db_failed | 数据库实例安装失败 |
setup_cm_success | CM组件实例安装成功 |
setup_cm_failed | CM组件实例安装失败 |
init_dss_failed | 初始化DSS组件失败 |
init_dss_success | 初始化DSS组件成功 |
initdb_failed | 初始化数据库失败 |
initdb_success | 初始化数据库成功 |
rollback_success | 安装步骤回滚成功 |
need_rollback_manually | 需要手动回滚 |
start_success | 数据库启动成功 |
start_failed | 数据库启动失败 |
need_start_manually | 需要手动启动 |
PTK 自动优化数据库参数说明
通过 PTK 进行安装的数据库,PTK 默认会根据数据库所在的服务器配置进行参数优化。如果您不想 PTK 来做参数优化,您可以通过在安装时指定 --default-guc
参数,指定了该参数后,PTK 在安装时除了配置必要参数外,其他参数保持数据库默认值。
必要参数
以下参数为 PTK 在安装时设置的默认值参数列表:
参数 | 值 |
---|---|
local_bind_address | PTK配置文件中 db_servers 的 host 字段 |
port | PTK配置文件中 db_servers 的 db_port 字段 |
application_name | PTK 为实例分配的节点名, 例如 db_6001 |
available_zone | PTK配置文件中 db_servers 的 az_name |
unix_socket_directory | PTK配置文件中的 tmp_dir |
unix_socket_permissions | 0700 |
log_file_mode | 0600 |
ssl | off |
ssl_cert_file | server.crt |
ssl_key_file | server.key |
ssl_ca_file | cacert.pem |
log_directory | PTK配置文件中的 $log_dir 下 pg_log/$application_name |
audit_directory | PTK配置文件中的 $log_dir 下 pg_audit/$application_name |
listen_addresses | * |
max_wal_senders | 16 |
当部署的集群中只有一个数据库实例时,会在必要参数中增加 most_available_sync=on,来开启最大可用模式。
优化参数
如果要部署实例的服务器内存大于4G时,PTK默认会设置部分推荐的参数值来优化数据库。(如果不希望PTK自动执行此优化行为,可通过安装时指定命令行参数 --default-guc
来禁用)
注:当服务器内存小于4G 时,以下参数均不会修改
以下为优化参数列表:(和官网推荐参数一致)
ptk 1.2.0 或更新版本可通过如下命令查看具体版本的推荐参数列表
ptk rec-guc <DB-VERSION>
# 例1: 如查看 5.0.5
# ptk rec-guc 5.0.5
# 例2: 查看 3.0.5 和 5.0.5 的列表对比(注:对比仅支持2个版本)
# ptk rec-guc 3.0.5 5.0.3
第一部分:与内存大小相关的参数(假设内存大小为 N,单位GB)
- 当4 < N <= 8 时
参数 | 值 |
---|---|
max_connections | 500 |
max_prepared_transactions | 500 |
max_process_memory | (0.6*N)GB |
shared_buffers | (0.2*N)GB |
work_mem | 16MB |
maintenance_work_mem | 512MB |
wal_buffers | 128MB |
- 当 8 < N <= 64 时
参数 | 值 |
---|---|
max_connections | 1000 |
max_prepared_transactions | 1000 |
max_process_memory | (0.7*N)GB |
shared_buffers | (0.2*N)GB |
work_mem | 32MB |
maintenance_work_mem | 1GB |
wal_buffers | 512MB |
- 当 N > 64 时
参数 | 值 |
---|---|
max_connections | 3000 |
max_prepared_transactions | 3000 |
max_process_memory | (0.8*N)GB |
shared_buffers | (0.3*N)GB |
work_mem | 64MB |
maintenance_work_mem | 2GB |
wal_buffers | 1GB |
第二部分:固定优化参数列表
资源池化部署
资源池化的部署方式,提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化HA部署形态,解决传统HA部署下存储容量较单机翻倍的问题,同时备机支持实时一致性读。
资源池化架构图如下图所示 (图片来源:openGauss 官网):
PTK 支持资源池化场景的部署,由于资源池化的架构中新增了 dss 进程,同时依赖 CM 对于集群的高可用管理,所以我们需要在配置文件中增加 dss 和 cm 的相关的配置,以下为一个示例配置:
global:
cluster_name: c1
user: omm
group: omm
db_password: pTk6Y2I1OWFiZjI8RT1FPUE9RFZfVTUzTy0zUlR5TDZUTmh1STE4VkQ0T2RDYXBNMThoSlNhZDY3UHB4WVE=
db_port: 26000
base_dir: /data/mogdb
ssh_option:
port: 22
user: root
password: pTk6ZDJmZjZlZjI8RT1FPUE9RUs4WEh1OUJRQURfM29GUjZyb3gzZGU3LVRmLTM3Mm5ySmZ5anJXVkNOTUE=
cm_option:
dir: /data/mogdb/cm
cm_server_port: 15300
db_service_vip: ""
dss_option:
dir: /data/mogdb/dss
dss_port: 26010
dms_port: 26020
data_vg_name: data
data_vg_path: /dev/data_shared
inst_vg_map:
172.23.1.28: /dev/data_private_28
172.23.1.45: /dev/data_private_45
cm_share_vg_path: /dev/cm_shared
cm_voting_vg_path: /dev/cm_vote
enable_ssl: on
db_servers:
- host: 172.23.1.28
role: primary
- host: 172.23.1.45
role: standby
其他配置和普通安装一样,我们重点看下 dss_option 字段。
在 dss_option 字段中,有以下这些配置:
字段名 | 说明 |
---|---|
dir | dss 模块的安装目录 |
dss_port | dssserver 进程运行时监听的端口,默认 26010 |
dms_port | 资源池化模式时数据库内核之间通信的端口, 默认 26020 |
data_vg_name | 自定义共享数据卷名,默认为 data |
data_vg_path | 共享数据卷磁盘设备路径 |
inst_vg_map | 每个数据库实例的私有盘路口映射,键为数据库实例IP,值为对应实例的私有数据盘路径 |
cm_share_vg_path | CM 共享盘设备路径 |
cm_voting_vg_path | CM 投票盘设备路径 |
enable_ssl | 是否使用 SSL 加密通信 |
准备好配置文件后,安装的步骤和上面的普通集群安装方式一样,仅需在安装的命令中增加 --enable-dss
参数即可:
ptk install -f config.yaml --enable-dss