参考百度安全验证https://baijiahao.baidu.com/s?id=1744758744882243442&wfr=spider&for=pc
蛰伏30年的国产数据库终迎黄金时代,受行业用户青睐的竟是…|达梦|mysql|tdsql|oracle_网易订阅
最近由于项目原因,让我一个java程序员去写shell脚本,这我哪会啊。只能网上去东拼西凑去了。结果找了一圈下来,没一个合适的,没办法,只能发挥我“组装”的能力了。话不多说,下面直接进入正题。
如题所示啊,Linux环境Shell脚本无询问自动化安装达梦(DM8)数据库,首先那肯定就是shell脚本了,这块没办法,需要啥命令只能自行查找了,不过网上还是会有一些大致的格式的,足够用了。
紧接着就是达梦数据库了,众所周知,达梦数据库,国产化的骄傲了。现在项目国产化趋势日益升高,相信不久,各位同学都会接触到的,那么问题来了,既然要安装达梦数据库,得先下载达梦数据库,地址在这了,懒得百度的同学直接传送吧:https://www.dameng.com/ucenter/docs.html
哦对了,你得用手机号短信验证码登录一下
达梦数据库都有哪些安装方式呢?达梦官方提供了一个pdf文档,就在你下载的达梦包里面,不过前提你得把他“弄出来”。张这个样子
这里面就包含了达梦数据库的安装方式,两大类:
一、windows环境(自己看)
二、linux环境
linux下面就有三种安装方式:
1.图形化安装
2.命令行安装
3.静默安装
图形化安装显然不能够满足自动化,命令行安装又有很多烦人的询问,所以,答案就是静默安装,官方给出的解释是:在某些特殊应用场景,用户可能需要非交互式的、通过配置文件进行 DM 的安装,这种情况我们可以采用以下静默安装的方式。
这多明显,这不就是版本答案了么。接下来就是怎么写出一个shell脚本,然后采用静默安装的方式,执行命令一敲,看着不就完了么。多得劲!!!
废话不多说,直接上源码,文件名自己定义(XXX.sh):
#创建配置文件
filePath="/usr/local/dm/auto_install.xml"
if [ ! -f "$filePath" ];then
touch $filePath
echo "配置文件创建完成,覆盖写入"
else
echo "配置文件已经存在"
fi
#插入内容--覆盖
cat >"$filePath"<< EOF
<?xml version='1.0'?>
<DATABASE>
<!--安装数据库的语言配置,安装中文版配置 ZH,英文版配置 EN,不区分大小写。不允许为空。-->
<LANGUAGE>zh</LANGUAGE>
<!--安装程序的时区配置,默认值为+08:00,范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!-- key 文件路径 -->
<KEY></KEY>
<!--安装程序组件类型,取值 0、1、2,0 表示安装全部,1 表示安装服务器,2 表示安装客户端。默认为 0。 -->
<INSTALL_TYPE>0</INSTALL_TYPE>
<!--安装路径,不允许为空。 -->
<INSTALL_PATH>/home/dmdba/dmdbms</INSTALL_PATH>
<!--是否初始化库,取值 Y/N、y/n,不允许为空。 -->
<INIT_DB>Y</INIT_DB>
<!--数据库实例参数 -->
<DB_PARAMS>
<!--初始数据库存放的路径,不允许为空 -->
<PATH>/home/dmdba/dmdbms/data</PATH>
<!--初始化数据库名字,默认是 DAMENG,不超过 128 个字符 -->
<DB_NAME>DAMENG</DB_NAME>
<!--初始化数据库实例名字,默认是 DMSERVER,不超过 128 个字符 -->
<INSTANCE_NAME>DMSERVER</INSTANCE_NAME>
<!--初始化时设置 dm.ini 中的 PORT_NUM,默认 5236,取值范围:1024~65534 -->
<PORT_NUM>5236</PORT_NUM>
<!--初始数据库控制文件的路径,文件路径长度最大为 256 -->
<CTL_PATH></CTL_PATH>
<!--初始数据库日志文件的路径,文件路径长度最大为 256 -->
<LOG_PATHS>
<LOG_PATH></LOG_PATH>
</LOG_PATHS>
<!--数据文件使用的簇大小,只能是 16 页或 32 页之一,缺省使用 16 页 -->
<EXTENT_SIZE>16</EXTENT_SIZE>
<!--数据文件使用的页大小,缺省使用 8K,只能是 4K、8K、16K 或 32K 之一 -->
<PAGE_SIZE>8</PAGE_SIZE>
<!--日志文件使用的簇大小,默认是 256,取值范围 64 和 2048 之间的整数 -->
<LOG_SIZE>256</LOG_SIZE>
<!--标识符大小写敏感,默认值为 Y。只能是’Y’, ’y’, ’N’, ’n’, ’1’, ’0’之一 -->
<CASE_SENSITIVE>Y</CASE_SENSITIVE>
<!--字符集选项,默认值为 0。0 代表 GB18030,1 代表 UTF-8,2 代表韩文字符集 EUC-KR -->
<CHARSET>0</CHARSET>
<!--设置为 1 时,所有 VARCHAR 类型对象的长度以字符为单位,否则以字节为单位。默认值为 0。 -->
<LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
<!--字符类型在计算 HASH 值时所采用的 HASH 算法类别。0:原始 HASH 算法;1:改进的HASH 算法。默认值为 1。 -->
<USE_NEW_HASH>1</USE_NEW_HASH>
<!--初始化时设置 SYSDBA 的密码,默认为 SYSDBA,长度在 9 到 48 个字符之间 -->
<SYSDBA_PWD></SYSDBA_PWD>
<!--初始化时设置 SYSAUDITOR 的密码,默认为 SYSAUDITOR,长度在 9 到 48 个字符之间 -->
<SYSAUDITOR_PWD></SYSAUDITOR_PWD>
<!--初始化时设置 SYSSSO 的密码,默认为 SYSSSO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSSSO_PWD></SYSSSO_PWD>
<!--初始化时设置 SYSDBO 的密码,默认为 SYSDBO,长度在 9 到 48 个字符之间,仅在安全版本下可见和可设置 -->
<SYSDBO_PWD></SYSDBO_PWD>
<!--初始化时区,默认是东八区。格式为:正负号小时:分钟,范围:-12:59 ~ +14:00 -->
<TIME_ZONE>+08:00</TIME_ZONE>
<!--是否启用页面内容校验,0:不启用;1:简单校验;2:严格校验(使用 CRC16 算法生成校验码)。默认 0 -->
<PAGE_CHECK>0</PAGE_CHECK>
<!--设置默认加密算法,不超过 128 个字符 -->
<EXTERNAL_CIPHER_NAME></EXTERNAL_CIPHER_NAME>
<!--设置默认 HASH 算法,不超过 128 个字符 -->
<EXTERNAL_HASH_NAME></EXTERNAL_HASH_NAME>
<!--设置根密钥加密引擎,不超过 128 个字符 -->
<EXTERNAL_CRYPTO_NAME></EXTERNAL_CRYPTO_NAME>
<!--全库加密密钥使用的算法名。算法可以是 DM 内部支持的加密算法,或者是第三方的加密算法。默认使用'AES256_ECB'算法加密,最长为 128 个字节 -->
<ENCRYPT_NAME></ENCRYPT_NAME>
<!--指定日志文件是否加密。默认值 N。取值 Y/N,y/n,1/0 -->
<RLOG_ENC_FLAG>N</RLOG_ENC_FLAG>
<!--用于加密服务器根密钥,最长为 48 个字节 -->
<USBKEY_PIN></USBKEY_PIN>
<!--设置空格填充模式,取值 0 或 1,默认为 0 -->
<BLANK_PAD_MODE>0</BLANK_PAD_MODE>
<!--指定 system.dbf 文件的镜像路径,默认为空 --> <SYSTEM_MIRROR_PATH></SYSTEM_MIRROR_PATH>
<!--指定 main.dbf 文件的镜像路径,默认为空 -->
<MAIN_MIRROR_PATH></MAIN_MIRROR_PATH>
<!--指定 roll.dbf 文件的镜像路径,默认为空 -->
<ROLL_MIRROR_PATH></ROLL_MIRROR_PATH>
<!--是否是四权分立,默认值为 0(不使用)。仅在安全版本下可见和可设置。只能是 0 或 1 -->
<PRIV_FLAG>0</PRIV_FLAG>
<!--指定初始化过程中生成的日志文件所在路径。合法的路径,文件路径长度最大为 257(含结束符),不包括文件名-->
<ELOG_PATH></ELOG_PATH>
</DB_PARAMS>
<!--是否创建数据库实例的服务,值 Y/N y/n,不允许为空,不初始化数据库将忽略此节点。非 root 用户不能创建数据库服务。 -->
<CREATE_DB_SERVICE>n</CREATE_DB_SERVICE>
<!--是否启动数据库,值 Y/N y/n,不允许为空,不创建数据库服务将忽略此节点。 -->
<STARTUP_DB_SERVICE>y</STARTUP_DB_SERVICE>
</DATABASE>
EOF
#创建组和用户
name=SYSDBA
passwd=SYSDBA
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash $name
echo "$passwd" | passwd --stdin $name &> /dev/null
echo "用户$name创建完成,默认密码是:$passwd"
#把DMInstall.bin文件拿出来都放在opt下并授权
mkdir -p /mnt/cdrom
installPath="/home/dmdba/dmdbms"
#判断文件夹是否存在
if [ ! -d "$installPath" ];then
mkdir -p /home/dmdba/dmdbms
echo "安装文件夹创建完成"
else
echo "安装文件夹已经存在,删除文件重新创建"
rm -rf /home/dmdba/dmdbms/*
fi
#创建/mnt/cdrom/的目录作为挂载点
mount /usr/local/dm/dm8/dm8_20210712_x86_rh6_64_ent_8.1.2.38_pack1.iso /mnt/cdrom/
#复制安装启动文件
cp /mnt/cdrom/DMInstall.bin .
#指定组权限,少指定一层文件夹dmdbms,方便.bash_profile环境变量写入
chown -R $name:dinstall /home/dmdba
chown -R $name:dinstall DMInstall.bin
#切换用户并安装(静默安装,选定生成好的xml配置文件)
su SYSDBA -c './DMInstall.bin -q /usr/local/dm/auto_install.xml'
#切换到root用户,开始初始化数据库,创建DmAPService服务
su root -c "/home/dmdba/dmdbms/script/root/root_installer.sh"
#延迟取消挂载点,等到设备不再繁忙时才清理所有相关资源,结束安装
umount -vl /mnt/cdrom
简单介绍一下吧,
第一部分就是shell脚本自动生成一个达梦数据库静默安装所需要的配置文件
第二部分就是创建用户和用户组,“网上说”最好不要用root来进行这些操作,那咱们就听“网上”说的
第三部分是创建安装路径,没啥可说的
第四部分就是把你们下载下来的安装包“挂载”到指定的文件夹用来执行安装,可能是因为iso文件的原因需要挂载吧,我也不是很懂,能执行的代码不就是好代码么!哈哈
第五部分就是给新创建的用户分配执行权限,意思自己百度吧,我就是粘贴过来的,怕描述的不清楚误导了你们
第六部分就是重头戏了,切换用户执行安装,-c的意思就是切换用户之后紧接着执行单条命令,是单条命令啊,如果是执行多条,命令可不是这个
第七部分切换回root用户,为啥要这么做呢,因为达梦数据库安装完成之后,需要切换回root用户执行下面这个初始化数据库命令,这是达梦自带的,只需要替换红色部分的文件路径就行
/home/dmdba/dmdbms/script/root/root_installer.sh
第八部分就是删除挂载点,这句话可有可无吧,算是我作为程序猿为代码洁癖做的最后一点点倔强吧。
其他的需求就留给各位自由发挥补充吧。可以当成一个简易模板看待。
码字不已,各位看官理性看待哈。。。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Dcj695632854/article/details/120985479