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

相关文章
|
6月前
|
关系型数据库 MySQL Shell
MySQL数据库一键安装脚本,适合任何版本
MySQL数据库一键安装脚本,适合任何版本
264 2
|
6月前
|
关系型数据库 Shell 数据库
postgres14一键安装脚本分享(shell和python)
postgres14一键安装脚本分享(shell和python)
211 0
|
8月前
|
Ubuntu 关系型数据库 MySQL
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
109 0
ubuntu apt 安装wordpress所需所有的 一键脚本 扩展您的PHP似乎没有安装运行WordPress所必需的MySQL扩展。
|
9月前
|
关系型数据库 MySQL Linux
linux mysql 自动安装脚本
linux mysql 自动安装脚本
77 0
|
9月前
|
关系型数据库 MySQL Linux
Linux|集群初始化脚本--osiniit.sh简介
Linux|集群初始化脚本--osiniit.sh简介
64 0
|
9月前
|
SQL 关系型数据库 MySQL
linux下导入、导出mysql数据库命令
linux下导入、导出mysql数据库命令
|
Shell Linux Python
centos7系统 shell脚本安装python3 各版本
centos7系统 shell脚本安装python3 各版本
292 0
|
Linux Shell
suse 12 sp3 利用shell脚本离线编译安装ansible
suse 12 sp3 利用shell脚本离线编译安装ansible
93 0
|
分布式计算 Java Hadoop
Hadoop运行环境搭建(开发重点一)、模板虚拟机环境准备、卸载虚拟机自带的JDK、安装epel-release、配置summer用户具有root权限,方便后期加sudo执行root权限的命令
安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存4G、硬盘50G、hadoop100虚拟机配置要求如下(本文Linux系统全部以CentOS-7-x86_64-DVD-2009为例)、使用yum安装需要虚拟机可以正常上网,yum安装前可以先测试下虚拟机联网情况、注意:如果Linux安装的是最小系统版,还需要安装如下工具;如果安装的是Linux桌面标准版,不需要执行如下操作、创建summer用户,并修改summer用户的密码、在/opt目录下创建文件夹,并修改所属主和所属
Hadoop运行环境搭建(开发重点一)、模板虚拟机环境准备、卸载虚拟机自带的JDK、安装epel-release、配置summer用户具有root权限,方便后期加sudo执行root权限的命令
|
Linux 数据库 数据安全/隐私保护
Linux基础命令---mysqlimport导入数据库
mysqlimport mysqlimport指令可以用来将文本文件中的数据导入到数据库。在导入文本文件的时候,必须确保数据库中有一张表,而且他的名字和文本文件的名字是一样的。 此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、Fedora。
1307 0