# 快速部署单节点MySQL脚本
# 执行方式:将MySQL包,my3302.cnf配置文件,dbtool脚本文件放到一个目录下。然后按照脚本执行就可以。配置文件提前修改好。文章最后附上my.cnf配置文件内容

# 环境:

# Linux:CentOS release 6.6 (Final)
# mysql: Percona-Server-5.6.32-rel78.0-Linux.x86_64.ssl098e.tar.gz # 下载地址 : https://www.percona.com/downloads/Percona-Server-5.6/LATEST/

# 简介:脚本中每一步都定义的函数,通过:./dbtool port cmd 格式 来调用。port:MySQL端口;cmd 每个函数的调用命令简写。例如:./dbtool 3002 sd 启动mysql.
#   大家可以根据需要在下面追加函数,定义功能。比如:mysql的启动、停止、登录。
#   该脚本提供一种思路,大家可以自己扩展

# 脚本名:dbtool
#!/bin/sh
#
PORT=$
Instance_Name="inst01" #实例名:多实例时目录层的区分标志
CMD="$2"
DB_DIR="/data/mysql" # MySQL相关目录文件,本脚本为了方便都放一起了;data和log可以放到单独的分区里
Current_dir=`pwd` INSTALL_RPM()
{
rpmlist="openssl-devel.x86_64 \
openssl098e.x86_64 \
openssl.x86_64 \
readline.x86_64 \
readline-devel.x86_64 \
crypto-utils.x86_64 \
perl-DBD-MySQL.x86_64 \
perl-IO-Socket-SSL.noarch"
echo
echo '------------------------------------------'
echo 'Install rpm :'
echo
for str in ${rpmlist};
do
rpm -qa|grep ${str%.*}>>/dev/null && echo "Installed : "${str} || \
(yum install -y ${str} >> /dev/null && echo "Installed : "${str} )
done
echo
echo '------------------------------------------'
echo
} ADD_USER()
{
echo
echo '------------------------------------------'
groupadd mysql && useradd -g mysql mysql >/dev/null
echo "id mysql :"
id mysql
echo '------------------------------------------'
} MK_DIR()
{
Dir_data="${DB_DIR}/mysqlData/${Instance_Name}"
Dir_log="${DB_DIR}/mysqlLog/${Instance_Name}"
Dir_socket="${DB_DIR}/socket"
Dir_conf="${DB_DIR}/config"
echo '--------------------------------------------'
if [ ! -d "${DB_DIR}" ];then
mkdir -pv ${DB_DIR}
fi mkdir -pv $Dir_data/{data,tmp}
mkdir -pv $Dir_log/logs
mkdir -pv $Dir_socket
mkdir -pv $Dir_conf
echo
echo '[ show dirs : ]'
ls -lh ${DB_DIR}
echo '---------------------------------------------------------'
echo
} TAR_MYSQL()
{
echo '---------------------------------------------------------'
PerconaName=`ls ${Current_dir} |grep Percona-Server`
PerconaVerson=`echo ${PerconaName}|awk -F'-' '{print $3}'|sed 's#\.##g'`
tar -xf ${PerconaName}
mv ${PerconaName%.tar*} percona${PerconaVerson}
ln -s ${Current_dir}/percona${PerconaVerson} /usr/local/mysql
echo '---------------------------------------------------------'
} MOD_CONF()
{
echo '---------------------------------------------------------'
mv ${Current_dir}/my${PORT}.cnf ${DB_DIR}/config/
ls -lh ${DB_DIR}/config/
echo '---------------------------------------------------------'
} GRANT_DIR()
{
echo '---------------------------------------------------------'
chown -R mysql.mysql ${DB_DIR}
chown -R mysql.mysql /usr/local/mysql
chown -R mysql.mysql /usr/local/mysql/
echo '---------------------------------------------------------'
} SET_PATH()
{
echo
echo '---------------------------------------------------------'
echo 'export PATH=$PATH:/usr/local/mysql/bin' >>/etc/profile
cat /etc/profile|grep '/usr/local/mysql/bin'
echo
echo '---------------------------------------------------------'
} INITIALIZE_DB()
{
echo
echo '---------------------------------------------------------'
cd /usr/local/mysql/
./scripts/mysql_install_db --defaults-file=${DB_DIR}/config/my${PORT}.cnf --user=mysql
echo '---------------------------------------------------------'
} START_DB()
{
echo '---------------------------------------------------------'
cd /usr/local/mysql
./bin/mysqld_safe --defaults-file=${DB_DIR}/config/my${PORT}.cnf --user=mysql &
sleep
echo
echo "Check :"
echo "[ps -ef|grep mysql]"
ps -ef|grep mysql
echo "[netstat -ntpl|grep mysql]"
netstat -ntpl|grep mysql echo '---------------------------------------------------------'
} FIRST_LOGIN()
{
echo '---------------------------------------------------------'
echo "Press Enter"
mysql -uroot -p -S ${DB_DIR}/socket/mysql${PORT}.sock -e"delete from mysql.user where host !='localhost' or user=''"
echo "Press Enter"
mysql -uroot -p -S ${DB_DIR}/socket/mysql${PORT}.sock -e"select user,host,password from mysql.user"
echo
echo
echo '---------------------------------------------------------'
} HELP()
{
echo "---------------------------------------------------------------"
printf "%-50s\n" "+ ToolName : dbtool "
printf "%-50s\n" "+ ToolDesc : install single mysql"
printf "%-50s\n" "+ Authors : Chris" printf "%-50s\n" "+ Help:"
printf "%-50s\n" "For example:"
printf "%-50s\n" "+ [root@monitor data]# ./dbtool 3002 in" printf "%-50s\n" "+ Parameter: "
printf "%-50s\n" "+ ir --install rpm for mysql"
printf "%-50s\n" "+ au --add user : mysql "
printf "%-50s\n" "+ md --mkdir "
printf "%-50s\n" "+ tm --tar -xf mysql.xx.tar.gz"
printf "%-50s\n" "+ mc --mv myxx.cnf to config_file"
printf "%-50s\n" "+ gd --grant to dirs"
printf "%-50s\n" "+ sp --set environment"
printf "%-50s\n" "+ in --initialization mysql"
printf "%-50s\n" "+ sd --start mysql"
printf "%-50s\n" "+ fg --first login mysql and delete unuserd users"
echo "---------------------------------------------------------------" } if [ $# -eq ];then
case $ in
'install_rpm'|'ir')
INSTALL_RPM
;;
'add_user'|'au')
ADD_USER
;;
'mk_dir'|'md')
MK_DIR
;;
'tar_mysql'|'tm')
TAR_MYSQL
;;
'mv_conf'|'mc')
MOD_CONF
;;
'grant_dir'|'gd')
GRANT_DIR
;;
'set_path'|'sp')
SET_PATH
;;
'initialization_db'|'in')
INITIALIZE_DB
;;
'start_db'|'sd')
START_DB
;;
'firstlogin'|'fg')
FIRST_LOGIN
;;
'install'|'install') # 一键部署
INSTALL_RPM
ADD_USER
MK_DIR
TAR_MYSQL
MOD_CONF
GRANT_DIR
SET_PATH
INITIALIZE_DB
START_DB
FIRST_LOGIN
;;
*)
HELP
;;
esac
else
HELP
exit
fi

