文档中心MogDBMogDB StackUqbar
v1.1

文档:v1.1

支持的版本:

数据库安装

准备配置文件

使用 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 和数据库的角色,数据库的角色支持 primarystandbycascade_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

第二部分:固定优化参数列表

参数
remote_read_mode non_authentication
password_encryption_type 1
password_reuse_time 0
password_lock_time 0
password_effect_time 0
session_timeout 0
modify_initial_password off
wal_level logical
full_page_writes off
wal_log_hints off
xloginsert_locks 48
advance_xlog_file_num 10
wal_keep_segments 1024
most_available_sync on
catchup2normal_wait_time 0
enable_slot_log on
max_replication_slots 32
wal_receiver_timeout 10s
sync_config_strategy none_node
log_line_prefix '%m %u %d %r %p %S'
log_checkpoints on
vacuum_cost_limit 1000
autovacuum_max_workers 10
autovacuum_naptime 20s
autovacuum_vacuum_cost_delay 10
autovacuum_vacuum_scale_factor 0.05
autovacuum_analyze_scale_factor 0.02
autovacuum_vacuum_threshold 200
autovacuum_analyze_threshold 200
autovacuum_io_limits 104857600
instr_unique_sql_count 200000
enable_wdr_snapshot on
log_min_duration_statement 200
track_activity_query_size 2048
enable_instr_rt_percentile off
cstore_buffers 16MB
local_syscache_threshold 32MB
standby_shared_buffers_fraction 1
checkpoint_segments 1024
checkpoint_completion_target 0.8
max_files_per_process 100000
behavior_compat_options display_leading_zero
lc_messages en_US.UTF-8
lc_monetary en_US.UTF-8
lc_numeric en_US.UTF-8
lc_time en_US.UTF-8
enable_opfusion off

资源池化部署

资源池化的部署方式,提供主备机共享一份存储的能力,实现基于磁阵设备的资源池化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
Copyright © 2011-2024 www.enmotech.com All rights reserved.