#!/bin/bash
#MySQL5.7.29 Download URL: https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz #已經(jīng)驗(yàn)證可以自動化
#MySQL5.7.31 Download URL: https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz" #
#MySQL8.0 Download URL: https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz
. /etc/init.d/functions
SRC_DIR=`pwd`
LINK="https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-5.7/mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"
#MYSQL='mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz'
#MYSQL='mysql-8.0.19-linux-glibc2.12-x86_64.tar.xz'
MYSQL="mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz"
FULL_NAME=${SRC_DIR}/${MYSQL}
COLOR='echo -e \e[01;31m'
END='\e[0m'
MYSQL_ROOT_PASSWORD=123456
action "下載依賴..."
yum -y install autoconf libaio-devel numactl-libs libtinfo* net-tools vim wget gcc gcc-c++ lrzsz &>/dev/null
check (){
if [ $UID -ne 0 ];then
action "當(dāng)前用戶不是root,安裝失敗" false
exit 1
fi
cd $SRC_DIR
if [ -e /usr/local/mysql ];then
action "數(shù)據(jù)庫已存在,安裝失敗" false
exit 1
elif [ ! -e ${FULL_NAME} ];then
$COLOR"缺少${MYSQL}文件"$END
$COLOR"正在下載${MYSQL}文件..."$END
wget $LINK && action "下載${MYSQL}文件完成" || action "下載${MYSQL}文件失敗" false
else
return
fi
}
install_mysql(){
$COLOR"開始安裝MySQL數(shù)據(jù)庫..."$END
cd $SRC_DIR
tar xf $MYSQL -C /usr/local/
MYSQL_DIR=`echo $MYSQL| sed -nr 's/^(.*[0-9]).*/\1/p'`
ln -s /usr/local/$MYSQL_DIR /usr/local/mysql
#創(chuàng)建用戶mysql
id mysql &>/dev/null && { action "mysql already exists";usermod -u306 -md /data/mysql -s /sbin/nologin mysql &>/dev/null; } || { useradd -r -u306 -d /data/mysql -s /sbin/nologin mysql &>/dev/mull; }
chown -R mysql.mysql /usr/local/mysql/
echo 'PATH=/usr/local/mysql/bin/:$PATH' >> /etc/profile.d/path.sh
. /etc/profile.d/path.sh
mkdir -p /mysql/3306/{data,binlog,log,etc,trans_log,pid,sock}
chown -R mysql.mysql /mysql/
cat > /etc/my.cnf <<EOF
[mysql]
socket=/mysql/3306/sock/mysql.sock
prompt="(\u@\h) [\d]>\_"
[mysqldump]
socket=/mysql/3306/sock/mysql.sock
EOF
cat > /mysql/3306/etc/my.cnf <<EOF
[mysql]
socket=/mysql/3306/sock/mysql.sock
prompt="(\u@\h) [\d]>\_"
[mysqld]
user=mysql
skip_name_resolve=1
datadir=/mysql/3306/data
basedir=/usr/local/mysql
pid-file=/mysql/3306/pid/mysql.pid
port=3306
socket=/mysql/3306/sock/mysql.sock
# connection
max_connections=5000
max_connect_errors=200
#skip-networking=1
# skip-grant-tables=1
# replication
server_id=18 # 默認(rèn)1 復(fù)制用
# read-only # 從服務(wù)器只讀設(shè)置
# log_slave_updates #級聯(lián)復(fù)制時 實(shí)現(xiàn)中間slave節(jié)點(diǎn)能將master的二進(jìn)制日志在本機(jī)進(jìn)行數(shù)據(jù)庫更新,并且也同時更新本機(jī)的二進(jìn)制,從而實(shí)現(xiàn)級聯(lián)復(fù)制
gtid_mode=on
enforce-gtid-consistency=true #強(qiáng)制一致性
# binlog
# sql_log_bin=ON #default ON
log_bin=/mysql/3306/binlog/mysql-bin
# sync_binlog=1
# binlog_format=row # default row
# error_log
log_error=/mysql/3306/log/mysql.log
# general_log
general_log=ON
general_log_file=/mysql/3306/log/general.log
log_output=FILE
# select安全導(dǎo)出文件
secure-file-priv=/tmp
# set default engine
# default_storage_engine=InnoDB # default
# innodb transaction manager
autocommit=1 #default 1 1默認(rèn)為1,為0時設(shè)為非自動提交 建議:設(shè)置1 顯式begin請求和提交事務(wù),而不要使用“自動提交”功能
# innodb transaction isolation Level
# transaction_isolation=READ-UNCOMMITTED # 讀未提交
# transaction_isolation=read-committed # 讀已提交
transaction_isolation=Repeatable-READ # 可重復(fù)讀 default
# transaction_isolation=Serializable # 可串行化
# innodb redo log for transaction
innodb_log_group_home_dir=/mysql/3306/trans_log/ # default=./ (datadir下) 事務(wù)文件路徑
# innodb_log_files_in_group=2 # default 事務(wù)文件個數(shù)
# redo log size for buffer and file
innodb_log_file_size=200M
# innodb_log_buffer_size=16777216 # default
# redo log sync level
innodb_flush_log_at_trx_commit=1 #default 安全最好 事務(wù)commit write on redolog_buffer DML每次commit都會立即sync到磁盤 逐條將commit的事務(wù)sync到磁盤
# innodb_flush_log_at_trx_commit=0 #性能良好 事務(wù)commit后 write on redolog_buffer 每秒sync redolog_buffer中的多個事務(wù)到磁盤
# innodb_flush_log_at_trx_commit=2 #性能良好 事務(wù)commit后 write on os cache 每秒sync os cache中的多個事務(wù)都磁盤 生產(chǎn)建議使用
# innodb tablespace
# innodb_file_per_table=1 # default 1 獨(dú)立表空間 0 共享表空間
EOF
mysqld --defaults-file=/mysql/3306/etc/my.cnf --initialize-insecure --user=mysql --datadir=/mysql/3306/data --basedir=/usr/local/mysql &>/dev/null
#mysqld --initialize --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql
cat > /lib/systemd/system/mysqld.service <<-EOF
[Unit]
Description=mysql database server
After=network.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/mysql/3306/etc/my.cnf
LimitNOFILE=6000
EOF
systemctl enable mysqld
systemctl start mysqld
ss -lnt|( grep -o 3306 && action "啟動成功" || action "啟動失敗" false )
#MYSQL_OLDPASSWORD=$(awk '/A temporary password/{print $NF}' /data/mysql/mysql.log)
#mysqladmin -uroot -p${MYSQL_OLDPASSWORD} password ${MYSQL_ROOT_PASSWORD} &>/dev/null
action "數(shù)據(jù)庫安裝完成"
}
#執(zhí)行函數(shù)
check
install_mysql
centos7二進(jìn)制安裝mysql5.7/8.0腳本
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 腳本支持 5.7 與 8.0 的二進(jìn)制包的安裝 腳本執(zhí)行方式: 1.運(yùn)行腳本 installMysql.sh2.傳...
- 1.下載安裝包 下載地址 https://dev.mysql.com/get/Downloads/MySQL-5....
- 案例1、二進(jìn)制安裝MYSQL5.7 案例2、基于MYSQL5.7的GTID(兩臺主機(jī)) 1、 主服務(wù)器上 (1)v...
- 這里我選擇官網(wǎng)下載源碼包編譯安裝參照一:linux在配置的時候大家是如何去選擇用編譯安裝還是yum安裝參照二:li...