暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DM8一键安装脚本


  1.  

一、环境准备

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

文中的概念来源于网络,如有侵权,请联系我删除。

欢迎关注公众号:小周的数据库进阶之路,一起交流数据库、中间件和云计算等技术。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!感兴趣的朋友可以加我微信,拉您进群与业界的大佬们一起交流学习。



文章转载自小周的数据库进阶之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论