达梦数据库的安装部署—DM8
DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,历经五年匠心打磨,推出的新一代自研数据库。
DM8吸收借鉴当前先进新技术思想与主流数据库产品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
#############################################################################
1. 收集软硬件信息(本实验是中标麒麟的环境):
查看操作系统:[root@localhost ~]# uname -ra 系统要求:Linux(glibc 2.3 以上,内核 2.6,已安装 KDE/GNOME 桌面环境,建议预先安装 UnixODBC 组件 gcc 包)
查看包glibc:[root@localhost ~]# rpm -aq|grep glibc
查看cpu:[root@localhost ~]# cat /proc/cpuinfo
查看内存:[root@localhost ~]# free -m 安装数据库建议最小内存 1G
查看磁盘:[root@localhost ~]# fdisk -l 或者 df -h 安装达梦程序,如需记录大量数据库 SQL 日志,需要扩大分区/tmp 临时目录至少 600M
查看网络:100M 以上支持 TCP/IP 协议的网卡注意:远程访问数据库的要求,需要设置防火墙和 selinux 策略
2. 规划安装路径与用户:
安装路径规划:
[root@localhost ~]# mkdir /dm8
安装用户规划:
[root@localhost ~]# groupadd dinstall
[root@localhost ~]# useradd -g dinstall dmdba
[root@localhost ~]# id dmdba
uid=1001(dmdba) gid=1001(dinstall) 组=1001(dinstall)
[root@localhost ~]# passwd dmdba
[root@localhost ~]# chown -R dmdba:dinstall /dm8
3. 设置环境变量与系统限制
配置环境变量如下图所示:
设置文件最大打开数目
方式一:[root@localhost ~]# ulimit -n 65536 ---临时的办法
方式二:[root@localhost ~]# vi /etc/security/limits.conf --添加如下的两行,永久的办法,需重启系统
dmdba soft nofile 65536
dmdba hard nofile 65536
4. 准备DM8的安装包:
如果是在虚拟机上进行实验,可以使用winscp软件导入至虚拟机,也可以使用ftp等协议,或者是lrzsz命令。
达梦数据库的版本:
开发版:不能商用
标准版:小型应用
企业版:生产环境中应用最多的一个版本,三权分立
安全版:在企业版的基础上做了安全特性,增加强访问控制,四权分立。
5. DM8的安装:
[root@localhost opt]# mount -o loop /opt/dm8_setup.iso /mnt
[root@localhost opt]# cd /mnt
[root@localhost mnt]# ll
总用量 633569
-r-xr-xr-x 1 root root 645819977 4 月 29 16:51 DMInstall.bin
-r-xr-xr-x 1 root root 2951496 4 月 29 16:04 DM_Install.pdf
-r-xr-xr-x 1 root root 848 4 月 29 16:07 release_en.txt
-r-xr-xr-x 1 root root 953 4 月 29 16:07 release_zh.txt
[root@localhost mnt]# su - dmdba
[dmdba@localhost mnt]$ export DISPLAY=192.168.1.2:0.0 ---本机的IP地址
[dmdba@localhost mnt]$ xhost +
[dmdba@localhost mnt]$ ./DMInstall.bin
注意:这里也可以直接命令行安装
[dmdba@localhost mnt]$ ./DMInstall.bin -i
至此安装完成,查看服务状态:
[dmdba@localhost bin]$ ./DmAPService status
DmAPService (pid 15381) is running.
Bin:达梦数据库命令和 lib 库
Bin2:uft8
DOC:用户手册和操作手册
Driver:驱动
Include: C 语言的头文件
Jar:jar 包(导入导出,快速加载,日志挖掘)
Log:日志文件
Jdk:java 包
Tool:客户端
Script:脚本文件
WEB:dem 类似 oracle oem
7. DM8的卸载:
1、已经存数据库实例,停止数据库,执行 uninstall.sh
2、只安装了软件,可以直接执行 uninstall.sh
脚本 uninsatll,在安装目录下。
利用命令行方式去安装数据库软件:
[dmdba@localhost mnt]$ ./DMInstall.bin -i
#############################################################################
1. 实例的创建(图形化方式):
[dmdba@localhost ~]$ cd /dm8/tool/
[dmdba@localhost tool]$ ./dbca.sh
[dmdba@localhost tool]$ dminit path=/dm8/data DB_NAME=DM02 instance_name=DM02 PORT_NUM=5239
注册实例服务到操作系统中:
[root@localhost root]# ./dm_service_installer.sh -t dmserver -dm_ini /dm8/data/DM02/dm.ini -p DM02
[root@localhost root]# systemctl start DmServiceDM02
[dmdba@localhost script]$ disql sysdba/SYSDBA@localhost:5239
3. 连接实例的方式:
方式一:
[dmdba@localhost tool]$ disql sysdba/dameng123
方式二
图形界面:
[dmdba@localhost ~]$ cd /dm8/tool/
[dmdba@localhost tool]$ manager
数据库模式:
1、普通模式(normal):用户可以正常的访问数据库,操作没有限制
2、主库模式(primary):用户可以正常访问数据库,对数据库对象的修改强制生成 redo 日志,在归档有效的时候,发送 redo 日志到备库 。
3、备库模式(standby):接收主库发送过业的 redo 日志,并重做日志, 数据库对用户只读。
数据库的状态:
1、配置状态(mount)
2、打开状态(open)
3、挂起状态(suspend)
4、关闭状态(shutdown)
状态切换:
Shutdown----mount
Shutdown ---open
Open---mount
Mount---open
disql工具:
[dmdba@localhost ~]$ disql sysdba/SYSDBA@localhost:5239
数据库管理工具:
[dmdba@localhost tool]$ ./manager
控制台工具
[dmdba@localhost tool]$ ./console
1、查看实例参数,并修改。COMPATIBLE_MODE:是否兼容其他数据库模式。0:不兼容,1:兼容 SQL92 标准,2:兼容 ORACLE,3:兼容 MS SQL SERVER,4:兼容 MYSQL
2、脱机备份还原
数据库迁移工具
[dmdba@localhost tool]$ ./dts
性能监测工具
[dmdba@localhost tool]$ ./monitor
服务查看器:
[dmdba@localhost tool]$ dmservice.sh
数据库:
在单独提到达梦数据库时,可能指的是达梦数据库产品,也有可能是正在运行的达梦数据库实例,当同时出现 达梦数据库和实例时,达梦数据库指的是磁盘上存放在达梦数据库中的数据的集合,一般包括:数据文件、日志文件、控制文件以及临时数据文件等。
实例:
实例一般是由一组正在运行的达梦后台进程/线程以及一个大型的共享内存组成。简单来说,实例就是操作 DM 数据库的一种手段,是用来访问数据库的内存结构以及后台进程的集合。通过运行达梦数据库实例,可以操作达梦数据库中的内容。在任何时候,一个实例只能与一个数据库进行关联(装载、打开或者挂起数据库)。在大多数情况下,一个数据库也只有一个实例对其进行操作。
软件层面达梦服务器的构成:
数据库+实例
数据库部分:
数据库中的文件,database:磁盘的文件
1、数据文件:存放用户的真实数据
查看数据文件的内容:select path from v$datafile;
2、控制文件:存放的是数据库的版本、启动时间、物理架构(对应的数据文件和日志文件的存放路径)等
3、重做日志文件:记录数据改变的信息
SQL> select path from v$rlogfile;
达梦没有日志组和日志成员的概念,只能说有几个重做日志文件。
重做日志的特点:循环写,重复写,比如上面有两个重做日志文件,现在第一个里面写,写满以后切换到第二个,第二个写满之后,切换到第一个覆盖掉旧信息。不支持手动日志切换,为自动。
4、配置文件:理解成各种参数文件,掌握dm.ini的使用,dm.ini是数据库的参数文件。
dm.ini可能存放在两个地方:$DM_HOME/data/DB_NAME或者是后端存储中的数据存储目录中
实例部分:
共享内存+后台的进程和线程
1、共享内存:
总容量大小:SQL> select para_name,para_value from v$dm_ini where para_name='MEMORY_TARGET';
达梦数据在启动后无操作的状态下,是很占用内存的,约300多兆。
公共池:减少系统调用。数据库启动之后,分配公共池,如果有共享内存不足,找公共池申请内存,不是去找OS申请内存。如果向系统申请内存,会产生system call(系统调用),占用系统的资源,会使得数据库变得缓慢。
这里公共池可以理解为共享内存的备用。
SQL> select para_name,para_value from v$dm_ini where para_name='MEMORY_POOL';
2、后台的进程或线程:
用户--->instance--->数据库database,用户不可以直接访问databases
概念:
表空间是达梦数据库的逻辑容器,里面可以装载表,索引,用户。
数据库的物理结构:文件系统----- 数据文件
数据库的逻辑结构:数据库---表空间(一个或者多个数据文件)---段---区---块
SYSTEM (系统表空间:存放数据字典,相当于人的大脑 )
ROLL(类似于oracle的undo,存放回滚段,MVCC(事务多版本)修改操作不阻塞读操作:PS详细点说就是用户1读取a文件,但是a文件正在被用户2修改,那么MVCC会在a文件修改前备份一份a文件,用户2修改a文件的同时不影响用户1读取a文件)
TEMP(临时数据和临时段)
MAIN(数据库默认的表空间)
HMAIN (huge表空间(列存)
如何规划表空间:
案例1:规划表空间TBS1,初始大小31M?
SQL> create tablespace tsb1 datafile '/dm8/data/DM /tbs1.dbf' size 31;
达梦数据库规定:表空间的初始文件大小是page(页)的4096倍。所以,初始大小要大于等于32M。
案例2:创建一个表空间TBS1,初始为32M,最大1G。
SQL> create tablespace tsb1 datafile '/dm8/data/DM/tbs1.dbf' size 32 autoextend on maxsize 1024;
不指定最大值默认不限制,(关注OS单个文件的最大值)
问题来了?如果初始的32M写满怎么办?表空间会去扩展,那么每次又是扩展多少呢?
每次扩展的大小为簇。SQL> select sf_get_extent_size;
很显然,每次只是扩展128K,实在是太小了。这会导致不断的去申请内存,不断的产生I/O,导致整体性能的下降。
那么怎么解决这个问题呢?如下:
案例3:创建表空间TBS2,初始32M,最大1G,每次扩展1M。
SQL> create tablespace tbs2 datafile '/dm8/data/DM/tbs2.dbf' size 32 autoextend on next 1 maxsize 1024;
案例4:创建一个表空间TBS3,有2个数据文件,初始32M,每个文件最大1G,每次扩展1M.分别存放到不同的磁盘上?
mkdir /dm8/disk{1,2}
SQL> create tablespace tbs3 datafile '/dm8/disk1/tbs3_1.dbf' size 32 autoextend on next 1 maxsize 1024,'/dm8/disk2/tbs3_2.dbf' size 32 autoextend on next 1 maxsize 1024;
有两个数据文件的话,数据存储是交替使用。
如何维护表空间:
1、表空间不足的情况:
创建大的表空间,数据导出导入
resize数据文件的大小(如果制定了maxsize,不能用resize)
增加数据库文件(推荐)
2、表空间更换存储的情况:
首先确定表空间的状态,表空间分为两种状态online和offline。
SQL> select tablespace_name,status from dba_tablespaces;
更改表空间的状态:SQL> alter tablespace tbs4 offline;
注意:system,roll,temp不能offline,达梦不能手动创建roll表空间,不能创建临时表空间。
临时表空间不足?
SQL> select para_name,para_value from v$dm_ini where para_name like 'TEMP%';
SQL> sp_set_para_value(2,'TEMP_SIZE',200);
SQL> sp_set_para_value(2,'TEMP_SPACE_LIMIT',2000);
Oracle:增加数据文件
roll表空间不足?
SQL> alter tablespace roll resize datafile '/dm8/data/DM/ROLL.DBF' to 2000;
表空间更换存储的步骤如下:
1、表空间脱机
SQL> alter tablespace tbs5 offline;
2、更换位置
SQL> alter tablespace tbs5 rename datafile '/dm8/data/DM/tbs5.dbf' to '/dm7/tbs5/tbs5.dbf';
3、表空间联机
SQL> alter tablespace tbs5 online;
Oracle:offline copy rename online
查看/dmt/data/DM目录下是否还有tbs5.dbf
roll表空间更改存储的话,需要先关闭数据库,然后将roll表空间自行拷贝到更改后的存储路径,然后更改控制文件的相关设置。
3、删除表空间的情况:
SQL> drop tablespace tsb1;
SQL> drop tablespace tbs4;(安全)