附件:myxx.cnf

注意:innodb_buffer_pool需要更加实际内存情况设置

[client]
port =
socket = /data/socket/mysql3002.sock # The MySQL server
[mysqld]
server-id =
port =
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/mysqlData/inst01/data
tmpdir = /data/mysql/mysqlData/inst01/tmp
socket = /data/mysql/socket/mysql3002.sock
pid-file = /data/mysql/socket/mysql3002.pid
log-bin = /data/mysql/mysqlLog/inst01/logs/mysql-bin
log-error = /data/mysql/mysqlLog/inst01/err.log
slow_query_log_file =/data/mysql/mysqlLog/inst01/slow.log
binlog_format=mixed
#log_short_format
#log-slave-updates
slow_query_log
long_query_time=
wait_timeout=
interactive_timeout=
max_connections=
character_set_server=utf8
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache =
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size =
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency =
#skip-networking
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
replicate_ignore_db=mysql
replicate_ignore_db=information_schema
expire-logs-days=
skip-slave-start # InnoDB
innodb_data_home_dir = /data/mysql/mysqlData/inst01/data
innodb_log_group_home_dir = /data/mysql/mysqlLog/inst01/logs
innodb_data_file_path = ibdata1:10M:autoextend
innodb_buffer_pool_size = 256M
innodb_additional_mem_pool_size = 5M
innodb_log_file_size = 10M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit =
innodb_lock_wait_timeout =
innodb_file_per_table [mysqldump]
quick
max_allowed_packet = 16M [mysql]
#no-auto-rehash
auto-rehash
[myisamchk]
key_buffer_size = 256K
sort_buffer_size = 256K
read_buffer = 256K
write_buffer = 256K [mysqlhotcopy]
interactive-timeout

