ITPub博客

首页 > 数据库 > 数据库开发技术 > 一键装库脚本3分钟极速部署,传统耗时砍掉95%!

一键装库脚本3分钟极速部署,传统耗时砍掉95%!

原创 数据库开发技术 作者:wddwr7307914 时间:2025-03-10 10:43:09 0 删除 编辑

全栈适配MySQL/Oracle/PostgreSQL/SQL server,3分钟极速部署,人力成本直降70%,老板连夜要求全员掌握。


这里小编将这些脚本整理出来,分享给大家。


更多技术分享点击下方链接👇👇👇👇
https://ocpsydz71e.feishu.cn/docx/EqksdLwRlooByfxTmlBcibyYnAe


1.Oracle脚本


【脚本说明】
1、下载19C安装包LINUX.X64_193000_db_home.zip后上传到/opt目录下
2、ISO系统镜像需要挂载,后期用于YUM
3、MY_SERVER_IP、MY_HOSTNAME根据自己环境修改
4、MY_ORA_SID为实例名、MY_ORA_MEMORY为分配到内存大小,根据实际情况修改
5、createAsContainerDatabase=TRUE表示容器数据库,改为false后就是非容器
直接执行脚本,自动化安装,本脚本适用于Linux7,其他操作系统可能涉及yum的配置不同,请自行修改
脚本创作不易,请多多支持,关注公众号:IT邦德


```

#!/bin/bash

#==============================================================#

# 脚本名     :   OracleShellInstall.sh

# 创建时间   :   2023-06-13 10:02:09

# 更新时间   :   2025-02-10 10:02:09

# 描述      :    Oracle19C数据库一键安装脚本(单机CDB\NO-CDB)

# 路径      :   /soft/OracleShellInstall

# 版本      :   2.0.0

# 作者      :   王丁丁 公众号:IT邦德

#==============================================================#

#==============================================================#

#                         基础参数                              #

#==============================================================#

##需要设置的参数

#本机服务器IP

export MY_SERVER_IP=192.168.6.5

#本机服务器主机名

export MY_HOSTNAME=dbhost

#ORACLE软件上传根目录

export MY_SOFT_BASE=/opt

#ORACLE软件名

export MY_ORA_SOFT1=LINUX.X64_193000_db_home.zip

## ISO系统镜像存放目录

export MY_DIRECTORY_ISO=/opt

##ORACLE软件存放的目录

export MY_DIRECTORY_SOFT=$MY_SOFT_BASE

##ORACLE脚本存放的目录

export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE

#==============================================================#

#                         软件准备                              #

#==============================================================#

## 1.将ISO系统镜像上传到系统

## 2.将数据库软件上传到系统

#if [ ! -d /opt/iso ]; then 

#创建镜像目录

#mkdir /opt/iso

#fi

##确认是否有光驱设备

echo " "

MY_ISO=`mount | grep iso9660`

if [ ! -n "$MY_ISO" ];then

    echo "Please Mount A CD ISO Image First"

    exit

else

    mount /dev/cdrom /mnt/ >/dev/null 2>&1

    echo "Mount A CD ISO Image Already"

fi

#==============================================================#

#           Oracle软件安装相关配置                              #

#==============================================================#


#ORACLE软件安装根目录

export MY_DIR=/u01

##ORACLE BASE目录

export MY_ORA_BASE=$MY_DIR/app/oracle

##ORACLE HOME目录

export MY_ORA_HOME=$MY_ORA_BASE/product/19.3.0/dbhome_1

##ORACLE INVENTORY目录

export MY_INVENTORY_LOC=$MY_DIR/app/oraInventory

#ORACLE SID变量

export MY_ORA_SID=orcl

#ORACLE SYS密码

export MY_ORA_PASSWD=oracle

#数据分配的内存

export MY_ORA_MEMORY=1500

##数据文件存放目录

export MY_ORA_DATA=$MY_ORA_BASE/oradata

##判断ORACLE软件是否上传

if [ -f $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 ]; then 

    echo "Oracle Software Already Upload"

else

    echo "Please Upload Oracle Software First"

    exit

fi

#==============================================================#

#           本地yum配置                                         #

#==============================================================#

mkdir -p /tmp/confbak/yumbak/

mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1

if [ -f /etc/os-release ]; then

    . /etc/os-release

    echo "Distribution: $ID"

    echo "Version: $VERSION_ID"

    if [ "$ID" = "8" ];then

        echo "[localREPO]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo


        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    else

        echo "[Oracle]" >> /etc/yum.repos.d/my.repo

        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    fi

else

    echo "No OS Release file found."

fi

yum -y install bc  >/dev/null 2>&1

#==============================================================#

#           内核参数计算                                        #

#==============================================================#

##服务器内存大小G单位

export MY_MEMORY_GB=`free -g | grep Mem | awk '{print $2}'`

 

##根据内存计算内核参数大小

export MY_SHMMAX=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9" | bc | awk -F "." '{print $1}'`

export MY_SHMALL=`echo "$MY_MEMORY_GB*1024*1024*1024*0.9/4" | bc | awk -F "." '{print $1}'`

#==============================================================#

#           安装前准备工作                                      #

#==============================================================#

## 1.1 设置主机名

hostnamectl set-hostname $MY_HOSTNAME

