Linux环境Shell脚本无询问自动化安装达梦(DM8)数据库 转载

参考百度安全验证icon-default.png?t=N7T8https://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

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值