欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CentOS7.x使用shell脚本实现使用mysql_multi自动安装MySQL5.7.28多实例

程序员文章站 2024-02-10 13:08:34
...

在我的前一篇文章中描述了手动安装mysql多实例的过程,今天这一章节,我将它的手动安装过程,编写成脚本来自动安装:
mysql_multi手动部署MySQL5.7.28多实例

以下是脚本中的几点说明:1、mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz包上传路径: /opt如果没有此软件包,请将此脚本中如下代码行去掉 # 号注释,自动联网下载(下载过程很慢,建议提前下载并上传到/opt路径下)

wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

2、mysql数据库脚本上传路径: /opt 包含如下文件(需要修改sql文件中的实例名)

testone.sql
testtwo.sql

4、根据服务器磁盘分配情况,创建对应软链接,例如:

mkdir /home/data
ln -s /home/data/ /data

5、修改(确保局域网内值唯一)

mysql3306.cnf 的 server_id = 3306
mysql3307.cnf 的 server_id = 3307

6、注意修改预设的root密码与apps应用连接密码

Multi_PWD="Multi.db"

dbone_appspwd="testone3306"
dbtwo_appspwd="testtwo3307"

7、修改testone.sql数据库实例 testone 用户名 testone 及对应的密码 testone3306

create database testone default character set utf8 collate utf8_bin;
grant select,insert,update,delete,create,execute on testone.* to 'testone'@'%' identified by 'testone3306';

8、修改testone.sql导入数据库时的数据库实例名 testone

$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbOneSockfile} --comments testone < testone.sql

9、修改testtwo.sql数据库实例 testtwo 用户名 testtwo 及对应的密码 testtwo3307

create database testtwo default character set utf8 collate utf8_bin;
grant select,insert,update,delete,create,execute on testtwo.* to 'testtwo'@'%' identified by 'testtwo3307';

10、修改testtwo.sql导入数据库时的数据库实例名 testtwo

$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbTwoSockfile} --comments testtwo < testtwo.sql
#!/bin/bash
################################################################################################
# Install software -- Install Mysql 5.7 on CentOS 7
# Author:Danrtsey
# mail:[email protected]
# History: 2020/01/15 Asa release
################################################################################################
[ -f /etc/init.d/functions ]&& . /etc/init.d/functions

###Check if user is root
if [ $UID -ne 0 ]; then
    echo "Error: This script must be executed as root."
    exit 1
fi

echo "################################################################################################"
echo "                      自动安装   MySQL 5.7      on Redhat/CentOS Linux                           "
echo "################################################################################################"

#set mysql root password
echo "#########################       预设 Mysql root用户密码           ###############################"
Multi_PWD="Multi.db"

#set mysql apps password
echo "#########################       预设 Mysql apps用户密码           ###############################"
dbone_appspwd="testone3306"
dbtwo_appspwd="testtwo3307"

echo "################################       定义目录路径      #######################################"

##define mysql directory configuration variable
DbOneDatadir=/data/mysql/dbone3306/data
DbOneBinlogdir=/data/mysql/dbone3306/binlog
DbOneLogdir=/data/mysql/dbone3306/logs
DbOneSockfile=/data/mysql/dbone3306/mysql3306.sock
DbOnepidfile=/data/mysql/dbone3306/mysqld3306.pid

DbTwoDatadir=/data/mysql/dbtwo3307/data
DbTwoBinlogdir=/data/mysql/dbtwo3307/binlog
DbTwoLogdir=/data/mysql/dbtwo3307/logs
DbTwoSockfile=/data/mysql/dbtwo3307/mysql3307.sock
DbTwopidfile=/data/mysql/dbtwo3307/mysqld3307.pid

BaseDir=/usr/local/mysql
MYSQL_CMD_DIR=$BaseDir/bin
Mycnf=/etc/my.cnf
Dbdir=/data
Softwaredir=/opt

mkdir -pv /data/mysql/{dbone3306,dbtwo3307}
mkdir -v /data/mysql/dbone3306/{logs,data,binlog}
mkdir -v /data/mysql/dbtwo3307/{logs,data,binlog}

