操作系统
版本:centos 7.9 aarch64
数据库版本:DM8 datawatch架构
#(ROOT)
## 创建用户
groupadd dinstall -g 2001
useradd -g dinstall -s /bin/bash -m -d /home/dmdba -u 1001 dmdba
passwd dmdba
## 密码 11111111
## 创建目录及授权
主备库(A/B节点):
mkdir -p /dm/dmdbms
mkdir -p /data
mkdir -p /data/dmarch
mkdir -p /data/sqllog
mkdir -p /data/dmbak
mkdir -p /data/dmmonitorlog
chown dmdba.dinstall -R /dm/dmdbms ;chmod 775 /dm/dmdbms
chown dmdba.dinstall -R /data ;chmod 775 /data -R
监视器节点:
mkdir -p /dm/dmdbms/dmmonitor
chown dmdba.dinstall /dm/dmdbms/dmmonitor ;chmod 775 /dm/dmdbms/dmmonitor
## 存储性能测试:
传统关系型数据库的最大瓶颈之一就在于磁盘的读写速率上,因此检测磁盘的IO速率是十分必要的。
磁盘的运作是磁盘读写前寻找磁道的过程。磁盘自带的读写缓存大小,对于磁盘读写速度至关重要。读写速度快的磁盘,通常都带有较大的读写缓存。测试服务器读写性能,以此来判断是否存在性能瓶颈。
mkdir -p /data/fio_test && cd /data/fio_test
fio --name=dm_randrw --filename=/data/fio_test/dm_testfile --ioengine=libaio --direct=1 --iodepth=32 --rw=randrw --rwmixread=70 --bs=8k --size=20G --numjobs=8 --runtime=300 --group_reporting
dd if=/dev/zero of=test bs=32k count=4k oflag=dsync
主库:
[root@实例A fio_test]# dd if=/dev/zero of=test bs=32k count=4k oflag=dsync
4096+0 records in
4096+0 records out
134217728 bytes (134 MB, 128 MiB) copied, 4.56564 s, 29.4 MB/s
[root@实例A fio_test]#
备库:
[root@实例B fio_test]# dd if=/dev/zero of=test bs=32k count=4k oflag=dsync
4096+0 records in
4096+0 records out
134217728 bytes (134 MB, 128 MiB) copied, 4.3517 s, 30.8 MB/s
磁盘调度算法
#(ROOT)
lsblk 命令找到数据盘对应的物理盘。
查看磁盘调度算法
cat /sys/block/vdb/queue/scheduler
cat /sys/block/vdc/queue/scheduler
vim /etc/udev/rules.d/io_scheduler.rules
ACTION=="add|change", KERNEL=="sdc", ATTR{queue/scheduler}="mq_deadline "
##执行命令生效
udevadm trigger --name-match=sda
## 达梦数据库的稳定运行,需要将磁盘的调度算法设置为 deadline,特别是 arm 平台,必须要设置为 deadline。如存储为 nvme 等高性能的设备时,此类设备 IO 调度算法只有 none,则无需设置。
#(ROOT)
## 查看参数当前配置情况:
systemctl show | grep -E 'DefaultLimit(NOFILE|NPROC|CORE|FSIZE|DATA|AS|NICE)'
## 修改参数配置:
cat /etc/systemd/system.conf |grep -v grep |grep -E "DefaultLimitFSIZE|DefaultLimitDATA|DefaultLimitCORE|DefaultLimitNOFILE|DefaultLimitAS|DefaultLimitNPROC|DefaultLimitNICE"
echo "
DefaultLimitFSIZE=unlimited
DefaultLimitDATA=unlimited
DefaultLimitCORE=unlimited
DefaultLimitNOFILE=65536
DefaultLimitAS=unlimited
DefaultLimitNPROC=10240
DefaultLimitNICE=0 " >> /etc/systemd/system.conf
## 重启系统生效:
reboot
#(ROOT)
需查看dmdba用户是否有访问/etc/security/limits.conf的权限,如无法访问需要授权
chmod a+x /etc/security
chmod a+r /etc/security/limits.conf
echo "
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
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 10240
dmdba hard nproc 10240
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.conf
## 重启操作系统
reboot
## 确认是否生效
ulimit -a
## 在数据库运行之后,可通过cat /proc/pid号/limits,检查实际资源限制是否生效:
for i in `ps -ef |grep dms | grep -v grep |awk '{print $2}'`; do cat /proc/$i/limits; done
[root@ ~]# find / -name *nproc*
[root@ ~]# cat /etc/security/limits.d/90-nproc.conf
* soft nproc 65536
* hard nproc 65536
查看系统内存
#(ROOT)
free -g && swapon -s
关闭swap:
##临时关闭 swap 分区 ,重启后失效
#(ROOT)
swapoff -a
##永久关闭 swap 分区(重启操作系统)
#(ROOT)
sed -ri 's/.*swap.*/#&/' /etc/fstab
reboot
##再次确认
#(ROOT)
free -g
#(ROOT)
lscpu | grep "每个核的线程数"
或英文系统:
lscpu | grep "Thread(s) per core"
输出 1 就是没开超线程,输出 2 就是开了
#(ROOT)
date -R
timedatectl |grep "Time zone"
## 如果时间不对,通过下面命令手动修改 ##
date -s "yyyy-mm-dd HH:MM:SS"
## 如果不是东八区,通过下面命令修改 ##
timedatectl set-timezone "Asia/Shanghai"
#调整后验证
date -R
timedatectl |grep "Time zone"
生产环境中如有配置好的NTP服务器可以使用,需要配置时钟同步,步骤如下:
## 修改 chrony.conf 配置文件 ,将原配置文件中的 server 注释掉,换成 NTP 服务器地址。
#(ROOT)
vi /etc/chrony.conf
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#server 0.centos.pool.ntp.org iburst
#server 0.centos.pool.ntp.org iburst
#server 0.centos.pool.ntp.org iburst
server 10.10.xxx.xxx iburst
server 10.10.xxx.xxx iburst
## 修改完配置后重启 chronyd 服务
systemctl restart chronyd
## 并配置 chronyd 为开机启动
systemctl enable chronyd
## 检查 chronyd 服务状态
systemctl status chronyd
## 查看时间同步源
chronyc sources -v
#(ROOT)
cat >> /etc/hosts <<EOF
实例A 192.168.0.111
EOF
cat >> /etc/hosts <<EOF
i-a88CjAclL 192.168.0.112
EOF
cat >> /etc/hosts <<EOF
监视器 192.168.0.123
EOF
## 检查验证 ##
cat /etc/hosts
# 挂载系统安装 ISO(光盘或 ISO 文件)
#(ROOT)
mkdir -p /mnt
mount /dev/cdrom /mnt
## 如果是已上传到主机的ISO 文件:
#(ROOT)
# mount -o loop /path/to/Kylin-Server-V10-SP1-x86_64.iso /mnt
## 备份原有 repo 配置
#(ROOT)
cd /etc/yum.repos.d/
mkdir backup && mv *.repo backup/
## 新建本地源配置
#(ROOT)
cat > /etc/yum.repos.d/kylin_local.repo << 'EOF'
[kylin_local]
name=Kylin Local ISO Repository
baseurl=file:///mnt/kylin/
enabled=1
gpgcheck=0
EOF
## 生效
yum clean all
yum makecache
#(ROOT)
## 安装包范围 无输出代表均已安装
rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' libaio libaio-devel binutils gcc gcc-c++ make libXext libXtst libXrender unixODBC unixODBC-devel |grep "not installed"
## 关闭防火墙
systemctl status firewalld
暂时关闭防火墙。
systemctl stop firewalld
永久关闭防火墙,防止自启动。
systemctl disable firewalld
## 添加端口到防火墙(Firewall)
## 添加(--permanent 永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=5236/tcp --permanent
## 重新载入
firewall-cmd --reload
## 查看
firewall-cmd --zone=public --query-port=5236/tcp
## 删除
firewall-cmd --zone=public --remove-port=5236/tcp --permanent
## 禁用SELINUX 配置
#(ROOT)
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
grep '^SELINUX=' /etc/selinux/config # 确认已改为 disabled
个人测试环境需要补充:
## 检查启动方式
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
## 使用 grubby 添加内核参数
grubby --update-kernel ALL --args selinux=0
grep selinux=0 /boot/efi/EFI/centos/grub.cfg
##
vi /etc/default/grub 在kernel添加selinux=0
## 重启系统生效:
reboot
## 重启后验证
getenforce # 应显示 Disabled
#(ROOT)
## 目录创建
mkdir -p /dm/core
chown dmdba:dinstall /dm/core
chmod 755 /dm/core
## 配置文件调整
vi /etc/sysctl.conf
## 修改下述文件
echo "
vm.numa_stat = 0
vm.overcommit_memory=0
vm.swappiness=10
vm.min_free_kbytes=1153434
kernel.core_pattern=/dm/core/core-%e-%p-%s
" >> /etc/sysctl.conf
sysctl -p
## 查看所有参数是否生效
sysctl -a | grep -E "vm.overcommit_memory|vm.swappiness|vm.numa_stat|kernel.core_pattern"、
#(ROOT)
## 查看是否生效
1.查看启动参数
cat /proc/cmdline | grep -i numa
2.查看 dmesg 日志
dmesg | grep -i numa
3.尝试 numactl
numactl --hardware
4.检查内核模块
ls /sys/kernel/mm/numa/
## 检查启动方式
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
## Centos7系统
1.编辑 vi /etc/default/grub 文件,如下图所示加上:numa=off
2.重新生成/etc/grub2.cfg 配置文件:
grub2-mkconfig -o /etc/grub2.cfg
3.重启操作系统
reboot
4.重启之后进行确认
dmesg | grep -i numa
5.再次确认
cat /proc/cmdline
#个人测试环境操作步骤如下:
1.编辑 vi /etc/default/grub 文件,如下图所示加上:numa=off
2. 生成 BOOT 路径(BIOS)
grub2-mkconfig -o /boot/grub2/grub.cfg
3. 同时生成 EFI 路径(UEFI 必需!因为 grubby/grub2-mkconfig 可能漏写这里)
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
4.验证参数已写入
grep numa=off /boot/efi/EFI/centos/grub.cfg
5.重启操作系统
reboot
6.重启之后进行确认
dmesg | grep -i numa
5.再次确认
cat /proc/cmdline
查看当前状态:cat /sys/kernel/mm/transparent_hugepage/enabled
禁用透明大页
1.编辑/etc/sysconfig/grub 文件,在 GRUB_CMDLINE_LINUX 那一行后面追加 transparent_hugepage=never
例如:
2.再使用 grub2-mkconfig 生成grub.cfg配置文件。
grub2-mkconfig -o /boot/grub2/grub.cfg
3.重启系统使配置生效。
reboot
4.查看重启后,是否生效
cat /sys/kernel/mm/transparent_hugepage/enabled
个人虚拟化环境操作如下:
1.编辑vi /etc/sysconfig/grub 文件,在 GRUB_CMDLINE_LINUX 那一行后面追加 transparent_hugepage=never
例如:
2.再使用 grub2-mkconfig 生成grub.cfg配置文件。
grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
3.重启系统使配置生效。
reboot
4.查看重启后,是否生效
cat /sys/kernel/mm/transparent_hugepage/enabled
2.19.RemoveIPC 参数设置
#(ROOT)
## 修改配置
echo "RemoveIPC=no" >> /etc/systemd/logind.conf
systemctl daemon-reload
systemctl restart systemd-logind
## 验证配置
grep -E "RemoveIPC=no" /etc/systemd/logind.conf
$(DMDBA)
## 说明
su - dmdba
vi .bash_profile
export DM_HOME="/dm/dmdbms"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/dm/dmdbms/bin"
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
数据库版本路径:/dm/dmdbms/soft
数据库安装路径:/dm/dmdbms
#(ROOT)
mount -o loop /dm/dmdbms/soft/dm8_20260109_HWarm_kylin10_sp3_64.iso /mnt
cd /mnt
ls -lrt
总用量 1020675
-r-xr-xr-x 1 root root 3011547 5月 23 2025 'DM8 Install.pdf'
-r-xr-xr-x 1 root root 1042159551 1月 9 2026 DMInstall.bin
#(ROOT)
su - dmdba
上一次登录: 四 8月 6 20:44:27 CST 2026 pts/0 上
$(DMDBA)
cd /mnt
./DMInstall.bin -i
安装语言:
[1]: 简体中文
[2]: English
请选择安装语言 [1]:1
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:Y
--注释:没有key选择N
请输入Key文件的路径地址 [dm.key]:/opt/soft/dm.key
有效日期: xxxx-xx-xx
服务器颁布类型: 企业版
发布类型: 试用版
用户名称: 武汉达梦公司疫情期间临时授权
授权用户数: 无限制
并发连接数: 无限制
是否设置时区? (Y/y:是 N/n:否) [Y/y]:y
设置时区:
...
[21]: (GTM+08:00) 中国标准时间
...
请选择时区 [21]:21
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:1
所需空间: 2036M
请选择安装目录 [/dm/dmdbms]:/dm/dmdbms
可用空间: 26G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否) [Y/y]:y
安装前小结
安装位置: /opt/dmdbms
所需空间: 2036M
可用空间: 26G
版本信息: 企业版
有效日期:xxxx-xx-xx
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2026-08-06 21:16:23
[INFO] 安装达梦数据库...
2026-08-06 21:16:23
[INFO] 安装 基础 模块...
2026-08-06 21:16:29
[INFO] 安装 服务器 模块...
2026-08-06 21:16:29
[INFO] 安装 客户端 模块...
2026-08-06 21:16:33
[INFO] 安装 驱动 模块...
2026-08-06 21:16:34
[INFO] 安装 手册 模块...
2026-08-06 21:16:34
[INFO] 安装 服务 模块...
2026-08-06 21:16:35
[INFO] 移动日志文件。
2026-08-06 21:16:37
[INFO] 安装达梦数据库完成。
请以root系统用户执行命令:
/opt/dmdbms/script/root/root_installer.sh
安装结束
## root 用户执行脚本:
#(ROOT)
[root@node1 ~]# /opt/dmdbms/script/root/root_installer.sh
移动 /opt/dmdbms/bin/dm_svc.conf 到/etc目录
创建DmAPService服务
Created symlink /etc/systemd/system/multi-user.target.wants/DmAPService.service → /usr/lib/systemd/system/DmAPService.service.
创建服务(DmAPService)完成
启动DmAPService服务
$(DMDBA)
dminit path=/data/ PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=4096 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DW01 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
## 参数说明:
页大小(PAGE_SIZE):32
簇大小(EXTENT_SIZE):32
日志大小(LOG_SIZE):4096
大小写(CASE_SENSITIVE)[Y/1:敏感(默认) / N:/0不敏感]:敏感
字符集(CHARSET)[0:GB18030 / 1:UTF-8]:GB18030
实例名:INSTANCE_NAME
数据库名:DB_NAME
## 输出日志:
initdb V8
db version: 0x7000d
License will expire on 2026-09-25
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /data/DAMENG/DAMENG01.log
log file path: /data/DAMENG/DAMENG02.log
write to dir [/data/DAMENG].
create dm database success. 2026-08-18 13:21:31
dminit path=/data/ PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=4096 CASE_SENSITIVE=y CHARSET=1 DB_NAME=DAMENG INSTANCE_NAME=DW02 SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123
$(DMDBA)
窗口1:
[dmdba@dw01 ~]$ dmserver /data/DAMENG/dm.ini
窗口2:
[dmdba@dw01 ~]$ disql
disql V8
用户名:sysdba
密码:
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE ADD ARCHIVELOG 'DEST=/data/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=204800';
ALTER DATABASE OPEN;
以下优化配置由参数自动优化脚本工具 AutoParaAdj 5.6 针对相应运行环境自动生成,可供参考采用,注意配置中兼容及相应配置。
[dmdba@实例A ~]$ disql sysdba/Dameng123:5236
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.823(ms)
disql V8
SET SERVEROUTPUT ON;
SET ECHO off;
@/home/dmdba/AutoParaAdj5.6_dm8.sql
SP_SET_PARA_VALUE(2,'WORKER_THREADS',64);
SP_SET_PARA_VALUE(2,'IO_THR_GROUPS',32);
SP_SET_PARA_VALUE(2,'GEN_SQL_MEM_RECLAIM',0);
SP_SET_PARA_VALUE(2,'MAX_OS_MEMORY', 100);
SP_SET_PARA_VALUE(2,'MEMORY_POOL', 2000);
SP_SET_PARA_VALUE(2,'MEMORY_N_POOLS', 59);
SP_SET_PARA_VALUE(2,'MEMORY_TARGET', 41000);
SP_SET_PARA_VALUE(2,'BUFFER', 162000);
SP_SET_PARA_VALUE(2,'BUFFER_POOLS', 101);
SP_SET_PARA_VALUE(2,'RECYCLE', 17000);
SP_SET_PARA_VALUE(2,'RECYCLE_POOLS', 97);
SP_SET_PARA_VALUE(2,'FAST_POOL_PAGES', 99999);
SP_SET_PARA_VALUE(2,'FAST_ROLL_PAGES', 9999);
SP_SET_PARA_VALUE(2,'ENABLE_FREQROOTS',1);
SP_SET_PARA_VALUE(2,'MULTI_PAGE_GET_NUM',1);
SP_SET_PARA_VALUE(2,'PRELOAD_SCAN_NUM',0);
SP_SET_PARA_VALUE(2,'PRELOAD_EXTENT_NUM',0);
SP_SET_PARA_VALUE(2,'TASK_THREADS',16);
SP_SET_PARA_VALUE(2,'MEMORY_MAGIC_CHECK', 1);
SP_SET_PARA_VALUE(1,'HJ_BUF_GLOBAL_SIZE', 41000);
SP_SET_PARA_VALUE(1,'HJ_BUF_SIZE', 512);
SP_SET_PARA_VALUE(1,'HAGR_BUF_GLOBAL_SIZE',26000);
SP_SET_PARA_VALUE(1,'HAGR_BUF_SIZE', 512);
SP_SET_PARA_VALUE(2,'SORT_FLAG',1);
SP_SET_PARA_VALUE(2,'SORT_BLK_SIZE',2);
SP_SET_PARA_VALUE(2,'SORT_BUF_SIZE', 50);
SP_SET_PARA_VALUE(2,'SORT_BUF_GLOBAL_SIZE', 41000);
SP_SET_PARA_VALUE(2,'RLOG_POOL_SIZE', 2048);
SP_SET_PARA_VALUE(2,'CACHE_POOL_SIZE', 2048);
SP_SET_PARA_VALUE(2,'DICT_BUF_SIZE', 1024);
SP_SET_PARA_VALUE(2,'VM_POOL_TARGET', 8192);
SP_SET_PARA_VALUE(2,'SESS_POOL_TARGET', 8192);
SP_SET_PARA_VALUE(2,'USE_PLN_POOL', 1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR', 1);
SP_SET_PARA_VALUE(2,'SVR_LOG', 0);
SP_SET_PARA_VALUE(2,'TEMP_SIZE', 1024);
SP_SET_PARA_VALUE(2,'TEMP_SPACE_LIMIT', 102400);
SP_SET_PARA_VALUE(2,'MAX_SESSIONS', 5000);
SP_SET_PARA_VALUE(2,'MAX_SESSION_STATEMENT', 20000);
SP_SET_PARA_VALUE(2,'PK_WITH_CLUSTER', 0);
SP_SET_PARA_VALUE(2,'ENABLE_ENCRYPT',0);
SP_SET_PARA_VALUE(2,'OLAP_FLAG',2);
SP_SET_PARA_VALUE(2,'OPTIMIZER_MODE',1);
SP_SET_PARA_VALUE(2,'ADAPTIVE_NPLN_FLAG',0);
SP_SET_PARA_VALUE(2,'MONITOR_INDEX_FLAG',2);
SP_SET_PARA_VALUE(2,'ENABLE_CREATE_BM_INDEX_FLAG',0);
SP_SET_PARA_VALUE(2,'PARALLEL_PURGE_FLAG',1);
SP_SET_PARA_VALUE(2,'PARALLEL_POLICY',2);
SP_SET_PARA_DOUBLE_VALUE(2,'UNDO_RETENTION',900);
SP_SET_PARA_VALUE(2,'UNDO_EXTENT_NUM',16);
SP_SET_PARA_VALUE(2,'ENABLE_INJECT_HINT',1);
SP_SET_PARA_VALUE(2,'BTR_SPLIT_MODE',1);
SP_SET_PARA_VALUE(2,'FAST_LOGIN',1);
SP_SET_PARA_VALUE(2,'ENABLE_MONITOR_BP',0);
SP_SET_PARA_VALUE(1,'SLCT_OPT_FLAG',0);
行号 MEMORY_TARGET+BUFFER+RECYCLE+HJ_BUF_GLOBAL_SIZE+HAGR_BUF_GLOBAL_SIZE+CACHE_POOL_SIZE+DICT_BUF_SIZE+SORT_BUF_GLOBAL_SIZE+RLOG_POO
---------- --------------------------------------------------------------------------------------------------------------------------------
1 413120
已用时间: 71.129(毫秒). 执行号:65602.
$(DMDBA)
[dmdba@dw01 ~]$ cp /data/DAMENG/dm.ini /tmp/dm.ini.bak
[dmdba@dw01 ~]$ disql
disql V8
用户名:sysdba
密码:
SQL>
sp_set_para_value(2,'PORT_NUM',5236);
sp_set_para_value(2,'MAL_INI',1);
sp_set_para_value(2,'DW_INACTIVE_INTERVAL',60);
sp_set_para_value(2,'ALTER_MODE_STATUS',0);
sp_set_para_value(2,'ENABLE_OFFLINE_TS',2);
sp_set_para_value(2,'RLOG_SEND_APPLY_MON',64);
sp_set_para_value(2,'DW_SUSPEND_TIME',60);
sp_set_para_value(2,'SUSPEND_WORKER_TIMEOUT',60);
sp_set_para_value(2,'DW_ARCH_SPACE_CHECK',1);
sp_set_para_value(2,'DW_ARCH_HANG_CHECK',1);
sp_set_para_value(2,'REDOS_BUF_SIZE',10240);
sp_set_para_value(2,'REDOS_BUF_NUM',0);
sp_set_para_value(2,'REDOS_MAX_DELAY',600);
SP_SET_PARA_VALUE(2,'CALC_AS_DECIMAL',1);
cpu/内存配置一样可直接cp A机器dm.ini文件,并调整INSTANCE_NAME
优化配置由参数自动优化脚本工具 AutoParaAdj 5.6 针对相应运行环境自动生成,可供参考采用,注意配置中兼容及相应配置。
$(DMDBA)
[dmdba@dw01 DAMENG]$ disql
disql V8
用户名:sysdba
密码:
SQL> shutdown immediate;
[dmdba@~]# /dm/dmdbms/bin/dmrman
RMAN> backup database '/data/DAMENG/dm.ini' full backupset '/data/dmbak/fullback';
[dmdba@~]# scp -r /data/dmbak/fullback dmdba@192.168.0.112:/data/dmbak
[dmdba@dw02 fullback]$ dmrman
RMAN> restore database '/data/DAMENG/dm.ini' from backupset '/data/dmbak/fullback';
RMAN> recover database '/data/DAMENG/dm.ini' from backupset '/data/dmbak/fullback';
RMAN> recover database '/data/DAMENG/dm.ini' update db_magic;
注意buf设置,根据内存动态调整:
内存≥32G情况下调整以下参数
1.在sqllog.ini文件BUF_TOTAL_SIZE由10240修改为1024000
2.在sqllog.ini文件BUF_SIZE由1024修改为10240
3.在sqllog.ini文件BUF_KEEP_CNT由6修改为20
[dmdba@dw01 ~]# cd /data/DAMENG
[dmdba@dw01 DAMENG]$vi sqllog.ini
BUF_TOTAL_SIZE = 1024000 #SQLs Log Buffer Total Size(K)(1024~1024000)
BUF_SIZE = 102400 #SQLs Log Buffer Size(K)(50~102400)
BUF_KEEP_CNT = 20 #SQLs Log buffer keeped count(1~100)
PARAMS_DELAY = 0 #SQLs Log param data whether report delay(0~2)
[SLOG_ALL]
FILE_PATH = /data/sqllog
PART_STOR = 0
SWITCH_MODE = 2
SWITCH_LIMIT = 512
ASYNC_FLUSH = 1
FILE_NUM = 50
ITEMS = 0
SQL_TRACE_MASK = 1
MIN_EXEC_TIME = 0
USER_MODE = 0
USERS =
EXECTIME_PREC_FLAG = 0
[SLOG_ERROR]
SQL_TRACE_MASK = 23
FILE_PATH = ../log
[SLOG_DDL]
SQL_TRACE_MASK = 3
[SLOG_LONG_SQL]
SQL_TRACE_MASK = 25
MIN_EXEC_TIME = 60000
[dmdba@dw01 ~]# cd /data/DAMENG
[dmdba@dw01 DAMENG]$ vi dmarch.ini
ARCH_WAIT_APPLY =0 #0:高性能(故障手切) 1:事务一致(故障自切)
[ARCHIVE_LOCAL]
ARCH_TYPE= LOCAL #本地归档类型
ARCH_DEST= /data/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE= 2048 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 204800 #归档上限,单位MB
[ARCHIVE_REALTIME]
ARCH_TYPE= REALTIME #实时归档类型
ARCH_DEST= DW02 #实时归档目标实例名
[dmdba@dw02 ~]# cd /data/DAMENG
[dmdba@dw02 DAMENG]$ vi dmarch.ini
ARCH_WAIT_APPLY =0 #0:高性能(故障手切) 1:事务一致(故障自切)
[ARCHIVE_LOCAL]
ARCH_TYPE= LOCAL #本地归档类型
ARCH_DEST= /data/dmarch/ #本地归档存放路径
ARCH_FILE_SIZE= 2048 #单个归档大小,单位MB
ARCH_SPACE_LIMIT = 204800 #归档上限,单位MB
[ARCHIVE_REALTIME]
ARCH_TYPE= REALTIME #实时归档类型
ARCH_DEST= DW01 #实时归档目标实例名
[dmdba@dw01 ~]# cd /data/DAMENG
[dmdba@dw01 DAMENG]$ vi /data/DAMENG/dmmal.ini
MAL_CHECK_INTERVAL = 60 #MAL链路检测时间间隔
MAL_CONN_FAIL_INTERVAL= 15 #判定MAL链路断开的时间
MAL_BUF_SIZE = 512 #单个MAL缓存大小,单位MB
MAL_SYS_BUF_SIZE= 2048 #MAL总大小限制,单位MB
MAL_COMPRESS_LEVEL = 0 #MAL消息压缩等级,0表示不压缩
[MAL_INST1] #实例段参数:
MAL_INST_NAME= DW01 #实例名,和 dm.ini的INSTANCE_NAME一致
MAL_HOST= 192.168.0.121 #心跳IP,MAL系统监听TCP连接的IP地址
MAL_PORT= 5235 #MAL端口,MAL系统监听TCP连接的端口,日志链接端口
MAL_INST_HOST= 192.168.0.111 #业务IP,实例的对外服务IP地址
MAL_INST_PORT= 5236 #实例端口,实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT= 5436 #MAL守护进程端口,实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5435 #实例监听守护进程端口,实例监听守护进程TCP连接的端口
[MAL_INST2] #实例段参数:
MAL_INST_NAME= DW02 #实例名,和 dm.ini的INSTANCE_NAME一致
MAL_HOST= 192.168.0.122 #心跳IP,MAL系统监听TCP连接的IP地址
MAL_PORT= 5235 #MAL端口,MAL系统监听TCP连接的端口,日志链接端口
MAL_INST_HOST= 192.168.0.112 #业务IP,实例的对外服务IP地址
MAL_INST_PORT= 5236 #实例端口,实例对外服务端口,和dm.ini的PORT_NUM一致
MAL_DW_PORT= 5436 #MAL守护进程端口,实例对应的守护进程监听TCP连接的端口
MAL_INST_DW_PORT = 5435 #实例监听守护进程端口,实例监听守护进程TCP连接的端口
#(ROOT)
[root@dw01 ]# cd /dm/dmdbms/script/root
[root@dw01 ]# sh dm_service_installer.sh -t dmserver -p DW01 -dm_ini /data/DAMENG/dm.ini -m mount
#(ROOT)
[root@dw02 ]# cd /dm/dmdbms/script/root
[root@dw02 ]# sh dm_service_installer.sh -t dmserver -p DW02 -dm_ini /data/DAMENG/dm.ini -m mount
[dmdba@dw01 ~]# cd /data/DAMENG
[dmdba@dw01 DAMENG]# vi dmwatcher.ini
[GDW1]
DW_TYPE= GLOBAL #全局守护类型
DW_MODE= AUTO #故障自动动切换模式
DW_ERROR_TIME= 60 #远程守护进程故障认定时间
INST_ERROR_TIME= 60 #本地实例故障认定时间
INST_RECOVER_TIME= 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI= /data/DAMENG/dm.ini #dm.ini文件路径
INST_AUTO_RESTART= 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/DmServiceDW01 restart
INST_SERVICE_IP_CHECK=1
DW_RECONNECT=2
DW_SUSPEND_CHECK=1
DW_FAILOVER_FORCE=0
[dmdba@dw01 ~]# cd /data/DAMENG
[dmdba@dw01 DAMENG]# vi dmwatcher.ini
[GDW1]
DW_TYPE= GLOBAL #全局守护类型
DW_MODE= AUTO #故障自动动切换模式
DW_ERROR_TIME= 60 #远程守护进程故障认定时间
INST_ERROR_TIME= 60 #本地实例故障认定时间
INST_RECOVER_TIME= 60 #主库守护进程启动恢复的间隔时间
INST_OGUID = 45331 #守护系统唯一OGUID值
INST_INI= /data/DAMENG/dm.ini #dm.ini文件路径
INST_AUTO_RESTART= 1 #打开实例的自动启动功能
INST_STARTUP_CMD = /dm/dmdbms/bin/DmServiceDW02 restart
INST_SERVICE_IP_CHECK=1
DW_RECONNECT=2
DW_SUSPEND_CHECK=1
DW_FAILOVER_FORCE=0
[root@dw01 ]# cd /dm/dmdbms/script/root
[root@dw01 ]# sh dm_service_installer.sh -t dmwatcher -p watcher -watcher_ini /data/DAMENG/dmwatcher.ini
[root@dw02 ]# cd /dm/dmdbms/script/root
[root@dw02 ]# sh dm_service_installer.sh -t dmwatcher -p watcher -watcher_ini /data/DAMENG/dmwatcher.ini
注意:
1、在各节点数据库 存放非确认监视器配置文件。
2、在确认监视器机器上(非集群节点) 注册确认监视器自启服务。
[root@监视器 dmdbms]# mkdir dmmonitor
[root@监视器 dmdbms]# chown dmdba.dinstall ./dmmonitor/
[root@监视器 dmdbms]# chmod 775 ./dmmonitor/
[dmdba@监视器 ~]$ cd /dm/dmdbms/dmmonitor/
[dmdba@监视器 dmmonitor]$ vi dmmonitor.ini
[dmdba@监视器 dmmonitor]$ vi dmmonitor1.ini
[dmdba@监视器 dmmonitor]$ cat dmmonitor.ini
MON_DW_CONFIRM = 1 #0为非确认,1为确认
MON_LOG_PATH = /dm/dmdbms/dmmonitor #监视器日志文件存放路径
MON_LOG_INTERVAL= 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE= 512 #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT= 2048 #日志上限,单位MB
[GDW1]
MON_INST_OGUID= 45331 #组GDW1的唯一OGUID 值
MON_DW_IP= 192.168.0.121:5436 #心跳IP,PORT对应MAL_DW_PORT
MON_DW_IP= 192.168.0.122:5436 #心跳IP,PORT对应MAL_DW_PORT
[dmdba@监视器 dmmonitor]$ cat dmmonitor1.ini
MON_DW_CONFIRM = 0 #0为非确认,1为确认
MON_LOG_PATH = /dm/dmdbms/dmmonitor #监视器日志文件存放路径
MON_LOG_INTERVAL= 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE= 512 #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT= 2048 #日志上限,单位MB
[GDW1]
MON_INST_OGUID= 45331 #组GDW1的唯一OGUID 值
MON_DW_IP= 192.168.0.121:5436 #心跳IP,PORT对应MAL_DW_PORT
MON_DW_IP= 192.168.0.122:5436 #心跳IP,PORT对应MAL_DW_PORT
机器A/B可以配置信息无需注册服务:
[dmdba@实例A DAMENG]$ mkdir -p /data/dmmonitorlog
[dmdba@实例A DAMENG]$ chmod 775 /data/dmmonitorlog/
[dmdba@实例A DAMENG]$ vi dmmonitor.ini
[dmdba@实例A DAMENG]$ cat dmmonitor.ini
MON_DW_CONFIRM = 0 #0为非确认,1为确认
MON_LOG_PATH = /data/dmmonitorlog #监视器日志文件存放路径
MON_LOG_INTERVAL= 60 #每隔 60s 定时记录系统信息到日志文件
MON_LOG_FILE_SIZE= 512 #单个日志大小,单位MB
MON_LOG_SPACE_LIMIT= 2048 #日志上限,单位MB
[GDW1]
MON_INST_OGUID= 45331 #组GDW1的唯一OGUID 值
MON_DW_IP= 192.168.0.121:5436 #心跳IP,PORT对应MAL_DW_PORT
MON_DW_IP= 192.168.0.122:5436 #心跳IP,PORT对应MAL_DW_PORT
#(ROOT)
监视器节点:
[root@监视器 dmdbms]# cd /dm/dmdbms/script/root
[root@监视器 root]# sh dm_service_installer.sh -t dmmonitor -monitor_ini /dm/dmdbms/dmmonitor/dmmonitor.ini -p Monitor
Created symlink /etc/systemd/system/multi-user.target.wants/DmMonitorServiceMonitor.service → /usr/lib/systemd/system/DmMonitorServiceMonitor.service.
创建服务(DmMonitorServiceMonitor)完成
A机器:
[dmdba@实例A ~]$ DmServiceDW01 start
Starting DmServiceDW01:
[ OK ]
[dmdba@实例A ~]$
[dmdba@实例A ~]$ disql
SP_SET_OGUID(45331);
ALTER DATABASE PRIMARY;
B机器:
[dmdba@实例B DAMENG]$ DmServiceDW02 start
[dmdba@实例B DAMENG]$ disql
SP_SET_OGUID(45331);
ALTER DATABASE STANDBY;
A/B机器:
[dmdba@实例A DAMENG]$ DmWatcherServicewatcher start
[dmdba@实例B DAMENG]$ DmWatcherServicewatcher start
机器C确认监视器节点启动:
[dmdba@monitor ~]$ DmMonitorServiceMonitor start
登陆测试:
[dmdba@~]# dmmonitor /data/dmmonitor.ini
启动步骤:
A机器主库服务→B机器备库服务→A机器守护进程→B机器守护进程→确认监视器
A机器:[dmdba@dw01 ~]$ DmServiceDW01 start
B机器:[dmdba@dw02 ~]$ DmServiceDW02 start
A机器:[dmdba@dw01 ~]$ DmWatcherServicewatcher start
B机器:[dmdba@dw02 ~]$ DmWatcherServicewatcher start
监视器机器:[dmdba@monitor ~]$ DmMonitorServiceMonitor start
停止步骤:
确认监视器→B机器守护进程→A机器守护进程→A机器主库服务→B机器备库服务
监视器机器:[dmdba@monitor ~]$ DmMonitorServiceMonitor stop
B机器:[dmdba@dw02 ~]$ DmWatcherServicewatcher stop
A机器:[dmdba@dw01 ~]$ DmWatcherServicewatcher stop
A机器:[dmdba@dw01 ~]$ DmServiceDW01 stop
B机器:[dmdba@dw02 ~]$ DmServiceDW02 stop
文章
阅读量
获赞
