前言
因为近期,业外和几个朋友想搞点有趣的项目玩玩,既然不以盈利为主,就> 主推国产化,所以这篇记录一下,我在KylinV10安装dm8.最近真的很忙,要负责专研一下国产化工具开发的事,还要负责tb级的集群系统异构迁移,私下和朋友还搞点研究性项目随意玩玩,所以写的博客可能有所披露,希望指正。
注意
dm8试用版只有一年试用期,所以开发版建议下载日期最新的,不然最后初始化实例时,你会发现都快过期了
下载
一、安装前准备
新建 dmdba 用户
安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。
创建用户所在的组
groupadd dinstall
创建用户
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
修改用户密码
passwd dmdba
修改文件打开最大数,重启服务器后永久生效
vim /etc/security/limits.conf
在最后添加四条语句
dmdba hard nofile 65536
dmdba soft nofile 65536
dmdba hard stack 32768
dmdba soft stack 16384
先设置参数临时生效
su - dmdba
ulimit -n 65536
挂载镜像
切换到 root 用户
将dm8_20230104_x86_rh6_64.iso上传/usr/local/dm8
mount -o loop /usr/local/dm8/dm8_20230104_x86_rh6_64.iso /mnt
新建安装目录
mkdir /dm8
使用 root 用户建立文件夹,待 dmdba 用户建立完成后需将文件所有者更改为 dmdba 用户,否则无法安装到该目录下
修改安装目录权限
将新建的安装路径目录权限的用户修改为 dmdba,用户组修改为 dinstall。
chown dmdba:dinstall -R /dm8/
给安装路径下的文件设置权限 755或者777都行
chmod -R 755 /dm8
二、命令行安装
确保用户dmdba权限足的情况后
su - dmdba
cd /mnt/
./DMInstall.bin -i
按需求选择安装语言,默认为中文。本地安装选择【不输入 Key 文件】,选择【默认时区 21】。
选择【1-典型安装】,按已规划的安装目录 /dm8 完成数据库软件安装,不建议使用默认安装目录。
数据库安装大概 1~2 分钟
数据库安装完成后,需要切换至 root 用户执行上图中的命令 /dm8/script/root/root_installer.sh 创建 DmAPService,否则会影响数据库备份。
踩坑
踩坑一:请选择安装目录,输入自己的路径后,报“没有写入权限”
;
解决:
首先排查dmdba对你的路径操作权限是否充足,其他包括/tmp临时文件、挂载文件、mnt、安装文件dm8;
不足切换root则文件依次授权
chmod -R 777 /dm8
未解决,然后排查临时文件大小和安装文件dm8大小
//查看tmp大小
df -h
//重新设置临时文件tmp大小,然后重启生效
vim /etc/fstab
修改下面一行(没有的话加入这行)
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0
将/tmp文件更改为2G的空间,此操作需要重启才能生效。
安装文件大小不足,则关机,重新设置大小
踩坑二:中断安装步骤后,或者直接报tmp临时文件内存不足
解决:重新设置tmp大小
//重新设置临时文件tmp大小,然后重启生效
vim /etc/fstab
修改下面一行(没有的话加入这行)
tmpfs /tmp tmpfs nodev,nosuid,size=2G 0 0
将/tmp文件更改为2G的空间,此操作需要重启才能生效。
踩坑三:银河麒麟系统安装达梦数据库选择时区报错处理
所需空间: Error occurred during initialization of VM
//安装时区
yum install libnsl
配置环境变量
切换到 root 用户进入 dmdba 用户的根目录下,配置对应的环境变量。DM_HOME 变量和动态链接库文件的加载路径在程序安装成功后会自动导入。
编辑 .bash_profile
cd /dm8
vim .bash_profile
//加入下面代码
export PATH=$PATH:$DM_HOME/bin:$DM_HOME/tool
切换至 dmdba 用户下,执行以下命令,使环境变量生效
su - dmdba
source .bash_profile
命令行配置实例
使用 dmdba 用户配置实例,进入到 DM 数据库安装目录下的 bin 目录中,使用 dminit 命令初始化实例。dminit 命令可设置多种参数,可执行如下命令查看可配置参数。
./dminit help
需要注意的是页大小 (page_size)、簇大小 (extent_size)、大小写敏感 (case_sensitive)、字符集 (charset) 这四个参数,一旦确定无法修改,需谨慎设置。
- extent_size 指数据文件使用的簇大小,即每次分配新的段空间时连续的页数。只能是 16 页或 32 页或 64 页之一,缺省使用 16 页。
- page_size 数据文件使用的页大小,可以为 4 KB、8 KB、16 KB 或 32 KB 之一,选择的页大小越大,则 DM 支持的元组长度也越大,但同时空间利用率可能下降,缺省使用 8 KB。
- case_sensitive 标识符大小写敏感,默认值为 Y 。当大小写敏感时,小写的标识符应用双引号括起,否则被转换为大写;当大小写不敏感时,系统不自动转换标识符的大小写,在标识符比较时也不区分大小写,只能是 Y、y、N、n、1、0 之一。
- charset 字符集选项。0 代表 GB18030;1 代表 UTF-8;2 代表韩文字符集 EUC-KR;取值 0、1 或 2 之一。默认值为 0。
可以使用默认参数初始化实例,需要附加实例存放路径。此处以初始化实例到 /dm/data 目录下为例(执行初始化命令前,需要使用 root 用户授予 /dm/data 目录相应权限,可以参考修改目录权限)。
./dminit path=/dm8/data db_name=DM01 instance_name=DMSERVER01 port_num=5238 PAGE_SIZE=16 EXTENT_SIZE=16 CHARSET=1
踩坑一:
使用官文档的命令
./dminit path=/dm/data
//也可以自定义初始化实例的参数,参考如下示例:
//以下命令设置页大小为 32 KB,簇大小为 32 KB,大小写敏感,字符集为 utf_8,数据库名为 DMDB,实例名为 DBSERVER,端口为 5237。
./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y
CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5237
失败。
解决:
不使用它的,自定义初始化
./dminit path=/dm8/data db_name=DM01 instance_name=DMSERVER01 port_num=5238 PAGE_SIZE=16 EXTENT_SIZE=16 CHARSET=1
命令行注册服务
注册服务需使用 root 用户进行注册。使用 root 用户进入数据库安装目录的 /script/root 下
cd /dm8/script/root
注册服务
./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM01/dm.ini -p DMSERVER
用户可根据自己的环境更改 dm.ini 文件的路径以及服务名
./dm_service_installer.sh -h
如需为其他实例注册服务,需打开 dbca 工具,进行注册服务
cd /dm8/tool
./dbca.sh
踩坑:
开始我安装的是19年开发版,后来发现使用时间还剩10来天,果断卸载,安装最新版开发版的
命令行启停数据库
服务注册成功后,启动数据库
systemctl start DmServiceDMSERVER.service
停止数据库
systemctl stop DmServiceDMSERVER.service
重启数据库
systemctl restart DmServiceDMSERVER.service
查看数据库服务状态
systemctl status DmServiceDMSERVER.service
可前台启动,进入 DM 安装目录下的 bin 目录下
./dmserver /dm/data/DM01/dm.ini
该启动方式为前台启动,若想关闭数据库,则输入 exit 即可。
也可进入 DM 安装目录下的 bin 目录下,启动/停止/重启数据库
./DmServiceDMSERVER start/stop/restart
查看数据库状态
./DmServiceDMSERVER status
踩坑:
启动报错
Job for DmServiceDMSERVER.service failed because the control process exited with error code.See "systemctl status DmServiceDMSERVER.service" and "journalctl -xe" for details.
解决:
把dmdbms/bin目录下面的libproj.so和libxqilla.so移动到其他目录然后再启动服务