本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • MySQL
  • 【MySQL运维】MySQL 5.7单实例安装脚本(附常规配置)

【MySQL运维】MySQL 5.7单实例安装脚本(附常规配置)

发布:TangLu2020-2-12 9:36分类: MySQL 标签: mysql 脚本

my.cnf配置文件可以根据实际需要进行修改,如果初始化完成后使用临时密码提示密码过期,是因为系统自带的mysql命令行工具与当前安装的MySQL版本不一致,使用绝对路径即可。

#!/bin/bash
cat << EOF
1.请事先下载好MySQL二进制安装包并解压于/usr/local下,做好软连接,如:
ln -s /usr/local/mysql-5.7.27-linux-glibc2.12-x86_64/ /usr/local/mysql
2.运行脚本即可完成服务安装和初始化
EOF

mysql_dir=/data/mysql
data_dir=/data/mysql/data
log_dir=/data/mysql/log


#初始化数据库(可反复执行,但会清空数据)
read -p "是否进行初始化,初始化将清空已有数据,输入y继续,其它按键退出脚本:" input
if [ $input == "y" ];then
	#创建用户
	id mysql > /dev/null 2>&1
	if [ $? != 0 ];then
		useradd -r -s /sbin/nologin -M mysql && echo "成功创建MySQL用户"
		sleep 1
	else
		echo "MySQL用户已存在,无需创建"
		sleep 1
	fi

	#创建数据和日志目录
	mkdir -p $log_dir
	mkdir -p $data_dir
	chown -R mysql.mysql $mysql_dir

	#创建数据库配置文件
	if [ -e /etc/my.cnf ];then
		echo > /etc/my.cnf
	else
		touch /etc/my.cnf
	fi

cat > /etc/my.cnf <<EOF
[mysqld]
basedir = /usr/local/mysql
datadir = $data_dir
port = 3306
socket = /tmp/mysql.sock 
character-set-server = utf8
default-storage-engine = INNODB
skip-name-resolve
server_id = 10
sql_safe_updates=1

#Log setting
log_error = $log_dir/error.log
slow_query_log = on
slow_query_log_file = $log_dir/slow.log
long_query_time = 3
log_bin = $log_dir/master-bin
log_bin_index = $log_dir/master-bin.index
binlog_format = row
expire_logs_days = 10
max_binlog_size = 1024M
binlog_cache_size = 32768
sync_binlog = 1  #双1参数之一,每次有事务提交都刷新日志到磁盘中

# Innodb setting
innodb_buffer_pool_size = 512M  #重要性能参数,设置数据和索引缓存大小,没有在缓存中找到数据则会读取硬盘,降低效率。该配置会直接占用内存,建议设置不超过物理内存的80%。该选项如果在线设置的话只能设置为字节格式,配置文件里可以加M\G等单位
innodb_flush_log_at_trx_commit = 1 #双1参数之一。有0、1、2三个值。0速度最快,但服务崩溃会丢失1秒数据;1不存在丢失数据但性能会有降低;2机器断电才会丢失1秒数据
innodb_log_file_size = 200M  #事务文件日志大小,配置越大写操作效率越高,但当出现崩溃等意外时恢复时间就更长,小业务200M就够用,中型业务2G左右
innodb_file_per_table = 1  #每个表有独立的表空间,分散IO,提升性能
# innodb_buffer_pool_dump_at_shutdown = ON  #每次停机会dump出buffer pool中的数据
# innodb_buffer_pool_filename = ib_buffer_pool  #dump出的数据文件
# innodb_buffer_pool_load_at_startup = ON  #启动服务时加载dump文件提升效率

[client]
socket = /tmp/mysql.sock
EOF
	

	mysql_proc=`netstat -ntulp | grep 3306 | wc -l`
	if [ $mysql_proc -gt 0 ];then
		echo "当前MySQL正在运行,请输入MySQL管理密码停止进程"
		/usr/local/mysql/bin/mysqladmin -uroot -p -S /tmp/mysql.sock shutdown && echo "MySQL服务已关闭,开始初始化"
		if [ $? -ne 0 ];then
			echo "密码错误,脚本退出" 
			exit 1
		fi
	else
		echo "没有MySQL进程正在运行,开始初始化"
		sleep 1
	fi
	
	rm -rf $data_dir/*  && echo "已清空数据目录"
	rm -rf $log_dir/*  && echo "已清空日志目录"
	sleep 1

	/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf  --initialize --user=mysql
	if [ $? -ne 0 ];then
			echo "初始化失败,脚本退出" 
			exit 1
	else
			mysql_password=`grep "temporary password" $log_dir/error.log | awk '{print $NF}'`
			echo "初始化成功,当前MySQL临时管理密码:$mysql_password"
	fi

	#启动服务
	/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf 2>&1 > /dev/null &
	echo "请运行/usr/local/mysql/bin/mysql_secure_installation 进行安全初始化"
else
	echo "脚本已退出"
fi

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【MySQL运维】MySQL 5.7单实例安装脚本(附常规配置)
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-559.html  [生成短网址]

已有 0/475 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~