[TOC]
VMware安装麒麟操作系统的虚拟机
第一步:选择自定义

第二步:然后客户机操作系统选择其他,版本为其他64位

第三步:为虚拟机分配4GB内存和40GB磁盘空间。
第四步:虚拟机内安装vmware tools工具,以便主机与虚拟机间创建共享文件夹以及复制粘贴信息。
sudo yum install open-vm-tools open-vm-tools-desktop
// yum install 从互联网软件仓库搜索某软件包并安装
第五步:创建共享文件夹并挂载,把主机上的dm8安装镜像拉到虚拟机,默认是/mnt/hgfs目录下
sudo vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
// .host:/ 挂载源 /mnt/hgfs挂载点
groupadd dinstall -g 2001
useradd -G dinstall -d -m /home/dmdba -s /bin/bash -u 2001 dmdba
// -d -m为创建家目录(-m是创建,-d是指定) -s为用户配一个命令行解释器
passwd dmdba
在 Linux、Solaris、AIX 和 HP-UNIX 等系统中,操作系统默认会对达梦数据库进程使用资源进行限制。如果不取消对应的限制,则数据库的性能将会受到影响。
root用户打开/etc/security/limits.conf文件,进行修改
vi /etc/security/limits.conf
在尾部加入下面配置:
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 65536
dmdba hard nproc 65536
dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba 针对这个用户的资源调度进行配置,完成后dmdba用户下创建的所有进程都是这样。
soft为警告阈值,hard为硬性上限。
nice(CPU调度优先级):允许进程使用的CPU调度优先级(范围-20到19,最优先到最不优先),设为0表示这个进程既不需要让着别人,也不需要被让。
as(地址空间)设为 unlimited:允许进程使用无限量的虚拟内存。
fsize(文件大小)设为 unlimited:允许创建无限大的单个数据文件(如日志文件、表空间文件)。
nproc(进程数)设为 65536:允许dmdba用户可以同时开启65535个进程,满足数据库多并发连接等需求。
nofile(打开文件数)设为 65536:允许dmdba用户可以同时开启65535个文件。
core(核心转储)设为 unlimited:当数据库崩溃时,允许生成完整的 core dump 内存镜像文件,便于开发人员定位故障原因。core dump 是操作系统在进程异常崩溃时,将进程当时的内存映像(堆、栈、寄存器状态、程序计数器等)全部转储到一个文件中的机制。
data(数据段)设为 unlimited:允许进程的数据段(堆、全局变量等)无限增长。
达梦数据库管理系统安装在 /home/dmdba 文件夹下,
除此之外还有
实例存放目录:含控制文件(dm.ctl)、日志文件(xxx.log)、数据文件(xxx.DBF)。
归档存放目录:数据库开启归档模式后,写满的日志文件(xxx.log)会被复制到这里。
备份存放目录:存放各类本分文件。
mkdir -p /dmdata/data
mkdir -p /dmdata/arch
mkdir -p /dmdata/dmbak
chown -R dmdba:dinstall /dmdata/data
chown -R dmdba:dinstall /dmdata/arch
chown -R dmdba:dinstall /dmdata/dmbak
chmod -R 755 /dmdata/data
chmod -R 755 /dmdata/arch
chmod -R 755 /dmdata/dmbak
mount -o loop xxxxxxxxx.iso /mnt
[!NOTE]
为什么Linux总是需要挂载(mount),甚至DM8的ISO镜像文件也需要先挂载再安装?
存储的硬件(磁盘,U盘,光盘),这些接入linux后,操作系统是能够识别的。
挂载我觉得就是从 操作系统层面---->文件系统层面 ,是把硬件设备(或文件)接入到操作系统的统一目录树中,让操作系统能通过文件系统来访问它。
.iso文件算是光盘,linux把它当硬件来处理了。
切换到dmdba账户下进行安装
su dmdba
./DMInstall.bin -i
遇到如下问题大致意思:临时目录空间不足2GB,需要创建一个临时文件夹并指定为DM_INSTALL_TMPDIR环境变量,用于临时存放安装文件

su root
mkdir -p /temp_dm
chown -R dmdba:dinstall /temp_dm
chmod -R 755 /temp_dm
export DM_INSTALL_TMPDIR=/temp_dm
echo $DM_INSTALL_TMPDIR
su dmdba
没有key,选择n
设置时区,选择y,选择21中国标准时间
安装类型,选择1,典型安装
确认安装目录
确认安装

