1 背景
达梦数据库统一化安装部署需求,定制统一部署规范,其中包含标准化安装,实例创建,参数优化,归档和备份。
说明:该文档中涉及到的软件和数据文件路径,请与实际路径保持严格一致。
2 概述
本文档介绍单机及主备集群详细的部署过程,另附有手动切换和自动切换配置。
3 主备集群部署过程(手动切换)
3.1 部署规划
主备集群为最基础的高可用架构,只有主库对外提供数据库服务,备库仅做备份,根据实际要求及网络条件,可以选择配置为自动切换或者手动切换模式。
1主1备2节点主备集群部署规划
IP规划:
主机名 服务ip 心跳ip 数据库名 实例名
dmdb01 192.168.1.100 10.0.0.100 dmdb dw1
dmdb02 192.168.1.101 10.0.0.101 dmdb dw2
端口规划:
实例名 实例端口 MAL 系统监听 TCP 连接的端口 实例本地的守护进程监听 TCP 连接的端口 实例监听守护进程 TCP 连接的端口
dw1 5236 7336 7436 7536
dw2 5236 7336 7436 7536
本地存储LVM磁盘规划:(按实际需求调整磁盘空间)
1 磁盘 2 LVM磁盘名/用途
/dev/sdc(100G) /dev/dmappvg/dmapplv (数据库安装磁盘)
/dev/sde(500G) /dev/dmdatavg/dmdatalv (数据磁盘)
/dev/sdf(500G) /dev/dmbakvg/dmbaklv (备份磁盘)
目录规划:(在对应服务器上创建目录owner为dmdba组为dinstall)
数据库软件安装目录 /home/dmdba/dmdbms
实例安装目录 /dmdata/
归档日志存放目录 /dmdata/arch
备份文件存放目录 /dmdata/dmbak/
3.2 数据库软件安装
主备上安装数据库软件:
3.2.1 操作系统配置
修改内核参数
vi /etc/sysctl.conf
添加以下内容
fs.file-max = 6815744
fs.aio-max-nr = 1048576
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
kernel.core_pattern = /dmdata/core.%p
vm.swappiness=10
vm.dirty_background_ratio = 0
vm.min_free_kbytes = 2097152
使参数生效,执行
sysctl -p
新建数据库管理用户和组
执行以下命令,新建用户组 dinstall。
groupadd dinstall -g 2001
执行以下命令,新建用户 dmdba。
useradd -g dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba
执行以下命令,修改 dmdba 用户密码。
passwd dmdba
dameng123
修改用户资源限制
执行以下命令,修改 dmdba 用户资源限制。
vim /etc/security/limits.conf
文件末尾添加如下内容:
dmdba soft nice 0
dmdba hard nice 0
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
此外需要检查/etc/security/limits.d/目录下是否有其他限制资源的配置文件,如果有也需要修改。
在root用户下,关闭防火墙(数据库实例+监视器):
systemctl stop firewalld.service
systemctl status firewalld.service
systemctl disable firewalld.service
执行以下命令,修改 dmdba 用户环境变量。
vi /home/dmdba/.bash_profile
文件末尾添加如下内容:
export DM_HOME=/home/dmdba/dmdbms
export PATH=$PATH:$DM_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
3.2.2数据库软件安装
1.使用root用户挂载数据库软件的iso文件
mkdir -p /dmiso
mount -o loop dm8_20200930_x86_rh6_64_ent_8.1.1.134.iso /dmiso
2.使用dmdba用户安装软件
su - dmdba
执行以下命令,切换到 /dmiso 目录下
cd /dmiso
执行 DMInstall.bin 文件开始安装,选择【-i】参数以命令行方式安装。
./DMInstall.bin -i
选择安装程序的语言 c/C 为中文,e/E 为英文。
提示是否安装 key 文件,输入 N 跳过。
选择时区,21 即东 8 区。
选择安装类型,默认典型安装(包含所有内容)。
选择软件安装目录,默认/home/dmdba/dmdbms
确认安装
安装完成提示使用root执行脚本:
/home/dmdba/dmdbms/script/root/root_installer.sh
3.2.3使用 dminit 工具初始化实例
执行以下命令
dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD=“dameng123” SYSAUDITOR_PWD=“dameng123”
3.3 主备集群配置
3.3.1初始化实例
3个节点完成实例初始化
执行以下命令
dminit path=/dmdata page_size=32 extent_size=32 charset=1 log_size=2048 db_name=dmdb instance_name=dmdb SYSDBA_PWD=“dameng123” SYSAUDITOR_PWD=“dameng123”
以主机dmdb01为主库,启动实例
dmserver /dmdata/dmdb/dm.ini
出现system is ready后输入exit停止数据库。
3.3.2脱机备份数据库
在主机dmdb01上执行以下命令,确认主库 dmap 服务已启动:
ps -ef|grep dmap
若未启动,则先启动 DMAP 服务,dmdba 到安装目录的 bin 下执行以下命令:
./DmAPService start
dmdba用户 启动dmrman工具
dmrman use_ap=2
执行 backup 全库:
backup database ‘/dmdata/dmdb/dm.ini’ backupset ‘/home/dmdba/bakfull’;
3.3.3备份还原备库
将备份的文件/home/dmdba/bakfull拷贝到备库服务器上。
在主机dmdb02上
使用 dmrman 工具还原备库,dmdba 用户执行:
dmrman
进入dmrman工具交互界面
执行 restore:
restore database ‘/dmdata/dmdb/dm.ini’ from backupset ‘/home/dmdba/bakfull’;
完成后执行 recover:
recover database ‘/dmdata/dmdb/dm.ini’ from backupset ‘/home/dmdba/bakfull’;
最后执行 recover update db_magic。
recover database ‘/dmdata/dmdb/dm.ini’ update db_magic;
3.3.4修改dm.ini参数
所有节点都要修改
执行以下命令:
vi /dmdata/dmdb/dm.ini
主库dmdb01上修改以下参数值:
INSTANCE_NAME = dw1
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
备库dmdb02上修改以下参数值:
INSTANCE_NAME = dw2
MAL_INI = 1
ARCH_INI = 1
ALTER_MODE_STATUS = 0
ENABLE_OFFLINE_TS = 2
3.3.5配置归档配置文件 dmarch.ini
在实例目录下新建文件 dmarch.ini,执行以下命令:
vi /dmdata/dmdb/dmarch.ini
主库dmdb01上添加以下内容:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw2
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
备库Dmdb02上添加以下内容:
[ARCHIVE_REALTIME1]
ARCH_TYPE = REALTIME
ARCH_DEST = dw1
[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dmdata/arch
ARCH_FILE_SIZE = 2048
ARCH_SPACE_LIMIT = 102400
3.3.6配置MAL系统配置文件 dmmal.ini
在实例目录下新建文件 dmmal.ini,执行以下命令。
vi /dmdata/dmdb/dmmal.ini
主备库3个节点文件内容要相同。
MAL_CHECK_INTERVAL = 5
MAL_CONN_FAIL_INTERVAL = 15
[MAL_INST1]
MAL_INST_NAME = dw1
MAL_HOST = 10.0.0.100
MAL_PORT = 7336
MAL_INST_HOST = 192.168.1.100
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
[MAL_INST2]
MAL_INST_NAME = dw2
MAL_HOST = 10.0.0.101
MAL_PORT = 7336
MAL_INST_HOST = 192.168.1.101
MAL_INST_PORT = 5236
MAL_DW_PORT = 7436
MAL_INST_DW_PORT = 7536
3.3.7配置守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vi /dmdata/dmdb/dmwatcher.ini
主备库2节点文件内容要相同。
[GRP_DW]
DW_TYPE = GLOBAL
DW_MODE = MANUAL
DW_ERROR_TIME = 30
INST_RECOVER_TIME = 60
INST_ERROR_TIME = 20
INST_OGUID = 453331
INST_INI = /dmdata/dmdb/dm.ini
INST_AUTO_RESTART = 1
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver
以 mount 方式启动数据库实例
使用 dmdba 用户,执行以下命令(主备库都执行):
dmserver /dmdata/dmdb/dm.ini mount
在新的终端使用 disql 工具连接数据库:
./disql SYSDBA/‘“dameng123”’
主备库都修改 oguid,执行以下命令:
sp_set_oguid(453331);
主库dmdb01上修改数据库模式为 primary,执行以下命令:
alter database primary;
备库dmdb02上修改数据库模式为 standby,执行以下命令:
alter database standby;
启动守护进程
dmdba 用户下,到数据库安装目录的 bin 下执行以下命令(主备库都执行):
dmwatcher /dmdata/dmdb/dmwatcher.ini
守护进程启动后,会将 Mount 的实例 Open。
启动监视器(可以在任意节点配置)
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备心跳网络端口开放)。
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/dmdb/dmmonitor.ini
添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。
MON_DW_CONFIRM = 0 #普通监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 10.0.0.100:7436
MON_DW_IP = 10.0.0.101:7436
执行以下命令,启动监视器。
dmmonitor /dmdata/dmdb/dmmonitor.ini
启动后输入 show 命令查看集群状态。
3.3.9 注册服务
以上启动为前台方式启动,仅用户搭建过程中验证配置。配置没问题后需要将实例,守护进程和确认监视器注册为系统服务。
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。
./dm_service_installer.sh -t dmwatcher -p dw -watcher_ini /dmdata/dmdb/dmwatcher.ini
注册数据库实例服务(主备库都执行):
./dm_service_installer.sh -t dmserver -p dw -dm_ini /dmdata/dmdb/dm.ini
以服务方式启动
执行以下命令,启动数据库实例:
systemctl start DmServicedw
执行以下命令,启动守护进程:
systemctl start DmWatcherServicedw
3.3.10 验证主备集群同步状态
监视器查看主备集群状态
集群任意节点,配置普通监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/dmdb/dmmonitor.ini
添加以下内容:
说明:具体配置时,请把#和#之后的中文内容删除。
MON_DW_Confirm = 0 #普通监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 10.0.0.100:7436
MON_DW_IP = 10.0.0.101:7436
执行以下命令,启动监视器:
./dmmonitor /dmdata/dmdb/dmmonitor.ini
输入 show 命令查看集群状态:
其中守护进程状态 WSTATUS 为 OPEN,实例状态 ISTATUS 为 OPEN,归档类型 RTYPE 为 TIMELY,归档状态 RSTAT 为VALID。
disql 客户端验证
使用 disql 客户端登录主库,创建测试表,插入数据,执行以下命令:
disql SYSDBA/‘“dameng123”’@192.168.1.100:5236
SQL 提示符下执行以下命令:
create table test(id int);
insert into test values (1);
commit;
使用 disql 客户端登录备库,查询测试表验证,执行以下命令:
disql SYSDBA/‘“dameng123”’@192.168.1.101:5236
SQL 提示符下执行以下命令:
select * from test;
查看数据是否正常同步。
3.3.11参数优化
集群部署完成后,需要优化 dm.ini 参数,主备库都需要修改。参数值优化详见3.8单机参数优化部分。
重启集群(参数修改后需要重启集群)
严格安装顺序执行
读写分离集群重启:
关闭主库守护进程:systemctl stop DmWatcherServicedw
关闭备库守护进程:systemctl stop DmWatcherServicedw
关闭主库实例:systemctl stop DmServicedw
关闭备库实例:systemctl stop DmServicedw
启动主库实例:systemctl start DmServicedw
启动备库实例:systemctl start DmServicedw
启动主库守护进程:systemctl start DmWatcherServicedw
启动备库守护进程:systemctl start DmWatcherServicedw
4 主备集群部署过程(自动切换)
自动切换模式需要修改守护进程模式为自动模式(DW_MODE=AUTO),需要在集群外服务器上部署确认监视器,(注意数据库版本统一)
4.1 配置守护进程配置文件 dmwatcher.ini
在实例目录下新建文件 dmwatcher.ini,执行以下命令:
vi /dmdata/dmdb/dmwatcher.ini
主备库2节点文件内容要相同。
DW_MODE改为自动切换模式
[GRP_DW]
DW_TYPE = GLOBAL #全局守护类型
DW_MODE = AUTO #自动切换模式
DW_ERROR_TIME = 30 #远程守护进程故障认定时间
INST_RECOVER_TIME = 60 #主库守护进程启动恢复的间隔时间
INST_ERROR_TIME = 20 #本地实例故障认定时间
INST_OGUID = 453331 #守护系统唯一 OGUID 值
INST_INI = /dmdata/dmdb/dm.ini #dm.ini 配置文件路径
INST_AUTO_RESTART = 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /home/dmdba/dmdbms/bin/dmserver #命令行方式启动
4.2 启动监视器(在主备之外节点配置)
守护进程配置为自动切换时,必须配置确认监视器。在主备服务器以外的服务器上(需安装有 DM 数据库软件,且与主备机器心跳网络端口开放)。
新建确认监视器配置文件 dmmonitor.ini,执行以下命令:
vi /dmdata/dmdb/dmmonitor.ini
添加以下内容:
MON_DW_CONFIRM = 1 #确认监视器模式
MON_LOG_PATH = /home/dmdba/dmdbms/log #监视器日志文件存放路径
MON_LOG_INTERVAL = 60 #每隔 60 s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE = 200 #每个日志文件最大 32 MB
MON_LOG_SPACE_LIMIT = 1024 #不限定日志文件总占用空间
[GRP_DW]
MON_INST_OGUID = 453331 #组 GRP_DW 的唯一 OGUID 值
#以下配置为监视器到组 GRP_DW 的守护进程的连接信息,以“IP:PORT”的形式配置
#IP 对应 dmmal.ini 中的 MAL_HOST,PORT 对应 dmmal.ini 中的 MAL_DW_PORT
MON_DW_IP = 10.0.0.100:7436
MON_DW_IP = 10.0.0.101:7436
注册监视器服务:
使用 root 用户,到数据库安装目录的script/root下。
注册守护进程服务(主备库都执行)。
./dm_service_installer.sh -t dmmonitor -p confirm -monitor_ini /dmdata/dmdb/dmmonitor.ini
以服务方式启动监视器服务
执行以下命令,启动数据库实例:
systemctl start DmMonitorServiceconfirm
文章
阅读量
获赞