文章目录

  • 前言
  • 一、docker的安装
  • 二、新建带有端口映射的容器,并将端口开通好
  • 1.新建容器
  • 2.打通端口
  • 三、安装达梦数据库
  • 1.安装前准备
  • 2.进行安装
  • 四、安装实例
  • 五、启动服务
  • 六、测试连通
  • 总结



前言

最近公司要求对老项目进行维护,需要安装达梦数据库,我采用了centos7.8的docker进行安装,这里做个记录。


一、docker的安装

查看当前centos系统内核版本,高于3.10才能安装docker

#uname -r

docker compose 安装 gitea mysql docker compose 安装达梦_centos


下载和安装docker

#yum -y install docker安装完成后,查看docker版本

#docker version

docker compose 安装 gitea mysql docker compose 安装达梦_后端_02


启动docker服务

#systemctl start docker

设置docker开机启动
#systemctl enable docker

查看docker运行状态
#systemctl status docker

二、新建带有端口映射的容器,并将端口开通好

1.新建容器

下载一个centos7.8的镜像
#docker pull centos:7.8.2003

查看docker目前所有的镜像,记住centos7.8镜像的id开头为afb6,后面会用到

#docker images

docker compose 安装 gitea mysql docker compose 安装达梦_数据库_03


新建容器dm_container,并附带端口映射(主机的55236端口映射到容器的5236端口),并赋予容器systemctl权限(避免无法设置防火墙),这里使用id为afb6的镜像

#docker run -tid -p 55236:5236 -p 55237:5237 --privileged --name dm_container afb6 /usr/sbin/init


2.打通端口

如果要外部能直接访问容器中的数据库,必须先打通端口,不然最后安装完了数据库也是白搭=。=
达梦的数据库默认端口为5236,主机中设置55236,映射到容器中的5236端口



首先开通主机的55236端口
#firewall-cmd --permanent --zone=public --add-port=55236/tcp

重启防火墙,使开启的端口生效
#firewall-cmd --reload

查看55236端口是否已开通
#firewall-cmd --zone=public --query-port=55236/tcp

进入容器
#docker exec -it dm_container bash

给容器安装防火墙
#yum install firewalld

启动防火墙
#systemctl start firewalld

开通容器的5236端口
#firewall-cmd --permanent --zone=public --add-port=5236/tcp

重启防火墙
#firewall-cmd --reload

查看5236端口是否已开通
#firewall-cmd --zone=public --query-port=5236/tcp

设置防火墙开机自启动
#systemctl enable firewalld

查看防火墙状态

#systemctl status firewalld

docker compose 安装 gitea mysql docker compose 安装达梦_docker_04


三、安装达梦数据库

我使用的是达梦的DM8开发版(Linux-rh7-64位),可以在官网下载。
官网下载的为iso文件,我是采取直接解压出bin文件进行安装的。
达梦数据库建议新建账户进行安装,由于我在docker中安装,这里直接采用root账户安装。



1.安装前准备

在官网下载iso文件,并解压,得到DMInstall.bin文件,将其传输到centos主机中(位置/root/DMInstall.bin)

在主机中输入下列命令,将/root/DMInstall.bin文件复制到容器根目录
#docker cp /root/DMInstall.bin dm_container:/root/DMInstall.bin

查看.data seg size、file size、open files、virtual memory大小足够即可(1048576或unlimited肯定没问题,可参考达梦安装手册)
#ulimit -a

查看内存使用
#free

在我安装过程中出现了/tmp文件夹空间不足的问题(提示“无法写入”),所以这里提前将/tmp的空间扩充

先查看扩充之前的容量
#df -h /tmp

再进行扩充
#umount /tmp
#mount -t tmpfs -o size=2147483648,mode=1777 overflow /tmp

再次查看/tmp的容量,已变为2G
#df -h /tmp

2.进行安装

在DMInstall.bin所在的目录下,先对安装文件赋予权限,否则无法执行安装
#chmod 755 ./DMInstall.bin

执行安装,这里我采用的是命令行安装(注意/前面有个点)
#./DMInstall.bin -i

key、安装路径等可以按自己需要进行输入,这里我采取
key选择n,选择时区21中国标准时间,安装选择1典型安装,目录直接默认安装路径(root用户为/opt/dmdbms)

安装过程中如果出现
Error occurred during initialization of VM
Unable to load native library: libnsl.so.1: cannot open shared object file: No such file or directory
的报错,就需要执行下面命令,安装libnsl库
#yum install libnsl*

全部选择好后并进行安装后,会提示安装成功。

四、安装实例

进入达梦数据库安装目录bin文件夹
#cd /opt/dmdbms/bin

查看初始化各参数中文说明
#./dminit help

执行./dminit(不带参数执行这个命令,系统会引导填写参数)

#./dminit

docker compose 安装 gitea mysql docker compose 安装达梦_docker_05


这里注意安装目录、日志目录都建议写成跟达梦数据库安装目录一致(如/opt/dmdbms),否则会报错,笔者就是这里卡了半天。

其他各参数根据自己需要填写,如果是oracle迁移到达梦,string case sensitive可以选择YES。

五、启动服务

进入达梦安装目录的script/root文件夹
#cd /opt/dmdbms/script/root

注册服务
#./dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/test/dm.ini -p DMSERVER

启动服务
#systemctl start DmServiceDMSERVER

进入bin目录
#cd /opt/dmdbms/bin

使用达梦客户端disql连接数据库(达梦数据库用户SYSDBA的默认密码也是SYSDBA)
#./disql SYSDBA/SYSDBA@localhost:5236

六、测试连通

windows测试端口连通,在cmd中输入命令(x为ip号)
telnet x.x.x.x 55236

达梦有windows端的客户端manager.exe可以使用,在windows安装包的tool文件夹中可以找到,填写ip、端口、用户名、密码就可以进行连接

docker compose 安装 gitea mysql docker compose 安装达梦_docker_06



总结

至此完成了达梦数据库在docker中的安装和连接,过程中踩了不少坑,希望有需要的朋友可以少走一点弯路。