MySQL5.6一键部署的更多相关文章

  1. windows一键部署java项目

    windows一键部署java项目 因为公司需求,要在windows的环境上做一键部署启动java项目,同时还要支持从安装界面动态修改配置文件的IP地址.就像安装软件一样将jdk,tomcat,mys ...

  2. Docker Compose 一键部署LNMP

    Docker Compose 一键部署LNMP 目录结构 [root@localhost ~]# tree compose_lnmp/ compose_lnmp/ ├── docker-compose ...

  3. Shell脚本一键部署——源码编译安装MySQL及自动补全工具

    Shell脚本一键部署--源码编译安装MySQL及自动补全工具 编译安装MySQL 1.软件包 Mysql安装包 将安装包拖至/opt目录下,编辑一个脚本文件,将以下内容复制进去,然后source或者 ...

  4. 一键部署mysql 无修改直接cp 执行 100% 有效

    一键部署mysql     无修改直接cp  执行 100% 有效 将安装包拖至/opt目录下,编一个脚本文件,然后source执行脚本,等脚本执行完成, 即可使用mysql -u root -p点击 ...

  5. 一键部署lnmp

      一键部署lnmp 提前将nginx .mysql .php  所需安装包都放在/opt目录下 脚本启动结束时,重启一下nginx 服务,就能在火狐浏览器更新出php测试页 脚本如下:(脚本里的软件 ...

  6. 一键部署lamp 脚本

    一键部署lamp 脚本 如下: #!/bin/bash systemctl stop firewalld systemctl disable firewalld setenforce 0 #----- ...

  7. mac通过docker一键部署MySQL8

    目录 mac通过docker一键部署MySQL8 一.前言 二.系统配置 三.安装步骤 Dockerhub查看镜像地址 1.一键安装 1.1.克隆脚本 1.2.安装程序 1.2.1.安装程序详情 1. ...

  8. 如何自动化一键部署PHP项目

    1.技能需求 完成自动化一键部署PHP需要:PHP(略懂),Shell(略懂),git(略懂) 2.最终效果 输入密码,回车,5~20秒后(一般一天一次持续交付,部署的代码量和sql脚本都不会很大) ...

  9. Ubantu16.04一键部署Cacti监控服务器

    Ubantu16.04一键部署Cacti监控服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 欢迎加入高级运维工程师之路:598432640 一.查看系统环境(关于该系统的安装 ...

随机推荐

  1. wpf datagrid 中按钮 动态显示

    /若datagrid出现滚动条可能会出现问题需要加上下面俩句话.//因为出滚动条时,为了显示加速,datagrid会加载一部分数据.另一些数据当滚动时在加载进去 这样初始化获取不到这些数据.//在da ...

  2. Java每日一题

    1.(单选题)What will be printed when you execute the following code? class C { C() { System.out.print(&q ...

  3. 红黑树C++实现

    1 /* 2 * rbtree.h 3 * 1. 每个节点是红色或者黑色 4 * 2. 根节点是黑色 5 * 3. 每个叶子节点是黑色(该叶子节点就空的节点) 6 * 4. 如果一个节点是红色,则它的 ...

  4. iOS 苹果官方 Crash文件分析方法 (iOS系统Crash文件分析方法)

    时间2013-08-20 12:49:20 GoWhich原文  http://www.gowhich.com/blog/view/id/343 苹果官方 Crash文件分析方法 (iOS系统Cras ...

  5. 160803、如何在ES6中管理类的私有数据

    如何在ES6中管理类的私有数据?本文为你介绍四种方法: 在类的构造函数作用域中处理私有数据成员 遵照命名约定(例如前置下划线)标记私有属性 将私有数据保存在WeakMap中 使用Symbol作为私有属 ...

  6. debian各种包

    1 zlib compression library sudo apt-get install zlib1g-dev 2 c-ares库 libc-ares-dev - asynchronous na ...

  7. ArcGIS runtime sdk for wpf 授权

    这两天由于runtime sdk for wpf的授权和runtime sdk 其他产品的授权的不一样导致自己混乱不堪. 总结下吧. sdk 简介 当前ArcGIS runtime sdk 包括一系列 ...

  8. Date、Calendar、Timestamp的区别与转换

    1.Java.util.Date 包含年.月.日.时.分.秒信息. // String转换为Date String dateStr="2013-8-13 23:23:23"; St ...

  9. python基于yield实现协程

    def f1(): print(11) yield print(22) yield print(33) def f2(): print(55) yield print(66) yield print( ...

  10. (转)专项:Android 内存泄露实践分析

    今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里. 原文发表于:Testerhome: 作者:ycwdaaaa ;  原文链接:https://teste ...