echo "################################################################################################"
echo "                                        修改系统参数                                             "
echo "################################################################################################"

###set the ip in hosts
hostsset() {
echo "############################   Ip&Hosts Configuration  #######################################"
hostname=`hostname`
ip=`ip a|grep 'inet '|grep -v '127.0.0.1'|awk '{print $2}'|awk -F '/' '{print $1}'`
for i in ${ip}
do
    a=`grep "${i}" /etc/hosts`
    if [ ! -n "${a}" ];then
        echo "${i} ${hostname}" >> /etc/hosts 
    else
        break
    fi
done
}

ntp() {
yum -y install ntp >/dev/null 2>&1
systemctl enable ntpd
echo 'server ntp1.aliyun.com' >> /etc/ntp.conf
echo 'server ntp2.aliyun.com' >> /etc/ntp.conf
systemctl start ntpd
if [ $? != 0 ]; then
   errorExit 'ntp 启动未成功'
   exit 2
fi
  return 0
}

syspro() {
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
setenforce 0
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
echo 'LANG="en_US.UTF-8"' >> /etc/profile && source /etc/profile

cat >>/etc/security/limits.conf<<EOF
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
EOF

cat >> /etc/sysctl.conf<<EOF
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_keepalive_intvl = 30
net.ipv4.tcp_keepalive_probes = 3
vm.swappiness = 0
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.neigh.default.gc_thresh1=4096
net.ipv4.neigh.default.gc_thresh2=6144
net.ipv4.neigh.default.gc_thresh3=8192
kernel.shmmax = 25769803774
kernel.shmmni = 4096
kernel.shmall = 16777216
kernel.sem = 1010 129280 1010 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
fs.aio-max-nr = 1048576
fs.file-max = 6815744
EOF
modprobe br_netfilter
sysctl -p
}

fwport() {
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --permanent --zone=public --add-port=3307/tcp
firewall-cmd --reload
}

clean() {
echo "################################    删除旧Mysql、Maria    #######################################"
    rpm -qa|grep mysql
    rpm -qa|grep mariadb
    yum -y remove mysql* >/dev/null 2>&1
    yum -y remove mariadb* >/dev/null 2>&1
if [ $? -eq 0 ];then
   echo -e " \033[32m mariadb remove success!! \033[0m"
else
  echo -e "\e[31;47;5m mariadb remove failed!! \e[0m"
  exit 3  
fi

#Backup old my.cnf
if [ -s /etc/my.cnf ]; then
    mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
fi
}

