0 行业状况
关系型数据库
国外数据库
- Oracle:最新版本19C,私有软件,占有54.6% 市场份额
- MySQL:最新版本8.0,开源软件,使用最多的是版本5.6、5.7占有30%左右份额。互联网行业很多使用MySQL,阿里云核心代码使用MySQL;腾讯云TDSQL
- PostgreSQL:最新版本为11,学术氛围比较强。
- MS SQL Server:最新版本2017,私有软件,政府部门多使用2008。
国内数据库
- 金仓:基于PostgreSQL
- 达梦:自主代码
- 南大:MySQL sec edition, PostgreSQL, Infomix
- 阿里:oceabase支付宝、蚂蚁金服,polar db,xdb天猫等
- 神通
非关系型数据库
- Hbase:分布式列存储数据库,来源于Hadoop,HDFS、MapReduce、big table。适合做分析运算。不能完全解决大字段问题。
- MangoDB :文档性数据库。定位于工业物联网.
- redis:key-value 内存数据库,缓存加速。
- HANA:内存数据库,spa,农夫山泉、苏宁应用。
- 巨杉:上海,文档型,分布式,参考MangoDB写的。
- 易鲸捷:分布式,贵州银行。
- TiDB:PingCAP,100%兼容MySQL。定位于证券、银行,但不能完全保证需求。
- 高思:华为,PostgreSQL MPP
一款数据库不能完全满足所有需求。
1 安装
1.1 收集软硬件信息
1.1.1 硬件
-
CPU
Linux下使用
cat /proc/cpuinfo
查看CPU架构,区分x86、ARM、Power、MIPS等。国产芯片有龙芯、飞腾(arm)、申威、海光、鲲鹏(arm),与国外产品差距主要在制造工艺方面。 -
内存
主要关注剩余内存、内存使用率、交换空间等。
cat /proc/vm/overcommit_ratio cat /proc/vm/overcommit_memery # Out of Memery(出现此问题要看内核日志,/var/log,w wtmp) sysctl -p kernel.msgmnb kernel.msgmax kernel.shmmax kernel.shmall
-
存储
使用 fdisk -l、parted、df等命令查看硬盘分区情况。可分为以下类型:- lvm (physical volume – pv,virtual group – vg,logical volume – lv)
- raid(0, 1, 5, 6等级别,华为推荐使用raid 6,教员推荐使用raid 10)
-
网络
/etc/udev/rules.d/70-net.rules
# 探测mac-ip
arping
# 查看防火墙状态
iptables -L
# SeLinux
getenforce
1.1.2 软件信息
发行版信息可以用 cat /etc/issue、uname -r等命令查看。
同时要求glibc > 2.6, 可以使用rpm -qa|grep glibc
查看。
1.2 准备安装软件
可以从达梦官网下载开发版,此版本并发数有限制;销售版本与销售代表联系。
1.3 规划安装环境
1.3.1 数据库软件
一般与OS在同一存储。
1.3.2 数据文件
一般使用单独存储。
# 本例中创建 /dm,用来存储数据程序和数据文件
[root@dca dmdba]# mkdir /dm
1.3.3 规划OS用户。
一般情况不要使用管理员权限。
# 示例,创建 dinstall 组
$ groupadd dinstall
# 显示组
$ cat /etc/group
# 创建用户 dmdba,之后主要使用此用户进行安装、维护
$ useradd -g dinstall dmdba
# 查看现有用户
$ cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F":" '{ print $1"|"$3"|"$4 }'|more
# 查看用户ID和组信息
$ id dmdba
1.3.5 文件系统权限分配
# 给用户dmdba 读取/dm7的权限
chown dmdba.dinstall -R /dm7
1.3.6 配置环境变量
vi /home/dba/.bash_profile
export DM_HOME=
export PATH=$DM_HOME/bin:.......
# 使环境变量生效
. .bash_profile
# or
source .hash_profile
1.3.7 改善性能(Linux only)
# 查看当前系统限制
ulimit -a
# 临时修改文件打开数限制。ulimit 作为对资源使用限制的一种工作,其作用范围是当前 shell 进程以及其派生的子进程。
ulimit -n 65536
# 永久修改
# 修改 /etc/security/limits,添加以下内容
soft nofile 65536
hard nofile 65536
1.4 安装软件
- GUI
略
- CLI
# 挂载达梦7安装镜像
mount -o loop dm7_setup_rh6_ent.iso /mnt/dm/
# 配置环境变量
vim /home/dmdba/.bash_profile
export DM_HOME=/dm7
export PATH=$DM_HOME/bin:$PATH:$HOME/bin
# 使环境变量生效
source .bash_profile
# 或者
. .bash_profile
# 运行DMInstall.bin
./DMInstall.bin
-
回退方案
- Windows:利用自带的卸载程序卸载后,再删除达梦相关的服务
- Linux:删除安装目录、系统服务和环境变量
2 创建数据库
-
GUI
数据库配置助手 dbca.sh -
CLI
达梦数据库是通过端口来区分每个数据库实例的。
sudo /dm7/bin/dminit path=/dm7/data port_name=5239 db_name=TEST instance_name=DM # path=数据文件存放位置 # port_num端口号 # db_name=数据库名 # instance_name=实例名 # 注册数据库到OS sudo /dm7/script/root/dm_service_installer.sh -t dmserver -i /dm7/data/TEST/dm.ini -p DM
-- 查看版本信息 select * from v$version; -- 查看授权信息 select * from v$license; -- 视图 desc v$license;
3 管理实例
数据库的打开和关闭。
3.1 查看状态
select name,status$ from v$database;
-- 4 - open, 3 - mount, 1 - start, 6 - shutdown
select status$ from v$instance;
3.2 状态转换
- shut --> mount
cd /dm7/bin
./dmserver /dm7data/DAMeng/dm.ini mount
- mount --> open
alter database open;
- open --> mount
alter database mount;
集群中还有两个状态,primary,standby
非集群normal,
3.3 状态切换
3.3.1 shut --> mount
-- 分配共享内存,启动后台进程或线程
-- 根据 DM.ini配置,打开控制文件
3.3.2 mount --> open
-- 根据控制文件,打开所有的数据文件和重做日志文件
3.4 打开方式
-
前台启动(dmserver)
用作调试,生产环境下不推荐。
cd /home/dmdba/dmdbms/bin
./dmserver /home/dmdba/dmdbms/data/DAMENG/dm.ini
-
后台启动
-
利用达梦服务查看器
-
利用注册到OS的脚本
# 查看服务名 chkconfig --list |grep DmServiceInstanceName # DmServiceInstanceName 命名规范:DmService + 实例名 # rhel6: /etc/rc.d/init.d/ # rhel7: $DM_HOME/bin/DmService... start /lib/systemd/system/
-
不能使用kill,killall结束进程。
4 体系结构
DM服务器构成: C/S
4.1 服务器
数据库正确工作需要的文件
4.1.1 数据文件
用以存放真实数据
-- 查询数据文件存放位置
SQL> select path from v$datafile;
4.1.2 重做日志文件
记录改变的数据信息。特点是循环写、重复写。
-- 查询日志文件存放位置
SQL> select path from v$rlogfile;
-- 查询日志文件大小
SQL> select path,rlog_size from v$rlogfile;
-- 改变log文件大小,默认单位为M。日志文件大小要一致,否则会有性能问题
SQL> alter database resize logfile 'file_path' to 500;
-- 增加日志文件,大小为500M。一般生产环境需要3-5个日志文件。
SQL> alter database add logfile 'file_path' size 500;
-- 查询log相关的视图或者字典
SQL> select name from sysobject where name like '%LOG%';
4.1.4 控制文件
存储架构信息、数据库版本、创建时间等,无法重建
select para_name,para_value from v$dm_ini where para_name ='CTL_PATH'
select para_name,para_value from v$dm_ini where para_name like 'CTL_%'
4.1.5 配置文件
dm.ini,存储配置参数信息。在disql中使用sp_set_para_value设置。
SQL> v$dm_ini
SQL> v$parameter
-- 查询判断参数类型
SQL> select para_name,para_value,para_type from v$dm_ini where para_name='CTL_BAK_NUM';
-- sys,session 动态参数,可同时修改ini文件和内存
-- IN FILE 静态参数,只能改参数文件,重启数据库生效
-- READ ONLY 数据库运行不能修改。
-- 设置参数
SQL> sp_set_para_value(RANGE,'para_NAME',PARA_NUM)
SQL> sp_set_para_value(1,'CTL_BAK_NUM',5)
/*
RANGE,范围。1:内存和配置文件,2&#