DM8数据库Docker镜像部署最佳实践
一、Docker加载DM8镜像
1.下载DM8镜像,由于官网暂未提供docker镜像下载,可通过网盘下载:https://pan.quark.cn/s/fe38ba821a2a
2.打开命令行工具cd进镜像下载目录,运行:docker load -i dm8_20241022_x86_rh6_64_single.tar加载镜像
3.命令行工具运行:docker images,查看镜像是否加载成功
二、Docker创建DM8容器
1.命令行工具运行:docker run -d --name dm8 -p 5236:5236 dm8_single:dm8_20241022_rev244896_x86_rh6_64,启动容器(dm8_single:dm8_20241022_rev244896_x86_rh6_64 = 镜像name:镜像tag)
2.docker查看数据目录、日志目录、配置文件目录路径,其中配置文件在数据目录,由于展开不利于截图,自行查找dm.ini文件
3.挂载目录避免数据丢失:在宿主机新建DM>data、DM>log文件夹,由于配置文件在数据目录这里就不进行创建
4.运行docker stop dm8 && docker rm dm8删除原本的临时容器,使用下面命令重启容器
/*****
-p:主机端口:容器端口
-d:启动的镜像名称。
--name:设置容器名称。
--restart=always:设置docker启动时,容器跟随自启。
-e SYSDBA_PWD="SYSDBA123":设置密码为SYSDBA123,镜像默认密码:SYSDBA001,默认账户:SYSDBA
-v /d/WSL/Docker/DM/data:/opt/dmdbms/data:挂载容器存储文件到宿主,避免因不小心卸载容器或者容器损坏导致数据丢失不可找回风险,,如果是linux系统宿主机不需要加盘符,直接使用/就代表宿主机的根目录
-v /d/WSL/Docker/DM/log:/opt/dmdbms/log:挂载日志目录,便于查找日志,如果是linux系统宿主机不需要加盘符,直接使用/就代表宿主机的根目录
*****/
docker run -d --name dm8 --restart=always -p 5236:5236 -v /d/WSL/Docker/DM/data:/opt/dmdbms/data -v /d/WSL/Docker/DM/log:/opt/dmdbms/log -e SYSDBA_PWD="SYSDBA123" dm8_single:dm8_20241022_rev244896_x86_rh6_64
5.测试登录
6.dminit命令行工具参数,可通过-e设置,如:-e SYSDBA_PWD="SYSDBA123"设置密码
参数名 | 参数描述 | 注意事项 |
---|---|---|
INI_FILE | 指定初始化配置文件路径 | 需确保文件路径正确且可读写 |
PATH | 数据库文件存放路径 | 路径需为空目录或允许覆盖 |
CTL_PATH | 控制文件路径 | 建议与数据文件分开存储以提高安全性 |
LOG_PATH | 日志文件路径 | 需确保有足够空间存储日志 |
EXTENT_SIZE | 数据文件扩展大小(MB) | 默认16MB,建议根据数据量调整 |
PAGE_SIZE | 页大小(KB),可选4/8/16/32 | 一旦设定不可更改,需根据应用场景选择 |
LOG_SIZE | 日志文件大小(MB) | 需满足事务量需求,过小会导致频繁切换 |
CASE_SENSITIVE | 标识符大小写敏感(Y/N) | 默认为Y,与兼容性相关,需谨慎选择 |
CHARSET/UNICODE_FLAG | 字符集(0/1),0-GBK,1-UTF8 | 需与应用程序字符集一致 |
SEC_PRIV_MODE | 安全权限模式(0/1/2) | 0-传统模式,1-自主访问控制,2-强制访问控制 |
SYSDBA_PWD | SYSDBA用户密码 | 建议设置复杂密码 |
SYSAUDITOR_PWD | SYSAUDITOR用户密码 | 审计管理员密码,安全场景下必设 |
DB_NAME | 数据库名 | 需唯一且符合命名规范 |
INSTANCE_NAME | 实例名 | 单机环境下通常与DB_NAME一致 |
PORT_NUM | 数据库服务监听端口 | 需确保端口未被占用 |
BUFFER | 系统缓冲区大小(MB) | 影响性能,建议为可用内存的50-70% |
TIME_ZONE | 时区设置(如+08:00) | 需与服务器时区一致 |
PAGE_CHECK/PAGE_HASH_NAME | 页校验算法 | 影响性能与安全性,建议开启 |
EXTERNAL_CIPHER/HASH/CRYPTO_NAME | 外部加密/哈希/加密算法名称 | 需确保算法库可用 |
RLOG_ENCRYPT_NAME | 日志加密算法 | 安全场景建议启用 |
RLOG_POSTFIX_NAME | 日志文件后缀 | 默认.log,无特殊需求不建议修改 |
USBKEY_PIN | USBKEY PIN码 | 使用USBKEY认证时必填 |
PAGE_ENC_SLICE_SIZE | 页加密分片大小 | 影响加密性能,默认4096字节 |
ENCRYPT_NAME | 数据库加密算法 | 需与安全策略一致,启用后不可更改 |
BLANK_PAD_MODE | 空格填充模式(0/1) | 影响字符串比较,兼容Oracle需设为1 |
SYSTEM/MAIN/ROLL_MIRROR_PATH | 系统/主/回滚文件镜像路径 | 提高可靠性,建议配置 |
MAL/ARCH/MPP_FLAG | 启用MAL(消息代理)/归档/MPP(大规模并行)标志(Y/N) | 分布式或高可用场景需开启 |
CONTROL | 控制文件副本数 | 建议≥2以提高容错 |
AUTO_OVERWRITE | 自动覆盖已有文件(Y/N) | 谨慎使用,会导致数据丢失 |
USE_NEW_HASH | 使用新哈希算法(Y/N) | 影响兼容性,默认N |
ELOG_PATH | 错误日志路径 | 需定期清理 |
AP_PORT_NUM | 辅助端口号 | 集群环境可能需要 |
HUGE_WITH_DELTA | 是否使用HUGE表Delta存储(Y/N) | 列存储表优化选项 |
RLOG_GEN_FOR_HUGE | 为HUGE表生成日志(Y/N) | 影响性能与可恢复性 |
PSEG_MGR_FLAG | 管理永久段空间(Y/N) | 默认Y,不建议修改 |
CHAR_FIX_STORAGE | CHAR类型定长存储(Y/N) | 影响存储效率 |
SQL_LOG_FORBID | 禁止SQL日志(Y/N) | 调试场景临时关闭 |
DPC_MODE | 分布式PC模式(0/1/2) | 集群环境配置 |
SYSSSSO/SYSDBO_PWD | SYSSSSO(安全管理员)/SYSDBO(运维管理员)密码 | 三权分立模式下必设 |
PRIV_FLAG | 权限标志位(十六进制) | 高级安全设置,需参考手册 |
MAIN/SYSTEM/ROLL/TEMP_DB | 主/系统/回滚/临时数据文件路径 | 建议分开存储以提高性能 |
F_PATH | ||
USE_DB_NAME | 是否使用DB_NAME作为实例名(Y/N) | 默认N,兼容性选项 |
ENABLE_MAC | 启用强制访问控制(Y/N) | 安全等保场景需开启 |
RANDOM_CRYPTO | 使用随机加密(Y/N) | 增强安全性,但可能影响性能 |
AUTO_ADJ_PARA/MEM/CPUS | 自动调整参数/内存/CPU(Y/N) | 建议首次安装时启用 |
HELP | 显示帮助信息 | 无实际参数作用 |
三、验证目录是否挂载成功
1.验证日志目录是否挂载成功:查看宿主机log目录,包含下面图片log文件。说明挂载成功
2.验证数据目录是否挂载成功:数据库连接dm成功后,运行下面sql 创建数据
3.验证数据目录是否挂载成功:运行docker stop dm8 && docker rm dm8删除容器,重新使用之前的命令运行容器
4.验证数据目录是否挂载成功:连接数据库,重新查询之前创建的表,数据存在说明数据目录挂载成功