# 添加用户和组
addusers() {
grep mysql /etc/passwd
RETVAL=$?
if [ $RETVAL -ne 0 ];then
   groupadd mysql
   useradd mysql -g mysql -s /sbin/nologin -M

     action "mysql user added successfully" /bin/true
  else
      action " $(echo -e " mysql user already exists ")" /bin/true
      exit 4
fi

cat >> /etc/profile<<EOF
if [ $USER = "mysql" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
EOF
source /etc/profile
}

#install mysql-5.7.28
dbinstall() {
echo "################################       开始下载安装      #######################################"
yum -y install bzr zlib-devel gcc-c++ ncurses ncurses-devel libev make cmake gcc autoconf automake zlib libxml libgcrypt libtool bison perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-Digest-MD5 rsync perl-Data-Dumper net-tools wget vim openssl openssl-devel >/dev/null 2>&1
if [ $? -eq 0 ];then
   echo -e " \033[32m yum install success!! \033[0m"
else
  echo -e "\e[31;47;5m yum install failed!! \e[0m"
  exit 5  
fi
cd $Softwaredir
#wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
tar xf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
if [ $? -eq 0 ];then
   echo -e " \033[32m tar.gz decompression success!! \033[0m"
else
  echo -e "\e[31;47;5m tar.gz decompression failed!! \e[0m"
  exit 6  
fi
mv mysql-5.7.28-linux-glibc2.12-x86_64 $BaseDir

chown -R mysql:mysql $BaseDir
chown -R mysql:mysql $Dbdir
}

#set my.cnf configfile
setmycnf() {
echo "################################    配置  my.cnf      #######################################"
cat >$Mycnf<<EOF
[mysqld_multi]
mysqld     = ${BaseDir}/bin/mysqld
mysqladmin = ${BaseDir}/bin/mysqladmin
log = /data/mysql/mysqld_multi.log 
#user=root
#pass=

[mysql]
prompt="\[email protected] \R:\m:\s [\d]> "
no-auto-rehash

[mysqld3306]
user                                = mysql
port                                = 3306
symbolic-links                      = 0
#basedir                             = /usr/
datadir                             = ${DbOneDatadir}
socket                              = ${DbOneSockfile}
pid-file                            = ${DbOnepidfile}
server_id                           = 3306
character_set_server                = utf8
max_connections                     = 1000
skip_name_resolve                   = 1
open_files_limit                    = 65536
thread_cache_size                   = 64
table_open_cache                    = 4096
table_definition_cache              = 1024
table_open_cache_instances          = 64
max_prepared_stmt_count             = 1048576
explicit_defaults_for_timestamp     = true
log_timestamps                      = system

binlog_format                       = row
log_bin                           = ${DbOneBinlogdir}/mysql-bin
binlog_rows_query_log_events        = on
expire_logs_days                    = 7
binlog_cache_size                   = 4M
max_binlog_cache_size               = 2G
max_binlog_size                     = 1G
sync_binlog                         = 1
log_bin_trust_function_creators     = 1

slow_query_log                      = on
slow_query_log_file                 = ${DbOneDatadir}/slow.log
log-error                           = ${DbOneLogdir}/error.log
log_queries_not_using_indexes      = on
long_query_time                     = 1.000000

gtid_mode                           = on
enforce_gtid_consistency            = on

default_storage_engine              = innodb
default_tmp_storage_engine          = innodb
innodb_data_file_path               = ibdata1:12M:autoextend:max:2000M
innodb_temp_data_file_path          = ibtmp1:12M:autoextend:max:2000M
innodb_buffer_pool_filename         = ib_buffer_pool
innodb_log_files_in_group           = 3
innodb_log_file_size                = 512M
innodb_online_alter_log_max_size    = 1024M
innodb_open_files                   = 4096
innodb_page_size                    = 16k
innodb_thread_concurrency           = 0
innodb_read_io_threads              = 4
innodb_write_io_threads             = 4
innodb_purge_threads                = 4
innodb_page_cleaners                = 4
innodb_print_all_deadlocks          = on
innodb_lock_wait_timeout            = 20
innodb_spin_wait_delay              = 128
innodb_autoinc_lock_mode            = 2
innodb_io_capacity                  = 200
innodb_io_capacity_max              = 2000
#innodb_flush_neighbors             = 
innodb_log_buffer_size              = 8M
innodb_flush_log_at_timeout         = 1
innodb_flush_log_at_trx_commit      = 2
innodb_buffer_pool_size             = 1024M
innodb_buffer_pool_instances        = 4
autocommit                          = 1
innodb_buffer_pool_dump_pct         = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup  = ON

[mysqld3307]
user                                = mysql
port                                = 3307
symbolic-links                      = 0
lower_case_table_names              = 1
#basedir                             = /usr/
datadir                             = ${DbTwoDatadir}
socket                              = ${DbTwoSockfile}
pid-file                            = ${DbTwopidfile}
server_id                           = 3307
character_set_server                = utf8
max_connections                     = 1000
skip_name_resolve                   = 1
open_files_limit                    = 65536
thread_cache_size                   = 64
table_open_cache                    = 4096
table_definition_cache              = 1024
table_open_cache_instances          = 64
max_prepared_stmt_count             = 1048576
explicit_defaults_for_timestamp     = true
log_timestamps                      = system

binlog_format                       = row
log_bin                            = ${DbTwoBinlogdir}/mysql-bin
binlog_rows_query_log_events        = on
expire_logs_days                    = 7
binlog_cache_size                   = 4M
max_binlog_cache_size               = 2G
max_binlog_size                     = 1G
sync_binlog                         = 1

slow_query_log                      = on
slow_query_log_file                 = ${DbTwoDatadir}/slow.log
log-error                           = ${DbTwoLogdir}/error.log
log_queries_not_using_indexes      = on
long_query_time                     = 1.000000

gtid_mode                           = on
enforce_gtid_consistency            = on

default_storage_engine              = innodb
default_tmp_storage_engine          = innodb
innodb_data_file_path               = ibdata1:12M:autoextend:max:2000M
innodb_temp_data_file_path          = ibtmp1:12M:autoextend:max:2000M
innodb_buffer_pool_filename         = ib_buffer_pool
innodb_log_files_in_group           = 3
innodb_log_file_size                = 512M
innodb_online_alter_log_max_size    = 1024M
innodb_open_files                   = 4096
innodb_page_size                    = 16k
innodb_thread_concurrency           = 0
innodb_read_io_threads              = 4
innodb_write_io_threads             = 4
innodb_purge_threads                = 4
innodb_page_cleaners                = 4
innodb_print_all_deadlocks          = on
innodb_lock_wait_timeout            = 20
innodb_spin_wait_delay              = 128
innodb_autoinc_lock_mode            = 2
innodb_io_capacity                  = 200
innodb_io_capacity_max              = 2000
#innodb_flush_neighbors             = 
innodb_log_buffer_size              = 8M
innodb_flush_log_at_timeout         = 1
innodb_flush_log_at_trx_commit      = 2
innodb_buffer_pool_size             = 1024M
innodb_buffer_pool_instances        = 4
autocommit                          = 1
innodb_buffer_pool_dump_pct         = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup  = ON

[mysqldump]
quick
max_allowed_packet = 32M
EOF
}

#dbone initialize
dboneinitialize() {
echo "################################      dbone 初始化     #######################################"
$MYSQL_CMD_DIR/mysqld --defaults-file=$Mycnf --initialize --basedir=$BaseDir --user=mysql --datadir=$DbOneDatadir > $DbOneLogdir/error.log 2>&1
if [ $? -eq 0 ];then
   echo -e " \033[32m dbone initialize success!! \033[0m"
else
  echo -e "\e[31;47;5m dbone initialize failed!! \e[0m"
  exit 7  
fi
less $DbOneLogdir/error.log|grep 'A temporary password is generated for [email protected]:'
A=$?
count=0
while [ $count -lt 10 ]
do
    if [ $A -eq 0 ];then
        echo -e " \033[32m mysql initialize success!! \033[0m"
        break
    else
        echo -e "\e[31;47;5m the result is null,check again!! \e[0m"
        count=$[${count}+1]
    fi
done

#create ssl_rsa
echo "################################      dbone 生成ssl授权     #######################################"
$MYSQL_CMD_DIR/mysql_ssl_rsa_setup --user=mysql --basedir=$BaseDir --datadir=$DbOneDatadir
if [ $? -eq 0 ];then
   echo -e " \033[32m create ssl_rsa success!! \033[0m"
else
  echo -e "\e[31;47;5m create ssl_rsa failed!! \e[0m"
  exit 8
fi
}

#dbtwo initialize
dbtwoinitialize() {
echo "################################      dbtwo 初始化     #######################################"
$MYSQL_CMD_DIR/mysqld --defaults-file=$Mycnf --initialize --basedir=$BaseDir --user=mysql --datadir=$DbTwoDatadir > $DbTwoLogdir/error.log 2>&1
if [ $? -eq 0 ];then
   echo -e " \033[32m dbtwo initialize success!! \033[0m"
else
  echo -e "\e[31;47;5m dbtwo initialize failed!! \e[0m"
  exit 9
fi
less $DbTwoLogdir/error.log|grep 'A temporary password is generated for [email protected]:'
B=$?
count=0
while [ $count -lt 10 ]
do
    if [ $B -eq 0 ];then
        echo -e " \033[32m mysql initialize success!! \033[0m"
        break
    else
        echo -e "\e[31;47;5m the result is null,check again!! \e[0m"
        count=$[${count}+1]
    fi
done

#create ssl_rsa
echo "################################      dbtwo 生成ssl授权     #######################################"
$MYSQL_CMD_DIR/mysql_ssl_rsa_setup --user=mysql --basedir=$BaseDir --datadir=$DbTwoDatadir
if [ $? -eq 0 ];then
   echo -e " \033[32m create ssl_rsa success!! \033[0m"
else
  echo -e "\e[31;47;5m create ssl_rsa failed!! \e[0m"
  exit 10
fi
}

# start dbone service && change tmptroot pwd
dbonestart() {
echo "################################      dbone 服务启动     #######################################"
cat << EOF >> /etc/profile
export PATH=\$PATH:${BaseDir}/bin
EOF
source /etc/profile
chown -R mysql:mysql $DbOneLogdir
$MYSQL_CMD_DIR/mysqld_multi start 3306
if [ $? -eq 0 ];then
count=0
while [ $count -lt 120 ]
do
cat $DbOneLogdir/error.log |grep '/data/mysql/dbone3306/mysql3306.sock'
C=$?
    if [ $C -eq 0 ];then
        echo -e " \033[32m dbone start success!! \033[0m"
        break
    else
        count=$[${count}+1]
        echo -e "\e[31;47;5m 3306 is not exist check the $count time!! \e[0m"
        sleep 1
    fi
done
else
  echo -e "\e[31;47;5m dbone use mysqld_multi start failed,please check the error.log !! \e[0m"
  cat $DbOneLogdir/error.log |grep ERROR
  exit 11
fi

echo "################################   获取 dbone root用户临时密码     #######################################"
DbOnedbTempPass=$(less $DbOneLogdir/error.log|grep 'A temporary password is generated for [email protected]:' |awk  '{print $NF}')
echo $DbOnedbTempPass

echo "################################     自动修改 dbone root用户初始密码       ###############################"
$MYSQL_CMD_DIR/mysqladmin -uroot -p"$DbOnedbTempPass" -S $DbOneSockfile password $Multi_PWD
if [ $? -eq 0 ];then
   echo -e " \033[32m dbone rootpwd changed success!! \033[0m"
else
  echo -e "\e[31;47;5m dbone rootpwd changed failed!! \e[0m"
  exit 12
fi

echo "################################     验证 dbone root用户初始密码       ###############################"
MYSQL_CMD="$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbOneSockfile}"
$MYSQL_CMD -e "show databases;" | grep information_schema
if [ $? -eq 0 ];then
   echo -e " \033[32m dbone rootpwd is correct!! \033[0m"
else
  echo -e "\e[31;47;5m dbone rootpwd is  wrong!! \e[0m"
  exit 13
fi

echo "################################  修改 my.cnf multi 启动用户与密码  #######################################"
sed -i "[email protected]^#[email protected][email protected]" /etc/my.cnf
sed -i "[email protected]^#[email protected]=${Multi_PWD}@g" /etc/my.cnf
if [ $? -eq 0 ];then
   echo -e " \033[32m my.cnf changed success!! \033[0m"
else
  echo -e "\e[31;47;5m my.cnf changed failed!! \e[0m"
  exit 14
fi

echo "################################   验证 dbone 服务关闭是否正常     #######################################"
$MYSQL_CMD_DIR/mysqld_multi stop 3306
netstat -tnlp|grep 3306
if [ $? -ne 0 ];then
   echo -e " \033[32m dbone stop success!! \033[0m"
else
  echo -e "\e[31;47;5m dbone stop failed!! \e[0m"
  exit 15
fi
}

# start dbtwo service && change tmptroot pwd
dbtwostart() {
echo "################################      dbtwo 服务启动     #######################################"
source /etc/profile
chown -R mysql:mysql $DbTwoLogdir
$MYSQL_CMD_DIR/mysqld_multi start 3307
if [ $? -eq 0 ];then
count=0
while [ $count -lt 120 ]
do
cat $DbTwoLogdir/error.log |grep '/data/mysql/dbtwo3307/mysql3307.sock'
D=$?
    if [ $D -eq 0 ];then
        echo -e " \033[32m dbtwo start success!! \033[0m"
        break
    else
        count=$[${count}+1]
        echo -e "\e[31;47;5m 3307 is not exist check the $count time!! \e[0m"
        sleep 1
    fi
done
else
  echo -e "\e[31;47;5m dbtwo use mysqld_multi start failed,please check the error.log  !! \e[0m"
  cat $DbTwoLogdir/error.log |grep ERROR
  exit 16
fi

echo "################################  获取 dbtwo root用户临时密码     #######################################"
DbTwodbTempPass=$(less $DbTwoLogdir/error.log|grep 'A temporary password is generated for [email protected]:' |awk  '{print $NF}')
echo $DbTwodbTempPass

echo "################################     自动修改 dbtwo root用户初始密码       ###############################"
$MYSQL_CMD_DIR/mysqladmin -uroot -p"$DbTwodbTempPass" -S $DbTwoSockfile password $Multi_PWD
if [ $? -eq 0 ];then
   echo -e " \033[32m dbtwo rootpwd changed success!! \033[0m"
else
  echo -e "\e[31;47;5m dbtwo rootpwd changed failed!! \e[0m"
  exit 17
fi

echo "################################     验证 dbtwo root用户初始密码       ###############################"
MYSQL_CMD="$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbTwoSockfile}"
$MYSQL_CMD -e "show databases;" | grep information_schema
if [ $? -eq 0 ];then
   echo -e " \033[32m dbtwo rootpwd is correct!! \033[0m"
else
  echo -e "\e[31;47;5m dbtwo rootpwd is  wrong!! \e[0m"
  exit 18
fi

echo "################################   验证 dbtwo 服务关闭是否正常     #######################################"
$MYSQL_CMD_DIR/mysqld_multi stop 3307
netstat -tnlp|grep 3307
if [ $? -ne 0 ];then
   echo -e " \033[32m dbtwo stop success!! \033[0m"
else
  echo -e "\e[31;47;5m dbtwo stop failed!! \e[0m"
  exit 19
fi
}

dboneimp() {
echo "###############################  再次重启 dbone 数据库确认系统服务正常  ##################################"
source /etc/profile
cat >$DbOneLogdir/error.log<<EOF
use the mysqld_multi to  start the dbone again
EOF
chown -R mysql:mysql $DbOneLogdir

$MYSQL_CMD_DIR/mysqld_multi start 3306
if [ $? -eq 0 ];then
count=0
while [ $count -lt 120 ]
do
cat $DbOneLogdir/error.log |grep '/data/mysql/dbone3306/mysql3306.sock'
E=$?
    if [ $E -eq 0 ];then
        echo -e " \033[32m dbone start success!! \033[0m"
        break
    else
        count=$[${count}+1]
        echo -e "\e[31;47;5m 3306 is not exist check the $count time!! \e[0m"
        sleep 1
    fi
done
else
  echo -e "\e[31;47;5m dbone use mysqld_multi start failed,please check the error.log !! \e[0m"
  cat $DbOneLogdir/error.log |grep ERROR
  exit 20
fi

echo "###############################        创建 testone 库           ##################################"
MYSQL_CMD="$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbOneSockfile}"
$MYSQL_CMD -e "create database testone default character set utf8 collate utf8_bin;grant select,insert,update,delete,create,alter,execute on testone.* to 'testone'@'%' identified by 'testone3306';flush privileges;" > /tmp/dbone_create.log
cat /tmp/dbone_create.log |grep "Table 'mysql.servers' doesn't exist"
if [ $? -eq 0 ]
 then
   echo -e "\e[31;47;5m 创建 testone 数据库失败!\e[0m"
   exit 21
fi
$MYSQL_CMD -e "show databases;" | grep testone
if [ $? -eq 0 ]
 then
   echo -e " \033[32m 创建 testone 数据库成功!! \033[0m"
else
   echo -e "\e[31;47;5m 创建 testone 数据库失败!\e[0m"
   exit 22
fi
echo "###############################           testone 导入数据            ##################################"
cd $Softwaredir
$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbOneSockfile} testone < testone.sql
if [ $? -eq 0 ]
 then
   echo -e " \033[32m 导入数据成功!! \033[0m"
else
   echo -e "\e[31;47;5m 导入数据失败!\e[0m"
   exit 23
fi
}