安装完成,切成root用户执行/home/dmdba/dmdbms/script/root/root_installer.sh,执行的结果是:
1.创建一个名为 DmAPService 的后台服务。DmApService是一个守护进程,负责执行一些备份还原等辅助功能。
2.生成了一个 dm_svc.conf 文件,并将其移动到 /etc 目录下,供所有客户端工具使用。意思大概是达梦数据库是一个服务器,客户端工具(disql、JDBC)需要对达梦数据库实例发SQL拿查询结果,dm_svc.conf告诉客户端工具去哪里找达梦数据库实例。
//猜想dm_svc.conf大概是这样
DMSERVER = (192.168.1.100:5236)
DMBACKUP = (192.168.1.101:5236, 192.168.1.102:5236) //集群
//实际dm_svc.conf内容
TIME_ZONE=(480)
LANGUAGE=(CN)
//以前要写完整地址
String url = "jdbc:dm://192.168.1.100:5236";
Connection conn = DriverManager.getConnection(url, "SYSDBA", "SYSDBA");
//现在只要写服务名,会自动去/etc/dm_svc.conf里找这个服务名对应的地址
String url = "jdbc:dm://DMSERVER";
Connection conn = DriverManager.getConnection(url, "SYSDBA", "SYSDBA");
[!NOTE]
为什么需要配置实例?
DM8是一套数据库管理系统,本身是一个软件框架,具备处理数据的能力,但没有实际的数据存储空间。
数据库实例(DMSERVER),本质是内存结构(维护了一个内存缓冲区)和后台线程的集合(一个进程,一个数据库实例对应一个操作系统进程),运行在内存上,也是客户端工具要连接的对象。 客户端工具直接把SQL命令发给这个正在运行的实例,由这个实例来去访问数据库处理数据并返回结果。而DM8软件本身体现为一个平台,默默支撑着这个实例的运行。
su - dmdba
cd /home/dmdba/dmdbms/bin
使用 dminit 命令初始化实例,dminit 命令可设置多种参数,可执行如下命令查看可配置参数
./dminit help
如果需要附加实例存放路径。此处以初始化实例到 /dmdata/data 目录下为例,初始化命令如下:
./dminit path=/dmdata/data DB_NAME=DMTEST INSTANCE_NAME=DBSERVER PORT_NUM=5237 SYSDBA_PWD=123ABCabc SYSAUDITOR_PWD=123ABCabc PAGE_SIZE=32 EXTENT_SIZE=32 CASE_SENSITIVE=y CHARSET=1
//端口默认是5236
//启动disql时默认是5236,如果是5237就会连不上
path:实例的数据文件存放目录
PAGE_SIZE:页大小为32KB
EXTENT_SIZE:簇大小为32页
CASE_SENSITIVE:大小写敏感
CHARSET:字符集
DB_NAME:数据库名字
INSTANCE_NAME:实例名字
PORT_NUM:监听端口号
SYSDBA_PWD:数据库管理员密码
SYSAUDITOR_PWD:数据库审计员密码
大部分参数初始化实例之后就无法更改了。

dm.ctl控制文件:记录数据库的物理结构信息,数据库启动时必须首先读取这个文件,才知道去哪里找数据。
dm.ini配置文件:数据库实例的核心参数文件,记录了所有可调优的配置,如内存大小、日志缓冲区、最大连接数等。
dm_service.prikey:密匙。
SYSTEM.DBF系统表空间数据文件:存储数据库的元数据,包括数据字典、系统表、视图定义、存储过程等。
MAIN.DBF主表空间数据文件:默认的用户数据存储空间。
ROLL.DBF回滚表空间数据文件:存储事务的回滚记录,用于支持事务回滚和 MVCC
DMTESTxx.log:两个日志文件,记录数据库所有修改操作的日志,用于崩溃恢复。采用循环写入方式,写满后切换到下一个日志文件。
[!NOTE]
为什么要注册服务?注册前注册后有什么区别?
注册服务是为了让数据库实例能够开机自启并接受操作系统的统一管理,而不是每次都要手动敲命令去启动。
//注册前,启动命令(前台启动方式,关掉终端即终止服务) /home/dmdba/dmdbms/bin/dmserver /dmdata/data/DMTEST/dm.ini //注册后,启动命令(systemctl start 命令需要root身份,dmdba没权限) systemctl start DmServiceDMTEST //启动命令(dmdba有权限执行这个) 切换到数据库管理系统的到bin目录下 ./DmServiceDMTEST start 注册前重启需要手动开启数据库实例,注册后设置systemctl enable后自动启动 注册前停止数据库实例进程用kill,注册后可以用systemctl stop DmServiceDMTEST
注册服务脚本为 dm_service_installer.sh,用户可以使用注册服务脚本将服务脚本注册成为操作系统服务。注册服务需使用 root 用户进行注册:
su root
cd /home/dmdba/dmdbms/script/root/
./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DMTEST/dm.ini -p DMTEST
-t 是服务类型:dmap、dmamon、dmserver、dmwatcher、dmmonitor、dmasmsvr、dmasmsvrm、dmcss、dmcssm
-dm_ini:指定服务所需要的 dm.ini 文件路径
-p:指定服务名后缀,生成的操作系统服务名为“服务脚本模板名称 + 服务名后缀”。
cd /home/dmdba/dmdbms/bin
ls
进入数据安装目录下 bin 目录中可以看到已经注册好的服务 DmServiceDMTEST
服务注册成功后,启动数据库。
使用 dmdba 用户进入 DM 安装目录下的 bin 目录下,启动数据库,如下所示
cd /home/dmdba/dmdbms/bin
启动
./DmServiceDMTEST start
停止
./DmServiceDMTEST stop
重启
./DmServiceDMTEST restart
查看状态
./DmServiceDMTEST status
也可以这样(去dm8的bin目录下,./dmserver )
前台启动方式。这种方式下,数据库进程是依附于当前终端窗口的
cd /home/dmdba/dmdbms/bin
./dmserver /dmdata/data/DMTEST/dm.ini
systemctl enable DmServiceDMTEST 设置开机自启
1.对数据库实例这个概念有了更深入的理解,JDBC这些客户端工具就是根据 数据库实例的名字(DMSERVER) 和 dm_svc.conf 文件(可以根据数据库实例名字找到对应的ip和端口) 来给数据库实例发SQL和拿查询结果。
2.达梦数据库实例本质是内存结构(维护了一个内存缓冲区)和后台线程的集合(一个进程,一个数据库实例对应一个操作系统进程),运行在内存上。
3.对linux操作系统的系统服务有了更深的理解,应用的服务可以注册成系统的服务(DmServiceDMTEST),通过systemctl(全称是system control)关键字进行访问控制。
4.搞清楚了dm_svc.conf文件、dm.ini等文件的作用。
文章
阅读量
获赞
