文章目录


前言

在敲命令之前,我们需要先做好目录规划。需要规划以下目录:
/dmdbms 数据库软件安装目录 用来存放达梦二进制程序、工具包
/dmdata 数据文件目录 用来存放数据库实例的实际数据
/dmarch 归档日志目录 用于数据库恢复
/dmbak 备份文件目录 用来定时备份文件
/dmcore CORE文件目录 用于存放系统崩溃时的诊断信息


提示:以下是本篇文章正文内容,下面案例可供参考

一、操作系统环境准备

创建专用用户

禁止使用root用户安装和运行数据库。
在这里插入图片描述
创建专用用户,可以只负责数据库相关的事情,即使出问题也不会影响整个的安全

修改主机名、关闭防火墙

修改主机名是为了单机环境方便识别管理
关闭防火墙可以减少网络层面的复杂性
在这里插入图片描述

创建目录并授权

chown将目录所有者改为dmdba用户,chmod 777赋予读写执行权限。
在这里插入图片描述

二、操作系统参数调优

调整sysctl.conf(内核参数)

vm.swappiness=10:告诉内核尽量少用swap分区。数据库追求的是速度,用swap会严重拖慢性能。

kernel.core_pattern:当数据库崩溃时,会在/dmcore目录生成core文件,方便事后分析原因
在这里插入图片描述

调整limits.conf(资源限制)

操作系统默认会对进程能打开的文件数、能创建的进程数做限制。
数据库需要同时处理大量连接和文件,必须解除这些限制
在这里插入图片描述

关闭SELinux

SELinux是Linux的安全模块,但它的严格限制经常导致数据库无法正常读写文件
在这里插入图片描述

禁用透明大页

透明大页是Linux内核的一个特性,它会自动将内存页合并成大页。
对数据库来说,这种"自动合并"会导致性能波动和内存管理问题。
在这里插入图片描述

调整磁盘调度算法

机械硬盘推荐mq-deadline,固态硬盘推荐none

三、安装数据库软件

挂载安装包

# 切换为dmdba用户(重要!)
su - dmdba

# 挂载ISO文件
mount -o loop dm8_xxx.iso /mnt
cd /mnt

执行安装

./DMInstall.bin -i

-i参数表示命令行安装模式(无图形界面)。安装过程中需要选择:

语言:选择中文

Key文件:开发版可以直接跳过

时区:选择 Asia/China

安装类型:选择 典型安装(Typical)

安装目录:/dmdbms

安装完成后,必须切换回root用户执行一个脚本:

su - root
/dmdbms/script/root/root_installer.sh

这个脚本会注册dmap服务(达梦的辅助进程,用于备份等操作)


四、初始化数据库实例

使用dminit工具初始化

su - dmdba
cd /dmdbms/bin

./dminit PATH=/dmdata \
  PORT_NUM=15236 \
  PAGE_SIZE=32 \
  EXTENT_SIZE=32 \
  LOG_SIZE=2048 \
  CHARSET=0 \
  CASE_SENSITIVE=Y \
  SYSDBA_PWD=Dameng@1234 \
  SYSAUDITOR_PWD=Dameng@1234

参数

PAGE_SIZE、CASE_SENSITIVE、CHARSET这三个参数一旦初始化完成就无法修改!如果选错,只能删除实例重新初始化。所以在执行之前一定要和业务方确认清楚。

注册数据库服务

为了让数据库能够开机自启,需要注册为系统服务:

su - root
/dmdbms/script/root/dm_service_installer.sh -t dmserver \
  -dm_ini /dmdata/DAMENG/dm.ini -p DMSERVER

这个命令会在/etc/systemd/system/下生成DmServiceDMSERVER.service文件

启动数据库

su - dmdba
/dmdbms/bin/DmServiceDMSERVER start

五、部署后配置

实例启动只是"能用",要"好用"还需要一系列配置。

调整MALLOC_ARENA_MAX

# 添加到系统profile
echo "export MALLOC_ARENA_MAX=1" >> /etc/profile

# 添加到dmdba用户profile
echo "export MALLOC_ARENA_MAX=1" >> /home/dmdba/.bash_profile

# 修改服务启动脚本
sed -i "s/ARENA_MAX=4/ARENA_MAX=1/g" /dmdbms/bin/DmServiceDMSERVER