dbtwoimp() {
echo "###############################   再次重启 dbtwo 数据库确认系统服务正常   ##################################"
source /etc/profile
cat >$DbTwoLogdir/error.log<<EOF
use the mysqld_multi to  start the dbtwo again
EOF
chown -R mysql:mysql $DbTwoLogdir

$MYSQL_CMD_DIR/mysqld_multi start 3307
if [ $? -eq 0 ];then
count=0
while [ $count -lt 120 ]
do
cat $DbTwoLogdir/error.log |grep '/data/mysql/dbtwo3307/mysql3307.sock'
F=$?
    if [ $F -eq 0 ];then
        echo -e " \033[32m dbtwo start success!! \033[0m"
        break
    else
        count=$[${count}+1]
        echo -e "\e[31;47;5m 3307 is not exist check the $count time!! \e[0m"
        sleep 1
    fi
done
else
  echo -e "\e[31;47;5m dbtwo use mysqld_multi start failed,please check the error.log  !! \e[0m"
  cat $DbTwoLogdir/error.log |grep ERROR
  exit 24
fi

echo "###############################        创建 testtwo 库           ##################################"
MYSQL_CMD="$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbTwoSockfile}"
$MYSQL_CMD -e "create database testtwo default character set utf8 collate utf8_bin;grant select,insert,update,delete,create,alter,execute on testtwo.* to 'testtwo'@'%' identified by 'testtwo3307';flush privileges;" > /tmp/dbtwo_create.log
cat /tmp/dbtwo_create.log |grep "Table 'mysql.servers' doesn't exist"
if [ $? -eq 0 ]
 then
   echo -e "\e[31;47;5m 创建 testtwo 数据库失败!\e[0m"
   exit 25
fi
$MYSQL_CMD -e "show databases;" | grep testtwo
if [ $? -eq 0 ]
 then
   echo -e " \033[32m 创建 testtwo 数据库成功!! \033[0m"
else
   echo -e "\e[31;47;5m 创建 testtwo 数据库失败!\e[0m"
   exit 26
fi
echo "###############################           testtwo 导入数据            ##################################"
cd $Softwaredir
$MYSQL_CMD_DIR/mysql -uroot -p"${Multi_PWD}" -S ${DbTwoSockfile} testtwo < testtwo.sql
if [ $? -eq 0 ]
 then
   echo -e " \033[32m 导入数据成功!! \033[0m"
else
   echo -e "\e[31;47;5m 导入数据失败!\e[0m"
   exit 27
fi
}

main() {

hostsset

ntp

syspro

fwport

clean

addusers

dbinstall

setmycnf

dboneinitialize

dbtwoinitialize

dbonestart

dbtwostart

dboneimp

dbtwoimp
}

main

echo "#######################        安装完成 (请记录dbone数据库testone信息)          ##############################"
echo "root密码:"
echo -e "\e[31;47;5m $Multi_PWD \e[0m"
echo "数据库实例连接密码:"
echo -e "\e[30;47;5m $dbone_appspwd \e[0m"

echo "#######################        安装完成 (请记录dbtwo数据库testtwo信息)          ##############################"
echo "root密码:"
echo -e "\e[31;47;5m $Multi_PWD \e[0m"
echo "数据库实例连接密码:"
echo -e "\e[30;47;5m $dbtwo_appspwd \e[0m"

source /etc/profile
相关标签: MySQLDB mysql