date: 2020-08-11title: mysql-5.7.23安装脚本 #标题
tags: mysql #标签
categories: shell # 分类
记录下mysql二进制离线部署脚本。
# tree install-mysql-5.7.23 # 目录结构
install-mysql-5.7.23
├── install.log # 脚本安装过程中产生的日志
├── install-mysql-5.7.23.sh # 安装脚本
├── libaio-0.3.109-13.el7.x86_64.rpm # 某些系统需要此rpm包
├── my.cnf # mysql主配置文件
└── mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz # mysql二进制包
# cat install-mysql-5.7.23.sh # 安装脚本内容如下
#!/usr/bin/env bash
init_mysql_root_passwd='cF!TSadGT6y%'
tar_pkg="mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz"
cur_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
mysql_home=/app/usr/mysql-5.7.23/
mysql_3306=${mysql_home}mysql-3306/
mysql_data=${mysql_3306}data
install_log=${cur_dir}/install.log
item=1
h2() {
printf "\n${underline}${bold}${white}%s${reset}\n" "$@"
}
h2 "[Step $item]: 确认执行此脚本用户是否为root..."; let item+=1
if [[ ${USER} != root ]];then
echo -e "\033[31m
此脚本必须使用 root 执行
当前用户为 ${USER}
正在退出脚本...
\033[0m"
sleep 1 && exit 1
fi
mkdir -p ${mysql_3306}/{data,logs}
id mysql &> /dev/null || useradd -M -s /sbin/nologin mysql &>> ${install_log}
set -e
h2 "[Step $item]: 解压..."; let item+=1
cd ${cur_dir}
rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm &>> ${install_log}
tar zxf ${tar_pkg} -C ${mysql_home} --strip-components=1
cp ${cur_dir}/my.cnf ${mysql_3306}
h2 "[Step $item]: 配置环境变量..."; let item+=1
cat >> /etc/profile <<EOF
PATH=${mysql_home}bin/:\$PATH
EOF
source /etc/profile
h2 "[Step $item]: 初始化..."; let item+=1
mysqld --initialize --user=mysql --datadir=${mysql_data} --basedir=${mysql_home} &>> ${install_log}
tmp_passwd=$(grep root@localhost ${install_log} | awk -F 'root@localhost: ' '{print $2}')
h2 "[Step $item]: 启动mysql..."; let item+=1
mysqld_safe --defaults-file=${mysql_3306}my.cnf &>> ${install_log} &
sleep 8
# 修改root密码
if [[ $(ss -lnput | grep 3306 | wc -l) -ne 0 ]];then
mysqladmin -uroot -p''${tmp_passwd}'' password ''${init_mysql_root_passwd}''
echo -e "\033[33m
Mysql 启动成功, 数据库root密码为: ${init_mysql_root_passwd} ,请妥善保管!
请执行指令 source /etc/profile 重新加载环境变量。
\033[0m"
fi
# cat my.cnf # 主配置文件如下
[client]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8
[mysql]
port=3306
socket=/tmp/mysql.sock
default-character-set=utf8
[mysqld]
port=3306
character-set-server=utf8
socket=/tmp/mysql.sock
basedir=/app/usr/mysql-5.7.23/
datadir=/app/usr/mysql-5.7.23/mysql-3306/data
explicit_defaults_for_timestamp=true
federated
lower_case_table_names=1
secure_file_priv =/app/usr/mysql-5.7.23/mysql-3306
back_log=150
max_connections=3000
max_connect_errors=10
table_open_cache=2048
external-locking=FALSE
secure_file_priv =
max_allowed_packet=32M
sort_buffer_size=8M
join_buffer_size=8M
thread_cache_size=8
query_cache_size=512M
query_cache_limit=4M
transaction_isolation=REPEATABLE-READ
tmp_table_size=96M
max_heap_table_size=96M
###***slow query parameters
long_query_time=1
slow_query_log = 1
slow_query_log_file=/app/usr/mysql-5.7.23/mysql-3306/logs/slow.log
#***MyISAM parameters
key_buffer_size=32M
read_buffer_size=2M
read_rnd_buffer_size=16M
bulk_insert_buffer_size=64M
myisam_sort_buffer_size = 16M
myisam_max_sort_file_size = 16M
myisam_repair_threads = 1
skip-name-resolve
###***master-slave replication parameters
server-id=14063
#slave-skip-errors=all
#***Innodb storage engine parameters
innodb_buffer_pool_size=8192M
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
innodb_data_file_path=ibdata1:10M:autoextend
#innodb_file_io_threads=8
#innodb_thread_concurrency=16
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=16M
innodb_log_file_size=128M
innodb_log_files_in_group=3
innodb_max_dirty_pages_pct=90
innodb_buffer_pool_dump_pct=90
innodb_lock_wait_timeout=2
innodb_file_per_table=on
[mysqldump]
quick
max_allowed_packet=32M
[myisamchk]
key_buffer=16M
sort_buffer_size=16M
read_buffer=8M
write_buffer=8M
[mysqld_safe]
open-files-limit=8192