前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bash安装部署MySQL

bash安装部署MySQL

原创
作者头像
DBM
修改2024-04-26 18:06:42
1040
修改2024-04-26 18:06:42
举报
文章被收录于专栏:MySQLMySQL
代码语言:bash
复制
#!/bin/bash
#------------------------------------------------
#Filename: create_mysql.sh
#Revision: 5.7
#Date:    2019/11/06
#explain:This script is used for one-click MySQL 
#deployment. You can upload the download address 
#to the script and download the version as required
#------------------------------------------------
url2="$1"
url=${url2:-"https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"};
# url="https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"
##配置环境目录
workDir="/tmp/crm"
mkdir ${workDir}/data -p
cd ${workDir};
wget_Status=`rpm -qa |grep -i "wget"|wc -l`;
if [[ ${wget_Status} == 0 ]]; then
    #statements
    yum install -y wget 
fi

if [[ $? != 0 ]]; then
    #statements
    echo "wget下载失败,请确认网络或者yum源无问题后重新执行次脚本" && exit -1;
fi
sql=${url##*/}
wget ${url} -O ${workDir}/${url##*/} 
tar xf ${workDir}/${url##*/} -C ${workDir}/;
mv  ${workDir}/${sql%.tar.gz} ${workDir}/mysql;
###环境检查
Mdb_Status=`rpm -qa |grep -i "mariadb"|wc -l`;
if [[ ${Mdb_Status} != 0 ]]; then
     yum remove mariadb -y
fi 
Path="export PATH=${workDir}/mysql/bin";
cat /etc/profile |grep ${Path} 2>/dev/null
if [[ $? != 0 ]]; then
    echo -n ${Path} >>/etc/profile
    echo  ':$PATH'  >>/etc/profile
    source /etc/profile
fi
##创建虚拟用户给目录授权
user_status=`cat /etc/passwd |awk -F ':' '{print $1}'|grep mysql|wc -l`;
if [[  ${user_status} -eq 0  ]]; then
    #statements
    useradd -s /bin/nologoin mysql
fi
    chown -R mysql.mysql ${workDir};
##初始化数据库
lib_Status=`rpm -qa |grep -i "libaio-devel"|wc -l`;
if [[ ${lib_Status} == 0 ]]; then
     yum install -y libaio-devel
fi 
mysqld --initialize-insecure --user=mysql --basedir=${workDir}/mysql --datadir=${workDir}/data
########/etc/my.cnf配置,参考参数如下
#cat >/etc/my.cnf<<EOF
#[mysqld]
#user=mysql
#basedir=/app/mysql
#datadir=/app/data
#socket=/tmp/mysql.sock
#server_id=6379
#port=3306
#character_set_server=utf8
#lower_case_table_names=1
#gtid_mode=ON
#enforce_gtid_consistency=ON
#binlog_format=ROW
#log_slave_updates=ON
#expire_logs_days=7
#log-bin=mysql-bin
#log_bin=/app/binlog/mysql-bin
#expire_logs_days=3
#server-id=1
#log_error =/var/log/mysql/error.log
#max_allowed_packet=16777216
#[mysql]
#socket=/tmp/mysql.sock
#EOF
cat >/etc/my.cnf<<EOF
[mysqld]
user=mysql
basedir=${workDir}/mysql
datadir=${workDir}/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
##配置启动方式,这里配置两种
#systemd
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=${workDir}/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
clear
mysqld_Status=`ps aux |grep "${workDir}/mysql/bin/mysqld --defaults-file=/etc/my.cnf"|wc -l`;
if [[ ${mysqld_Status} == 2 ]]; then
    echo '数据库安装并启动完成!!!';
else

    echo "未安装成功";
fi

  • 通过腾讯云CDB备份下载地址自动在本地进行物理恢复
代码语言:bash
复制
#!/bin/bash
#------------------------------------------------
#Filename: recover.sh
#Revision: 1.0
#Date:    2022/11/05
#Description:This is the data recovery script
#-------------------------------------------------
############################安装部署MySQL5.7.31####################################
#传参下载地址
if [[ "$1" == "" ]];then
echo "注意!请在脚本后面传入'下载地址'";
else
#url2="$1"
#url=${url2:-"https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"};
url="https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"

#工作目录
workDir="/tmp/crm"
mkdir ${workDir}/data -p
cd ${workDir};
wget_Status=`rpm -qa |grep -i "wget"|wc -l`;
if [[ ${wget_Status} == 0 ]]; then
#下载wget命令
yum install -y wget
fi

if [[ $? != 0 ]]; then
echo "wget下载失败,请确认网络或者yum源无问题后重新执行次脚本" && exit -1;
fi
sql=${url##*/}
wget ${url} -O ${workDir}/${url##*/}
tar xf ${workDir}/${url##*/} -C ${workDir}/;
mv  ${workDir}/${sql%.tar.gz} ${workDir}/mysql;
rm -rf ${workDir}/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
#初始化环境
Mdb_Status=`rpm -qa |grep -i "mariadb"|wc -l`;
if [[ ${Mdb_Status} != 0 ]]; then
yum remove mariadb -y
fi
Path="export PATH=${workDir}/mysql/bin:${workDir}/xbk/bin";
cat /etc/profile |grep ${Path} 2>/dev/null
if [[ $? != 0 ]]; then
echo -n ${Path} >>/etc/profile
echo  ':$PATH'  >>/etc/profile
source /etc/profile
fi


#创建虚拟用户给目录授权
user_status=`cat /etc/passwd |awk -F ':' '{print $1}'|grep mysql|wc -l`;
if [[  ${user_status} -eq 0  ]]; then
useradd -s /bin/nologoin mysql
fi
chown -R mysql.mysql ${workDir};
#初始化数据库
lib_Status=`rpm -qa |grep -i "libaio-devel"|wc -l`;
if [[ ${lib_Status} == 0 ]]; then
yum install -y libaio-devel
fi
mysqld --initialize-insecure --user=mysql --basedir=${workDir}/mysql --datadir=${workDir}/data
#设置/etc/my.cnf
cat >/etc/my.cnf<<EOF
[mysqld]
user=mysql
basedir=${workDir}/mysql
datadir=${workDir}/data
socket=/tmp/mysql.sock
server_id=666
port=3306
[mysql]
socket=/tmp/mysql.sock
EOF
#配置systemd启动方式
cat >/etc/systemd/system/mysqld.service <<EOF
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=${workDir}/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
EOF
systemctl daemon-reload
systemctl start mysqld
systemctl enable mysqld
clear
mysqld_Status=`ps aux |grep "${workDir}/mysql/bin/mysqld --defaults-file=/etc/my.cnf"|wc -l`;
if [[ ${mysqld_Status} == 2 ]]; then
echo '数据库安装并启动完成!';
else

echo "未安装成功";
fi
######################恢复数据#####################################
systemctl stop mysqld
#创建云上备份下载目录
mkdir ${workDir}/data1 -p
wget -c $1 -O ${workDir}/data1/test.xb
wget -c 'https://docs-tencentdb-1256569818.cos.ap-guangzhou.myqcloud.com/qpress-11-linux-x64.tar'
tar -xf qpress-11-linux-x64.tar -C /usr/local/bin
rm -rf qpress-11-linux-x64.tar
wget 'https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.7/binary/tarball/percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz'
tar -xf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz -C ${workDir}
mv percona-xtrabackup-2.4.7-Linux-x86_64 ${workDir}/xbk
rm -rf percona-xtrabackup-2.4.7-Linux-x86_64.tar.gz
cd ${workDir}/data1/
#数据解压
xbstream -x ${workDir}/data1/ < ${workDir}/data1/test.xb
xtrabackup  --remove-original --decompress --target-dir=${workDir}/data1/
#设置my.cnf文件
cat ${workDir}/data1/backup-my.cnf |grep -E "(mysqld|innodb_checksum_algorithm|innodb_data_file_path|innodb_log_files_in_group|innodb_log_file_size|innodb_page_size|server_id)" >1.txt
cat  ${workDir}/data1/1.txt > backup-my.cnf
rm -rf 1.txt
chown -R mysql:mysql ${workDir}
#启动mysqld进程
mysqld_safe --defaults-file=${workDir}/data1/backup-my.cnf --user=mysql --datadir=${workDir}/data1 &
fi

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档