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

相关文章
|
1月前
|
存储 Shell 应用服务中间件
[ansible]wget批量调用shell脚本
[ansible]wget批量调用shell脚本
|
4月前
|
关系型数据库 MySQL Shell
linux下shell脚本实现wordpress搭建
linux下shell脚本实现wordpress搭建
40 2
|
10月前
|
Linux Shell
suse 12 sp3 利用shell脚本离线编译安装ansible
suse 12 sp3 利用shell脚本离线编译安装ansible
68 0
|
12月前
|
Shell Linux
用shell脚本记录一个安装Linux软件的脚本
用shell脚本记录一个安装Linux软件的脚本
92 1
|
关系型数据库 Shell Linux