可以理解为每个线程都想要自己的"小仓库",结果仓库太多反而浪费。设置MALLOC_ARENA_MAX=1就是告诉大家"只有一个仓库,都来这里取"。

开启归档日志

归档日志是数据库恢复的生命线。没有归档,一旦数据损坏就无法恢复到故障前的状态。

# 使用disql连接数据库
cd /dmdbms/bin
./disql SYSDBA/Dameng@1234

SQL> ALTER DATABASE MOUNT;
SQL> ALTER DATABASE ARCHIVELOG;
SQL> ALTER DATABASE ADD ARCHIVELOG 'DEST=/dmarch, TYPE=LOCAL, FILE_SIZE=2048, SPACE_LIMIT=51200';
SQL> ALTER DATABASE OPEN;

MOUNT:将数据库置于装载状态(不允许读写)
ARCHIVELOG:开启归档模式
ADD ARCHIVELOG:添加归档配置,SPACE_LIMIT=51200表示归档空间上限约50GB

开启异步SQL日志(sqllog)

SQL日志记录了所有执行的SQL语句,是性能分析和问题排查的利器。

SQL> SP_SET_PARA_VALUE(1,'SVR_LOG',1);

然后编辑/dmdata/DAMENG/sqllog.ini:

BUF_TOTAL_SIZE = 20480    # 总缓冲区大小
BUF_SIZE = 2048           # 单块缓冲区大小
ASYNC_FLUSH = 1           # 异步写入,不阻塞业务
SQL_TRACE_MASK = 2:3:25:28 # 只记录关键操作
MIN_EXEC_TIME = 1000      # 只记录超过1秒的慢SQL

配置完成后刷新:
SQL> SP_REFRESH_SVR_LOG_CONFIG();

配置定时备份

这一步是重中之重
达梦提供了内置的定时作业系统。以下配置每天23:00全量备份,自动删除30天前的备份:

-- 初始化作业系统
CALL SP_INIT_JOB_SYS(1);

-- 创建备份作业
CALL SP_CREATE_JOB('bakall_delall',1,0,'',0,0,'',0,
  '每天23:00全量备份、删除30天前的全量备份');

CALL SP_JOB_CONFIG_START('bakall_delall');

-- 备份步骤
CALL SP_ADD_JOB_STEP('bakall_delall', 'bakall', 6,
  '01020000/dmbak', 3, 1, 0, 0, null, 0);

-- 删除步骤(30天前的备份)
CALL SP_ADD_JOB_STEP('bakall_delall', 'delall', 0,
  'SF_BAKSET_BACKUP_DIR_ADD(''disk'',''/dmbak'');
   CALL SP_DB_BAKSET_REMOVE_BATCH(''disk'',SYSDATE-30);', 
  1, 1, 0, 0, null, 0);

-- 定时调度:每天23:00
CALL SP_ADD_JOB_SCHEDULE('bakall_delall', 'bakall_delall_time01', 
  1, 1, 1, 0, 0, '23:00:00', null, '2019-01-01 01:01:01', null, '');

CALL SP_JOB_CONFIG_COMMIT('bakall_delall');

对于大多数业务场景,每天一次全量备份+归档日志的组合,可以在30天内恢复到任意时间点。增量备份虽然节省空间,但恢复时需要"全量+所有增量"依次应用,恢复时间更长

六、收尾工作

所有配置完成后,最后一步是重启服务器验证一切正常

# 停止服务
su - dmdba
/dmdbms/bin/DmAPService stop
/dmdbms/bin/DmServiceDMSERVER stop

# 重启服务器
su - root
reboot

重启后需要检查:

数据库服务是否自动启动:ps -ef | grep dmdba
透明大页是否禁用:cat /sys/kernel/mm/transparent_hugepage/enabled(应显示[never])
磁盘调度是否正确:cat /sys/block/vdb/queue/scheduler
备份文件是否生成:检查/dmbak目录

总结

阶段 关键检查项
环境准备 创建dmdba用户、关闭防火墙
系统调优 禁用透明大页、调整limits
软件安装 使用dmdba用户、执行root脚本
实例初始化 PAGE_SIZE/CHARSET/CASE_SENSITIVE确认
部署后配置 MALLOC_ARENA_MAX、归档、备份
收尾验证 重启后检查服务、参数生效

上述为部署检查清单。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