sed -i '/^HOSTNAME=/d' /etc/sysconfig/network

echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network

echo "1.1 Configure hostname completed."

## 1.2 修改hosts

cp /etc/hosts /tmp/confbak

cat >> /etc/hosts <<EOF

$MY_SERVER_IP $MY_HOSTNAME

EOF

echo "1.2 Configure Hosts Completed."

## 1.3 安装数据库依赖包

yum -y install bc binutils compat-libcap1 compat-libstdc++-33 elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc \

glibc-devel ksh libaio libaio-devel libXrender libXrender-devel libX11 libXau libXi libXtst libgcc libstdc++ \

libstdc++-devel libxcb make policycoreutils policycoreutils-python smartmontools sysstat  >/dev/null 2>&1

cd $MY_DIRECTORY_SOFT

echo "1.3 Install rpm Software Completed."

## 1.4 关闭防火墙

systemctl stop firewalld.service  >/dev/null 2>&1

systemctl disable firewalld.service  >/dev/null 2>&1 

systemctl status firewalld.service  >/dev/null 2>&1

echo "1.4 Disable Firewalld Service Completed."

## 1.5 关闭SELinux

cp /etc/selinux/config /tmp/confbak/config

sed -i '/^SELINUX=/d' /etc/selinux/config

echo "SELINUX=disabled" >> /etc/selinux/config

# cat /etc/selinux/config|grep "SELINUX=disabled"

setenforce 0 >/dev/null 2>&1

echo "1.5 Disable SELINUX Completed."

## 1.6 建立用户和组

if id -u oracle >/dev/null 2>&1; then

    echo "Oracle User Exists."

else

    groupadd -g 14321 oinstall  >/dev/null 2>&1

    groupadd -g 14322 dba  >/dev/null 2>&1

    groupadd -g 14323 oper  >/dev/null 2>&1

    groupadd -g 14324 backupdba  >/dev/null 2>&1

    groupadd -g 14325 dgdba  >/dev/null 2>&1

    groupadd -g 14326 kmdba  >/dev/null 2>&1

    groupadd -g 14327 racdba  >/dev/null 2>&1    

    useradd -u 1101 -g oinstall -G dba,backupdba,dgdba,kmdba,racdba,oper oracle  >/dev/null 2>&1

    echo oracle123 | passwd --stdin oracle  >/dev/null 2>&1

    echo "1.6 User Created Completed."

fi

## 1.7 创建相关目录

mkdir -p $MY_ORA_HOME

chown -R oracle:oinstall $MY_DIR/app

chmod -R 775 $MY_DIR/app

echo "1.7 Oracle Directories Created Completed."

## 1.8 修改内核参数

cp /etc/sysctl.conf /tmp/confbak/sysctl.conf

cat >> /etc/sysctl.conf  <<EOF

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

kernel.shmmax = $MY_SHMMAX

kernel.shmall = $MY_SHMALL

EOF

sysctl -p  >/dev/null 2>&1

echo "1.8 Configure Linux Kernal Parameter Completed."

## 1.9 修改文件限制

cp /etc/security/limits.conf /tmp/confbak/limits.conf

cat >> /etc/security/limits.conf   <<EOF

oracle              soft    nproc   2047

oracle              hard    nproc   16384

oracle              soft    nofile  1024

oracle              hard    nofile  65536

oracle              soft    stack   10240

EOF

echo "1.9 Configure Linux Resource Limit Completed."

## 1.10 配置系统环境变量

cp /etc/profile /tmp/confbak/profile

cat >> /etc/profile  <<EOF

if [ $USER = "oracle" ]; then

    if [ $SHELL = "/bin/ksh" ]; then

        ulimit -p 16384

        ulimit -n 65536

    else

        ulimit -u 16384 -n 65536

    fi

fi

EOF

echo "1.10 Configure Linux Profile Env Completed."

## 1.11 配置NOZEROCONFIG

cat >> /etc/sysconfig/network <<EOF

NOZEROCONF=yes

EOF

echo "1.11 Configure Nozeroconfig Completed."

## 1.12 修改oracle用户环境变量

export MY_LD_LIBRARY_PATH=$MY_ORA_HOME/lib

export MY_CLASSPATH=$MY_ORA_HOME/JRE

su - oracle -c "

cat >> /home/oracle/.bash_profile  <<EOF

ORACLE_SID=$MY_ORA_SID; export ORACLE_SID

ORACLE_UNQNAME=$MY_ORA_SID; export ORACLE_UNQNAME

ORACLE_BASE=$MY_ORA_BASE; export ORACLE_BASE

ORACLE_HOME=$MY_ORA_HOME; export ORACLE_HOME

JAVA_HOME=/usr/local/java; export JAVA_HOME

ORACLE_PATH=$MY_DIR/app/common/oracle/sql; export ORACLE_PATH

ORACLE_TERM=xterm; export ORACLE_TERM

TNS_ADMIN=$MY_ORA_HOME/network/admin; export TNS_ADMIN

ORA_NLS11=$MY_ORA_HOME/nls/data; export ORA_NLS11

PATH=/usr/sbin:$PATH; export PATH

PATH=$MY_ORA_HOME/bin:$MY_DIR/app/common/oracle/bin:$PATH; export PATH

#LD_LIBRARY_PATH=$MY_ORA_HOME/lib

LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:$MY_ORA_HOME/oracm/lib

LD_LIBRARY_PATH=${MY_LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib

export LD_LIBRARY_PATH

#CLASSPATH=$MY_ORA_HOME/JRE

CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/jlib

CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/rdbms/jlib

CLASSPATH=${MY_CLASSPATH}:$MY_ORA_HOME/network/jlib

export CLASSPATH

THREADS_FLAG=native; export THREADS_FLAG

export TEMP=/tmp

export TMPDIR=/tmp

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

umask 022

EOF

"

source /home/oracle/.bash_profile >/dev/null 2>&1

echo "1.12 Configure Oracle Env Completed."

## 1.13 解压数据库软件

echo "1.13 Start Unzip Oracle Software."

cd $MY_DIRECTORY_SOFT

rm -rf $MY_DIRECTORY_SOFT/database

chown oracle.oinstall $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 -R

chmod 755 -R $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1

su - oracle -c "unzip -q $MY_DIRECTORY_SOFT/$MY_ORA_SOFT1 -d $MY_ORA_HOME" &

while true;

do 

    echo -n ".";sleep 2;

    MY_EXEC=`ps -ef | grep unzip | grep -Evi grep`

    if [ "$MY_EXEC" = "" ] 

    then

        break;

    fi 

done

echo " "

echo "1.13 Unzip Oracle Software Completed."

#==============================================================#

#           数据库安装工作                                      #

#==============================================================#

## 2.1 创建数据库软件静默安装文件

mkdir -p $MY_INVENTORY_LOC

chown oracle.oinstall $MY_INVENTORY_LOC

if [ ! -d "$MY_DIRECTORY_SCRIPT" ]; then 

    mkdir -p $MY_DIRECTORY_SCRIPT

fi

cd  $MY_DIRECTORY_SCRIPT

rm -rf db_install.rsp

cat >> db_install.rsp   <<EOF

oracle.install.responseFileVersion=/oracle/install/rspfmt_dbinstall_response_schema_v19.0.0 

oracle.install.option=INSTALL_DB_SWONLY 

UNIX_GROUP_NAME=oinstall 

INVENTORY_LOCATION=$MY_INVENTORY_LOC

ORACLE_BASE=$MY_ORA_BASE

ORACLE_HOME=$MY_ORA_HOME

oracle.install.db.InstallEdition=EE 

oracle.install.db.OSDBA_GROUP=dba 

oracle.install.db.OSOPER_GROUP=oper 

oracle.install.db.OSBACKUPDBA_GROUP=backupdba 

oracle.install.db.OSDGDBA_GROUP=dgdba 

oracle.install.db.OSKMDBA_GROUP=kmdba 

oracle.install.db.OSRACDBA_GROUP=racdba

oracle.install.db.rootconfig.executeRootScript=true 

oracle.install.db.rootconfig.configMethod=ROOT

oracle.install.db.config.starterdb.type=DATA_WAREHOUSE

EOF

chown oracle.oinstall $MY_DIRECTORY_SCRIPT -R

echo "2.1 Create Silent Configure File Completed."

## 2.2 静默安装数据库软件

chown oracle.oinstall $MY_DIRECTORY_SCRIPT/db_install.rsp

su - oracle -c "$MY_ORA_HOME/runInstaller -silent -force -noconfig -ignorePrereq -responseFile $MY_DIRECTORY_SCRIPT/db_install.rsp"

while true;

do 

    echo -n ".";sleep 2;

    MY_EXEC=`ps -ef | grep java | grep -Evi grep`

    if [ "$MY_EXEC" = "" ] 

    then

        break;

    fi 

done

echo " "

if [ $? -eq 0 ]; then

    sh $MY_INVENTORY_LOC/orainstRoot.sh  >/dev/null 2>&1

    sh $MY_ORA_HOME/root.sh  >/dev/null 2>&1

    

    NOW_DATE=`date +%Y-%m-%d`

    echo "Check  $MY_ORA_HOME/install/root_"$MY_HOSTNAME"_"$NOW_DATE"_xxx.log for the output of root script"

    echo " "

    echo "2.2 Install Oracle Software Completed."

else

  echo "2.2 Install Oracle Software Failed."

fi

## 2.3 静默配置数据库监听

cd  $MY_DIRECTORY_SCRIPT

rm -rf netca.rsp

cat >> netca.rsp   <<EOF

[GENERAL]

RESPONSEFILE_VERSION="19.3"

CREATE_TYPE="CUSTOM"

[oracle.net.ca]

INSTALLED_COMPONENTS={"server","net8","javavm"}

INSTALL_TYPE=""typical""

LISTENER_NUMBER=1

LISTENER_NAMES={"LISTENER"}

LISTENER_PROTOCOLS={"TCP;1521"}

LISTENER_START=""LISTENER""

NAMING_METHODS={"TNSNAMES","ONAMES","HOSTNAME"}

NSN_NUMBER=1

NSN_NAMES={"EXTPROC_CONNECTION_DATA"}

NSN_SERVICE={"PLSExtProc"}

NSN_PROTOCOLS={"TCP;HOSTNAME;1521"}

EOF

chown oracle.oinstall $MY_DIRECTORY_SCRIPT/netca.rsp

su - oracle -c "$MY_ORA_HOME/bin/netca -silent -responseFile $MY_DIRECTORY_SCRIPT/netca.rsp"  >/dev/null 2>&1

echo "2.3 Configure Oracle Listener Completed."

## 2.4 配置静默创建数据库文件

cd  $MY_DIRECTORY_SCRIPT

rm -rf dbca.rsp

cat >> dbca.rsp   <<EOF

responseFileVersion=/oracle/assistants/rspfmt_dbca_response_schema_v19.0.0

templateName=General_Purpose.dbc

gdbName=$MY_ORA_SID

sid=$MY_ORA_SID

createAsContainerDatabase=TRUE

numberOfPDBs=1

pdbName=pdb01

pdbAdminPassword=$MY_ORA_PASSWD

sysPassword=$MY_ORA_PASSWD

systemPassword=$MY_ORA_PASSWD

datafileDestination=$MY_ORA_BASE/oradata

recoveryAreaDestination=$MY_ORA_BASE/fast_recovery_area

storageType=FS

characterSet=AL32UTF8

nationalCharacterSet=UTF8

sampleSchema=true

totalMemory=$MY_ORA_MEMORY

databaseType=OLTP

databaseConfigType=SI

emConfiguration=NONE

EOF

echo "2.4 Create Silent Configure File Completed."

## 2.5 静默创建数据库

if [ ! -d "$MY_ORA_BASE/oradata" ]; then 

    mkdir $MY_ORA_BASE/oradata

fi

if [ ! -d "$MY_ORA_BASE/fast_recovery_area" ]; then 

    mkdir $MY_ORA_BASE/fast_recovery_area

fi

chown oracle.oinstall $MY_ORA_BASE/oradata

chown oracle.oinstall $MY_ORA_BASE/fast_recovery_area

chown oracle.oinstall $MY_DIRECTORY_SCRIPT/dbca.rsp

su - oracle -c "$MY_ORA_HOME/bin/dbca -silent -createDatabase -responseFile $MY_DIRECTORY_SCRIPT/dbca.rsp"

echo "2.5 Create Database Completed."

echo "Oracle successfully installed"

```


## 2.PostgreSQL脚本


```

【脚本说明】

1、下载PG源码安装包后上传到/opt目录下

2、ISO系统镜像需要挂载,后期用于YUM

3、MY_SERVER_IP、MY_HOSTNAME根据自己环境修改

4、PG_VERSION为版本号,如果其他版本请更改

直接执行脚本,自动化安装,本脚本适用于Linux7,其他操作系统可能涉及yum的配置不同,请自行修改

脚本创作不易,请多多支持,关注公众号:IT邦德

```

```

#!/bin/bash

#==============================================================#

# 脚本名     :   PG_SOUECE.sh

# 创建时间   :   2024-03-08 22:00:00

# 更新时间   :   2024-03-09 23:00:00

# 描述      :    PostgreSQL数据库源码一键安装脚本(单机)

# Linux系统 :    Liunx7

# PG版本    :    14.11

# 脚本路径   :   /opt

# 版本      :   2.0.0

# 作者      :   王丁丁,公众号:IT邦德,PostgreSQL ACE Partner

# 说明      :   其他版本替换相应的源码包即可

#==============================================================#

#==============================================================#

#                         基础参数                              #

#==============================================================#

##需要设置的参数

#本机服务器IP

export MY_SERVER_IP=192.168.3.20

#本机服务器主机名

export MY_HOSTNAME=pgpcp

#PostgreSQL相关RPM包上传根目录

export MY_SOFT_BASE=/opt

#PG源码包

export PG_SOFT=postgresql-14.11.tar.gz

#PG版本

export PG_VERSION=14.11

## ISO系统镜像存放目录

export MY_DIRECTORY_ISO=/opt

##PG源码包存放的目录

export MY_DIRECTORY_SOFT=$MY_SOFT_BASE

##PG脚本存放的目录

export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE

#==============================================================#

#           PG安装相关配置                                       #

#==============================================================#

#PG根目录

export MY_PG_HOME=/pgccc

#PG数据目录

export PGDATA=$MY_PG_HOME/pgdata

#PG家目录

export PGHOME=/pgccc/pgsql

##PG源码编译目录

export MY_PG_COMPILE=/pgccc/soft/postgresql-$PG_VERSION

##判断安装包是否上传

if [ -f $MY_DIRECTORY_SOFT/$PG_SOFT ]; then 

    echo "PG Source Soft Already Upload"

else

    echo "Please Upload PG Source Soft First"

    exit

fi

#==============================================================#

#                        挂载光驱                               #

#==============================================================#

## 1.将ISO系统镜像上传到系统

## 2.将数据库软件上传到系统

## 确认是否有光驱设备

echo " "

MY_ISO=`mount | grep iso9660`

if [ ! -n "$MY_ISO" ];then

    echo "Please Mount A CD ISO Image First"

    exit

else

    mount /dev/cdrom /mnt/ >/dev/null 2>&1

    echo "Mount A CD ISO Image Already"

fi

#==============================================================#

#           1.本地yum配置                                       #

#==============================================================#

mkdir -p /tmp/confbak/yumbak/

mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1

## 确认操作系统的版本,配置yum

if [ -f /etc/os-release ]; then

    . /etc/os-release

    echo "Distribution: $ID"

    echo "Version: $VERSION_ID"

    if [ "$ID" = "8" ];then

        echo "[localREPO]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo


        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    else

        echo "[Oracle]" >> /etc/yum.repos.d/my.repo

        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    fi

else

    echo "No OS Release file found."

fi

yum -y install bc  >/dev/null 2>&1

echo "1 Configure yum Completed."

#==============================================================#

#           2.安装前准备工作                                     #

#==============================================================#

## 2.1 设置主机名

hostnamectl set-hostname $MY_HOSTNAME

sed -i '/^HOSTNAME=/d' /etc/sysconfig/network

echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network

echo "2.1 Configure hostname completed."

## 2.2 修改hosts

cp /etc/hosts /tmp/confbak

cat >> /etc/hosts <<EOF

$MY_SERVER_IP $MY_HOSTNAME

EOF

echo "2.2 Configure Hosts Completed."

## 2.3 安装PG依赖

yum install -y openssl openssl-devel pam pam-devel libxml2 libxml2-devel \

libxslt libxslt-devel perl perl-devel python-devel perl-ExtUtils-Embed \

readline readline-devel bzip2 zlib zlib-devel ntp ntpdate \

gettext gettext-devel bison flex gcc gcc-c++ \

boost-devel gmp* mpfr* libevent* libpython3.6m >/dev/null 2>&1

echo "2.3 Install PG dependency Completed."

## 2.4 关闭防火墙

systemctl stop firewalld.service  >/dev/null 2>&1

systemctl disable firewalld.service  >/dev/null 2>&1 

systemctl status firewalld.service  >/dev/null 2>&1

echo "2.4 Disable Firewalld Service Completed."

## 2.5 关闭SELinux

sed -i '/^SELINUX=/d' /etc/selinux/config

echo "SELINUX=disabled" >> /etc/selinux/config

# cat /etc/selinux/config|grep "SELINUX=disabled"

setenforce 0 >/dev/null 2>&1

echo "2.5 close SELinux completed."

## 2.6 建立用户和组

if id -u postgres >/dev/null 2>&1; then

    echo "postgres User Exists."

else

    groupadd -g 70000 postgres  >/dev/null 2>&1

    useradd -u 70000 -g postgres postgres >/dev/null 2>&1

    echo postgres | passwd --stdin postgres  >/dev/null 2>&1

    echo "User postgres Created Completed."

fi

echo "2.6 Establish users and groups Completed."

## 2.7 创建相关目录

mkdir -p $MY_PG_HOME/{pgdata,archive,scripts,backup,pgsql,soft}

chown -R postgres:postgres $MY_PG_HOME

chmod -R 775 $MY_PG_HOME

echo "2.7 PG Directories Created Completed."

## 2.8 修改postgres用户环境变量

echo 'export PS1="[\u@\h \W]\$"'  >> /home/postgres/.bash_profile

su - postgres -c "

cat >> /home/postgres/.bash_profile <<EOF

export.UTF-8

export PGPORT=5432

export PGDATA=$PGDATA

export PGHOME=$PGHOME

export PATH=$PGHOME/bin:$PATH:.

export PGUSER=postgres

export PGDATABASE=postgres

EOF

"

source /home/postgres/.bash_profile >/dev/null 2>&1

echo "2.8 Configure postgres Env Completed."

#==============================================================#

#           3.PG数据库安装工作                                    #

#==============================================================#

## 3.1 解压数据库软件

echo "3.1 Start Unzip PG Software."

cp $MY_DIRECTORY_SOFT/$PG_SOFT $MY_PG_HOME/soft

cd $MY_PG_HOME/soft

tar -zxvf $MY_PG_HOME/soft/$PG_SOFT

chown -R postgres:postgres $MY_PG_HOME/soft

chmod 755 -R $MY_PG_HOME/soft

echo "3.1 Unzip PG Software Completed."

## 3.2 PG编译安装

su - postgres -c "$MY_PG_COMPILE/configure --prefix=$PGHOME --without-readline" >/dev/null 2>&1

cd $MY_PG_COMPILE

su - postgres -c "make -j 4 && make install" >/dev/null 2>&1

su - postgres -c "$PGHOME/bin/initdb -D $PGDATA -E UTF8 --locale=en_US.utf8 -U postgres" >/dev/null 2>&1

echo "3.2 PG Compile Installation."

## 3.3 配置数据库参数

su - postgres -c "

cat >> $PGDATA/postgresql.conf <<EOF

listen_addresses = '*'

port=5432

logging_collector = on

log_directory = 'pg_log'

log_filename = 'postgresql-%a.log'

log_truncate_on_rotation = on

EOF

"

echo "postgresql.conf successfully"

su - postgres -c "

cat > $PGDATA/pg_hba.conf << EOF

# TYPE  DATABASE    USER    ADDRESS       METHOD

local     all       all                    trust

host      all       all   127.0.0.1/32     trust

host      all       all    0.0.0.0/0      md5

host   replication  all    0.0.0.0/0      md5

local  replication  all                    trust

EOF

"

echo "pg_hba.conf successfully"

systemctl start ntpd  >/dev/null 2>&1 

systemctl enable ntpd  >/dev/null 2>&1

echo "3.3 Configure database parameters successfully"

```

## 3.MySQL脚本

```

【脚本说明】

1、下载MySQL二进制安装包后上传到/opt目录下

2、ISO系统镜像需要挂载,后期用于YUM

3、脚本中最后修了root密码为:Jeames@007

4、脚本中配置了二进制自启动数据库到服务

直接执行脚本,自动化安装,本脚本适用于Linux7,

其他操作系统可能涉及yum的配置不同,请自行修改

脚本创作不易,请多多支持!

```


```

#!/bin/bash

#==============================================================#

# 脚本名     :   MySQL_GENERIC.sh

# 创建时间   :   2024-03-08 22:00:00

# 更新时间   :   2025-02-10 10:00:00

# 描述      :    MySQL数据库二进制一键安装脚本(单机)

# Linux系统 :    Liunx7

# MySQL版本 :    8.0.27

# 脚本路径   :   /opt

# 版本      :   3.0.0

# 作者      :   公众号:IT邦德,Oracle ACE

# 说明      :   其他版本替换相应的二进制包即可

#==============================================================#

#==============================================================#

#                         基础参数                              #

#==============================================================#

##需要设置的参数

#本机服务器IP

export MY_SERVER_IP=192.168.3.10

#本机服务器主机名

export MY_HOSTNAME=mysql

#MySQL相关RPM包上传根目录

export MY_SOFT_BASE=/opt

#MySQL二进制包

export MY_HOME=/mysql

export MY_SOFT=mysql-8.0.27-linux-glibc2.12-x86_64.tar.xz

## ISO系统镜像存放目录

export MY_DIRECTORY_ISO=/opt

##MySQL二进制包存放的目录

export MY_DIRECTORY_SOFT=$MY_SOFT_BASE

##MySQL脚本存放的目录

export MY_DIRECTORY_SCRIPT=$MY_SOFT_BASE

##判断安装包是否上传

if [ -f $MY_DIRECTORY_SOFT/$MY_SOFT ]; then 

    echo "MySQL GENERIC Soft Already Upload"

else

    echo "Please Upload MySQL GENERIC Soft First"

    exit

fi

#==============================================================#

#                        挂载光驱                               #

#==============================================================#

## 1.将ISO系统镜像上传到系统

## 2.将数据库软件上传到系统

## 确认是否有光驱设备

echo " "

MY_ISO=`mount | grep iso9660`

if [ ! -n "$MY_ISO" ];then

    echo "Please Mount A CD ISO Image First"

    exit

else

    mount /dev/cdrom /mnt/ >/dev/null 2>&1

    echo "Mount A CD ISO Image Already"

fi

#==============================================================#

#           1.本地yum配置                                       #

#==============================================================#

mkdir -p /tmp/confbak/yumbak/

mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1

## 确认操作系统的版本,配置yum

if [ -f /etc/os-release ]; then

    . /etc/os-release

    echo "Distribution: $ID"

    echo "Version: $VERSION_ID"

    if [ "$ID" = "8" ];then

        echo "[localREPO]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/BaseOS" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo


        echo "[localREPO_APP]" >> /etc/yum.repos.d/my.repo

        echo "name=localhost8_app" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/AppStream" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    else

        echo "[Oracle]" >> /etc/yum.repos.d/my.repo

        echo "name=oracle_install" >> /etc/yum.repos.d/my.repo

        echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo

        echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

        echo "enabled=1" >> /etc/yum.repos.d/my.repo

    fi

else

    echo "No OS Release file found."

fi

yum -y install bc  >/dev/null 2>&1

echo "1 Configure yum Completed."

#==============================================================#

#           2.安装前准备工作                                     #

#==============================================================#

## 2.1 设置主机名

hostnamectl set-hostname $MY_HOSTNAME

sed -i '/^HOSTNAME=/d' /etc/sysconfig/network

echo "HOSTNAME=$MY_HOSTNAME" >> /etc/sysconfig/network

echo "2.1 Configure hostname completed."

## 2.2 修改hosts

cp /etc/hosts /tmp/confbak

cat >> /etc/hosts <<EOF

$MY_SERVER_IP $MY_HOSTNAME

EOF

echo "2.2 Configure Hosts Completed."

## 2.3 安装MySQL依赖

yum -y install ntp ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make >/dev/null 2>&1

echo "2.3 Install MySQL dependency Completed."

## 2.4 关闭防火墙

systemctl stop firewalld.service  >/dev/null 2>&1

systemctl disable firewalld.service  >/dev/null 2>&1 

systemctl status firewalld.service  >/dev/null 2>&1

echo "2.4 Disable Firewalld Service Completed."

## 2.5 关闭SELinux

sed -i '/^SELINUX=/d' /etc/selinux/config

echo "SELINUX=disabled" >> /etc/selinux/config

# cat /etc/selinux/config|grep "SELINUX=disabled"

setenforce 0 >/dev/null 2>&1

echo "2.5 close SELinux completed."

## 2.6 建立用户和组

if id -u mysql >/dev/null 2>&1; then

    echo "mysql User Exists."

else

    groupadd -g 60000 mysql  >/dev/null 2>&1

    useradd -u 60000 -g mysql mysql >/dev/null 2>&1

    echo mysql | passwd --stdin mysql  >/dev/null 2>&1

    echo "2.6 User mysql Created Completed."

fi

echo "2.6 Establish users and groups Completed."

## 2.7 创建相关目录

mkdir -p $MY_HOME/{app,conf}

mkdir -p $MY_HOME/data/mysql3306/{pid,socket,log,binlog,errlog,relaylog,slowlog,tmp}

chown -R mysql:mysql $MY_HOME

chmod -R 775 $MY_HOME

echo "2.7 MySQL Directories Created Completed."

## 2.8 修改MySQL用户环境变量

echo 'export PS1="[\u@\h \W]\$"'  >> /home/mysql/.bash_profile


cat >> /home/mysql/.bash_profile <<EOF

export MYSQL_HOME=$MY_HOME/app/mysql

export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$MY_HOME/app/mysql/bin

EOF


source /home/mysql/.bash_profile > /dev/null


echo "2.8 Configure MySQL Env Completed."

#==============================================================#

#           3.MySQL数据库安装工作                                    #

#==============================================================#

## 3.1 解压数据库软件

echo "3.1 Start Unzip MySQL Software."

cp $MY_DIRECTORY_SOFT/$MY_SOFT $MY_HOME/app

cd $MY_HOME/app

tar xvf $MY_HOME/app/$MY_SOFT

mv ${MY_SOFT/%.tar.xz/} mysql

chown -R mysql:mysql $MY_HOME/app

chmod 755 -R $MY_HOME/app

echo "3.1 Unzip MySQL Software Completed."

## 3.2 配置数据库参数

su - mysql -c "

cat >> $MY_HOME/conf/mysql.cnf <<EOF

[mysqld]

server_id = 803306

default-storage-engine= InnoDB

socket=/tmp/mysql.sock

basedir=$MY_HOME/app/mysql

datadir=$MY_HOME/data/mysql3306/data/

log-error=$MY_HOME/data/mysql3306/log/mysqld.log

pid-file=$MY_HOME/data/mysql3306/pid/mysqld.pid

port=3306

default_authentication_plugin=mysql_native_password

transaction_isolation=READ-COMMITTED

max_connections=1500

back_log=500

wait_timeout=1800

max_user_connections=800

innodb_buffer_pool_size=1024M

innodb_log_file_size=512M

innodb_log_buffer_size=40M

slow_query_log=ON

long_query_time=5

# log settings #

slow_query_log = ON

slow_query_log_file = $MY_HOME/data/mysql3306/slowlog/slow3306.log

log_error = $MY_HOME/data/mysql3306/errlog/err3306.log

log_error_verbosity = 3

log_bin = $MY_HOME/data/mysql3306/binlog/mysql_bin

log_bin_index = $MY_HOME/data/mysql3306/binlog/mysql_binlog.index

general_log_file = $MY_HOME/mysql/mysql3306/generallog/general.log

log_queries_not_using_indexes = 1

log_slow_admin_statements = 1

expire_logs_days = 90

binlog_expire_logs_seconds = 2592000

long_query_time = 2

min_examined_row_limit = 100

log_throttle_queries_not_using_indexes = 1000

innodb_flush_log_at_trx_commit=1

EOF

"

echo "3.2 mysql.cnf successfully"

## 3.3 MySQL二进制安装

su - mysql -c "mysqld --defaults-file=$MY_HOME/conf/mysql.cnf --initialize --user=mysql --basedir=$MY_HOME/app/mysql --datadir=$MY_HOME/data/mysql3306/data/

" >/dev/null 2>&1


rm -rf /etc/systemd/system/mysql.service

systemctl daemon-reload


cat > /etc/systemd/system/mysql.service <<EOF

[Unit]

Description=MySQL Server

After=network.target

[Service]

#二进制启动mysqld的命令

ExecStart=$MY_HOME/app/mysql/bin/mysqld_safe --defaults-file=$MY_HOME/conf/mysql.cnf  

ExecStop=$MY_HOME/app/mysql/bin/mysqladmin -u root -p shutdown

User=mysql

Group=mysql

Restart=always


[Install]

WantedBy=multi-user.target

EOF


systemctl daemon-reload

systemctl enable mysql.service

systemctl start mysql.service


echo "3.3 MySQL Compile Installation."

systemctl start ntpd  >/dev/null 2>&1 

systemctl enable ntpd  >/dev/null 2>&1


## 3.4 修改密码

Pass=$(grep 'A temporary password' $MY_HOME/data/mysql3306/errlog/err3306.log |awk '{print $NF}')

echo -e "mysql default passwd is: ${Pass}"

# 修改密码,请执行以下语句

echo -e "alter user root@'localhost' identified with mysql_native_password by 'root';"

echo "Configure database parameters successfully"

```


## 4. SQL server脚本

```

【脚本说明】

1、下载SQL server RPM包上传到/opt目录下

2、建议服务器内存需≥4GB,建议swap空间≥2GB

3. SQL server RPM可以通过官网下载

https://learn.microsoft.com/zh-cn/

直接执行脚本,自动化安装,本脚本适用于Linux7,

其他操作系统可能涉及yum的配置不同,请自行修改

脚本创作不易,请多多支持!

```

```

#!/bin/bash

#==============================================================#

# 脚本名     :   mssql_offline.sh

# 创建时间   :   2024-03-08 22:00:00

# 更新时间   :   2025-02-10 10:00:00

# 描述      :    SQL Server离线安装脚本

# Linux系统 :    Liunx7

# 脚本路径   :   /opt

# 版本      :   3.0.0

# 作者      :   公众号:IT邦德,Oracle ACE

# 说明      :   其他版本替换相应的二进制包即可

#==============================================================#


#==============================================================#

#                        挂载光驱                               #

#==============================================================#

## 确认是否有光驱设备

echo " "

MY_ISO=`mount | grep iso9660`

if [ ! -n "$MY_ISO" ];then

    echo "Please Mount A CD ISO Image First"

    exit

else

    mount /dev/cdrom /mnt/ >/dev/null 2>&1

    echo "Mount A CD ISO Image Already"

fi


#==============================================================#

#           本地yum配置                                         #

#==============================================================#

mkdir -p /tmp/confbak/yumbak/

mv /etc/yum.repos.d/*  /tmp/confbak/yumbak/  >/dev/null 2>&1

## 确认操作系统的版本,配置yum

echo "[mssql]" >> /etc/yum.repos.d/my.repo

echo "name=mssql_install" >> /etc/yum.repos.d/my.repo

echo "baseurl=file:///mnt/" >> /etc/yum.repos.d/my.repo

echo "gpgcheck=0" >> /etc/yum.repos.d/my.repo

echo "enabled=1" >> /etc/yum.repos.d/my.repo



# 强制root权限运行

if [[ $EUID -ne 0 ]]; then

   echo "必须使用root权限运行" >&2

   exit 1

fi


# 配置参数(安装前需修改)

INSTALL_DIR="/opt"   # 离线包存放路径

SA_PASSWORD="Your@StrongPwd123"    # 需包含大小写+数字+特殊字符

INSTALL_MODE="Evaluation"

TCP_PORT=1433


# 安装日志记录

yum install tree >/dev/null 2>&1

rm -rf /var/offline_install.log

touch /var/offline_install.log 

LOG_FILE="/var/offline_install.log"


# 校验离线包完整性

echo "1.校验离线安装包"

REQUIRED_FILES=(

  "mssql-server-*.rpm"         # 主程序包

  "mssql-tools-*.rpm"          # 命令行工具

  "unixODBC-*.rpm"             # 关键依赖

)

for file in "${REQUIRED_FILES[@]}"; do

  if ! ls $INSTALL_DIR/$file &> /dev/null; then

    echo "缺失文件:$file,请检查$INSTALL_DIR目录" >&2

    exit 1

  fi

done


# 安装基础依赖

echo "2.安装系统依赖"

yum install -y gcc glibc-devel libstdc++-devel >/dev/null 2>&1

yum -y install firewalld policycoreutils-python libsss_nss_idmap libatomic python3 >> $LOG_FILE 2>&1 || {

  echo "依赖安装失败,请检查离线包中的ODBC等组件"; exit 1

}


# 安装主程序(自动处理依赖顺序)

echo "3.安装SQL Server组件..."

##yum remove mssql-server -y

##rm -rf /var/opt/mssql/

rpm -ivh $INSTALL_DIR/unixODBC-*.rpm >> $LOG_FILE 2>&1

rpm -ivh $INSTALL_DIR/mssql-server-*.rpm >> $LOG_FILE 2>&1

rpm -ivh $INSTALL_DIR/msodbcsq*.rpm >> $LOG_FILE 2>&1


# 初始配置

echo "4.运行初始配置"

sudo MSSQL_SA_PASSWORD=$SA_PASSWORD \

MSSQL_PID=$INSTALL_MODE \

MSSQL_TCP_PORT='1433' \

ACCEPT_EULA=Y \

/opt/mssql/bin/mssql-conf -n setup


# 防火关闭

echo "5.关闭防火墙"

systemctl stop firewalld.service  >/dev/null 2>&1

systemctl disable firewalld.service  >/dev/null 2>&1 

systemctl status firewalld.service  >/dev/null 2>&1


## 关闭SELinux

sed -i '/^SELINUX=/d' /etc/selinux/config

echo "SELINUX=disabled" >> /etc/selinux/config

# cat /etc/selinux/config|grep "SELINUX=disabled"

setenforce 0 >/dev/null 2>&1


# 验证安装

echo "6.验证服务状态"

if ! systemctl is-active mssql-server &> /dev/null; then

  echo "服务未运行,检查日志:/var/opt/mssql/log/errorlog" >&2

  exit 1

fi


# 安装命令行工具

echo "7.安装SQLCMD工具"

rpm -ivh $INSTALL_DIR/mssql-tools-*.rpm >> $LOG_FILE 2>&1

cat << EOF >> /etc/profile.d/mssql.sh

export PATH=\$PATH:/opt/mssql-tools/bin

EOF


source /etc/profile.d/mssql.sh


echo "8.安装成功!连接命令"

echo "sqlcmd -S localhost -U sa -P '$SA_PASSWORD'"

echo "详细日志:$LOG_FILE"

```


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69947868/viewspace-3075254/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国DBA联盟(ACDU)成员,Oracle PostgreSQL ACE,CSDN博客专家及B站知名UP主,全网粉丝10万+,目前服务于工业互联网,擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复,安装迁移,性能优化、故障应急处理。

注册时间:2020-06-13

  • 博文量
    203
  • 访问量
    212520