DM8一键安装脚本

简介: DM8一键安装脚本

一、环境准备

database OS
DM Database Server 64 V8 CentOS Linux release 7.7.1908 (Core)

二、安装包和脚本准备

  1. 链接: https://pan.baidu.com/s/1a-Yy6mUv-18xdN_v8BIoxw
  2. 提取码: eshp

将下载的安装包和脚本放至服务器任意位置,赋予X权限,执行脚本,按提示输入安装目录和自定义端口即可。

  1. [root@mydm ~]#sh -x dm8_single_install.sh

三、脚本分享

  1. #! /bin/bash
  2. echo -e "\n\n****** 开始安装DM8******\n\n"
  3. # 创建DM数据库镜像目录和安装目录
  4. mkdir -p /dm8_setup/iso
  5. mkdir p /dm
  6. # 获取当前所在目录位置
  7. current_dir=$(pwd)
  8. echo "当前所在目录位置: $current_dir"
  9. # 目标路径
  10. target_dir="/dm8_setup/iso"
  11. # 检查目标路径是否存在,如果不存在则创建
  12. if [ ! -d "$target_dir" ]; then
  13.    mkdir -p "$target_dir"
  14.    echo "已创建目录: $target_dir"
  15. fi
  16. # 移动当前目录下的所有文件到目标路径
  17. mv -f $current_dir/* $target_dir
  18. echo "已将当前目录下所有文件移动至 $target_dir"
  19. # mount iso file
  20. #read -p "Please input iso file name >" iso_name
  21. iso_name="dm8_20240408_x86_rh7_64.iso"
  22. mount /dm8_setup/iso/${iso_name} /mnt -o loop &>/dev/null
  23. if [ $? -ne 0 ]; then
  24.  echo "cdrom has mount!please umount and continue setup."
  25.  exit
  26. fi

  27. # input setup base dir
  28. read -p "Please input setup base dir >" dm_base
  29. if [ ! -d "$dm_base" ]; then
  30.    mkdir -p "$dm_base"
  31. fi

  32. if [ "$(ls -A $dm_base)" ]; then
  33.    echo "$dm_base is not empty!"
  34.    exit
  35. fi

  36. # 自定义端口号
  37. read -p "Please input setup port num(default 5236) >" port_num
  38. #if [ "$(netstat -tpnl | grep $port_num)" ]; then
  39. #  echo "$port_num is used"
  40. #  exit
  41. #fi
  42. # modify /etc/hosts file
  43. hostnamectl set-hostname mydm
  44. public_ip=$(hostname -I| grep -o -e '[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}' |head -n 1)
  45. node_name=$(hostname)
  46. echo -e "${public_ip} ${node_name}">> /etc/hosts
  47. groups=(dinstall) # install group
  48. group_start_id=50000 # specify start id of group

  49. setup_dir=${dm_base}/dbms
  50. init_db_dir=${dm_base}/data
  51. init_rlog_dir=${dm_base}/log
  52. db_name=PROD
  53. instance_name=PROD
  54. ctl_path=$init_db_dir"/"$db_name
  55. log_path=$init_rlog_dir"/"$db_name
  56. page_size=16
  57. extent_size=16
  58. log_size=256
  59. case_sensitive=y
  60. charset=0
  61. length_in_char=0
  62. sysdba_pwd=SYSDBA

  63. # create dm soft dirs and grant privlieges
  64. mkdir -p ${dm_base}/dbms
  65. mkdir -p ${dm_base}/data
  66. mkdir -p ${dm_base}/log
  67. mkdir -p ${dm_base}/arch
  68. mkdir -p ${dm_base}/bak
  69. mkdir -p ${dm_base}/script

  70. # create group of required with dmdba user
  71. function create_group() {
  72.  g_id=${group_start_id}
  73.  for g_name in ${groups[*]}
  74.  do
  75.    groupadd -g $((g_id++)) ${g_name} &>/dev/null
  76.  done

  77.  for line in $(cat /etc/group | awk -F: '$3>=50000 && $3<=50010')
  78.  do
  79.    OLD_IFS="$IFS"
  80.    IFS=":"
  81.    segs=($line)
  82.    echo "Group ${segs[0]} created successful!"
  83.    IFS="$OLD_IFS"
  84.  done
  85. }
  86. function del_group() {
  87.   del_gn=(`cat /etc/group | awk -F: '$3>50000 && $3 <50000{print $1}' | xargs`)
  88.   for gn in ${del_gn[*]}
  89.   do
  90.     groupdel $gn
  91.   done
  92. }
  93. # $1:user name
  94. # $2:user id
  95. # $3:group name
  96. function create_user() {
  97.  $(id "$1" &>/dev/null)
  98.  if (($?!=0)); then
  99.    $(useradd -u "$2" -g "$3"  "$1" ; echo "dmdba" | passwd --stdin $1 &>/dev/null)
  100.    echo "$1 user created! password is dmdba"
  101.  else
  102.    echo "user has existed!"
  103.  fi
  104. }
  105. # create groups
  106. create_group
  107. # create user for install
  108. create_user dmdba 51000 dinstall
  109. chown -R dmdba:dinstall /dm
  110. chmod -R 775 /dm
  111. # modify resources parameter
  112. echo "dmdba soft nproc 16384
  113. dmdba hard nproc 16384
  114. dmdba soft nofile 16384
  115. dmdba hard nofile 65536
  116. dmdba soft stack 16384
  117. dmdba hard stack 32768" >> /etc/security/limits.conf
  118. # close firewalld
  119. systemctl stop firewalld.service &>/dev/null
  120. systemctl disable firewalld.service &>/dev/null
  121. # disable selinux
  122. sed -r -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  123. setenforce 0 &>/dev/null
  124. cat << EOF > ${dm_base}/script/silent_setup.xml
  125. <?xml version="1.0"?>
  126. <DATABASE>
  127. <LANGUAGE>en</LANGUAGE>
  128. <TIME_ZONE>+08:00</TIME_ZONE>
  129. <KEY></KEY>
  130. <INSTALL_TYPE>0</INSTALL_TYPE>
  131. <INSTALL_PATH>${setup_dir}</INSTALL_PATH>
  132. <INIT_DB>y</INIT_DB>
  133. <DB_PARAMS>
  134. <PATH>${init_db_dir}</PATH>
  135. <DB_NAME>${db_name}</DB_NAME>
  136. <INSTANCE_NAME>${instance_name}</INSTANCE_NAME>
  137. <PORT_NUM>${port_num}</PORT_NUM>
  138. <CTL_PATH>${setup_dir}/${db_name}/dm.ctl</CTL_PATH>
  139. <LOG_PATHS>
  140.  <LOG_PATH>${init_rlog_dir}/${db_name}/redo01.log</LOG_PATH>
  141.  <LOG_PATH>${init_rlog_dir}/${db_name}/redo02.log</LOG_PATH>
  142. </LOG_PATHS>
  143. <EXTENT_SIZE>${extent_size}</EXTENT_SIZE>
  144. <PAGE_SIZE>${page_size}</PAGE_SIZE>
  145. <LOG_SIZE>${log_size}</LOG_SIZE>
  146. <CASE_SENSITIVE>Y</CASE_SENSITIVE>
  147. <CHARSET>0</CHARSET>
  148. <LENGTH_IN_CHAR>0</LENGTH_IN_CHAR>
  149. <TIME_ZONE>+08:00</TIME_ZONE>
  150. </DB_PARAMS>
  151. <CREATE_DB_SERVICE>n</CREATE_DB_SERVICE>
  152. <STARTUP_DB_SERVICE>n</STARTUP_DB_SERVICE>
  153. </DATABASE>
  154. EOF

  155. chown dmdba:dinstall /dm/script/silent_setup.xml
  156. su - dmdba -c "/mnt/DMInstall.bin -q /dm/script/silent_setup.xml"
  157. ${setup_dir}/script/root/root_installer.sh
  158. ${setup_dir}/script/root/dm_service_installer.sh -t dmserver -p ${db_name} -dm_ini ${init_db_dir}/${db_name}/dm.ini
  159. cat << EOF >> /home/dmdba/.bash_profile
  160. DM_HOME=${setup_dir}
  161. export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\${DM_HOME}/bin
  162. export PATH=\$PATH:\${DM_HOME}/bin
  163. EOF
  164. su - dmdba -c "source /home/dmdba/.bash_profile"
  165. su - dmdba -c "${setup_dir}/bin/DmService${db_name} start"
  166. echo -e "\n\n****** DM8安装完成 ******\n\n"

注意:安装过程中,只需要输入安装路径和端口号即可。

思考:为什么需要一键安装脚本

1、简化安装过程:‌通过一键安装脚本,‌用户可以避免手动执行一系列复杂的安装步骤,‌如配置网络、‌设置系统参数、‌安装软件等。‌这大大减少了安装数据库所需的时间和人力。

2、提高安装效率:‌脚本能够自动化处理许多重复性的任务,‌如复制软件到安装服务器、‌配置网络设置等,‌从而加快了整个安装过程。

3、确保安装的正确性和一致性:‌一键安装脚本通常经过精心设计和测试,‌能够确保所有必要的配置和参数都正确无误地应用到数据库安装过程中,‌从而避免了手动操作可能引入的错误。

4、便于管理和维护:‌对于需要频繁部署数据库环境的情况,‌如开发环境、‌测试环境等,‌使用一键安装脚本可以快速部署,‌减少重复工作,‌提高工作效率。‌

相关文章
|
传感器 物联网 开发工具
基于华为物联网云平台设计的智能家居控制系统(STM32+ESP8266)
现在可以接入的物联网云平台非常多,阿里云物联网云平台、OneNet中国移动物联网云平台,还有机智云、涂鸦智能、百度云平台、华为云平台等等。
1410 1
|
4月前
|
SQL 自然语言处理 BI
万字长文解析 NLQ 破局 Text2SQL,兼得灵活复杂准确
润乾NLQ创新采用“规范文本”作中间层,兼顾问题灵活性与查询准确性。通过人类可读的规范文本确认意图,结合规则引擎生成精确SQL,并支持复杂查询,以低成本实现企业级Text2SQL的可靠落地,突破传统三难困境。
|
6月前
|
数据采集 算法 前端开发
AR眼镜在安防领域人脸识别技术方案|阿法龙XR云平台
基于AR眼镜的移动安防人脸识别系统,采用端-边-云协同架构,集成高清红外采集、轻量级人脸检测与多模式识别计算,实现毫秒级身份核验。支持本地、云端及执法终端协同比对,结合动态置信度优化与AR信息叠加,适用于大型场馆、边境巡检等场景,提升执法效率与精准度。(238字)
|
4月前
|
数据采集 人工智能 运维
别让事故靠运气 — AI辅助的运维安全管理,干活儿也能更聪明
别让事故靠运气 — AI辅助的运维安全管理,干活儿也能更聪明
357 3
|
Java Unix 调度
python多线程!
本文介绍了线程的基本概念、多线程技术、线程的创建与管理、线程间的通信与同步机制,以及线程池和队列模块的使用。文章详细讲解了如何使用 `_thread` 和 `threading` 模块创建和管理线程,介绍了线程锁 `Lock` 的作用和使用方法,解决了多线程环境下的数据共享问题。此外,还介绍了 `Timer` 定时器和 `ThreadPoolExecutor` 线程池的使用,最后通过一个具体的案例展示了如何使用多线程爬取电影票房数据。文章还对比了进程和线程的优缺点,并讨论了计算密集型和IO密集型任务的适用场景。
390 4
|
7月前
|
传感器 人工智能 安全
AI Agent架构全览:从LLM大脑到工具四肢的自主进化之路
人工智能正从工具时代迈向智能体时代,AI Agent作为核心载体,具备感知、决策与行动能力,能自主完成复杂任务。本文详解其工作原理与架构,探讨未来发展与挑战。
|
Oracle 关系型数据库 Unix
DM8 保姆级安装教程
DM8 保姆级安装教程一、下载DM8安装介质地址:https://eco.dameng.com/download/。这里我们下载X86版本。 二、安装前准备1、新建 dmdba 用户注意 安装前必须创建 dmdba 用户,禁止使用 root 用户安装数据库。 创建用户组:[root@mydb ~]# groupadd dinstall -g 2001 创建用户:[root@mydb ~]# useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdba 修改用户密码:[root@mydb ~]# passwd dmdba2、修
1585 0
|
数据可视化 安全 搜索推荐
干货|FESCO Adecco外企德科:Quick BI打造战略管理“观数台”(2)
干货|FESCO Adecco外企德科:Quick BI打造战略管理“观数台”
567 4
|
SQL 机器学习/深度学习 存储
数据库设计革命:逻辑模型的演变与面向对象的突破
数据库设计革命:逻辑模型的演变与面向对象的突破
448 1
|
JavaScript
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
【vue】el-dialog 内的tinymce弹窗被遮挡的解决办法 及 tinymce打开弹出菜单后直接关闭对话组件,导致该弹出菜单残留
1165 6