#!/bin/bash
# Author: wangshenjin<wangshenjin233@foxmail.com>
# Description: install percona-server-5.7.18-14
# Lastdate: 2017/10/12
# Packages in /dist/dist: libunwind-1.1.tar.gz, gperftools-2.0.tar.gz boost_1_59_0.tar.gz, percona-server-5.7.18-14.tar.gz. # add mysql user
if ! id mysql > /dev/null 2>&1 ; then
groupadd mysql
useradd -g mysql -M mysql
fi # install dependent packages
yum install -y gcc gcc-c++ gcc-g77 autoconf automake zlib* fiex* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* readline-devel
[ "$?" -eq 0 ] || (echo -e "\033[31m Install dependent packages error,check yum environment. \033[0m" ; exit 1) # update cmake
if [ G`cmake -version | awk '{if($NF < 2.8)print "x"}'` == "Gx" ] ; then
yum update -y cmake
[ "$?" -eq 0 ] || (echo -e "\033[31m Update cmake packages error,check yum environment. \033[0m" ; exit 1)
fi # install TCMalloc
if ! ldconfig -p | grep -w libtcmalloc > /dev/null 2>&1 ; then
cd /dist/src
tar xf /dist/dist/libunwind-1.1.tar.gz
cd libunwind-1.1
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install cd /dist/src
tar xf /dist/dist/gperftools-2.0.tar.gz
cd gperftools-2.0
./configure
make && make install echo '/usr/local/lib' > /etc/ld.so.conf.d/local.conf
ldconfig
fi # 安装 boost_1.59.x
cd /dist/src
tar xf /dist/dist/boost_1_59_0.tar.gz
mv boost_1_59_0 /usr/local/ # 安装percona-server
CPUcount=`cat /proc/cpuinfo | grep -c "processor"`
# wget https://www.percona.com/downloads/Percona-Server-LATEST/Percona-Server-5.7.18-14/source/tarball/percona-server-5.7.18-14.tar.gz
cd /dist/src
tar xf /dist/dist/percona-server-5.7.18-14.tar.gz
cd /dist/src/percona-server-5.7.18-14
CHOST="x86_64-pc-linux-gnu" CFLAGS="-march=nocona -O2 -pipe" CXXFLAGS="-march=nocona -O2 -pipe" \
cmake \
-DMYSQL_USER=mysql \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DSYSCONFDIR:PATH=/usr/local/mysql \
-DCMAKE_INSTALL_PREFIX:PATH=/usr/local/mysql \
-DENABLED_PROFILING:BOOL=ON \
-DENABLE_DEBUG_SYNC:BOOL=OFF \
-DMYSQL_DATADIR:PATH=/data/database/mysql \
-DMYSQL_MAINTAINER_MODE:BOOL=OFF \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BIG_TABLES:BOOL=ON \
-DWITH_FAST_MUTEXES:BOOL=ON \
-DENABLE-PROFILING:BOOL=ON \
-DWITH_SSL:STRING=bundled \
-DWITH_UNIT_TESTS:BOOL=OFF \
-DWITH_ZLIB:STRING=bundled \
-DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \
-DWITH_SERVER_SUFFIX=4399DB \
-DWITH_PLUGINS=heap,csv,partition,innodb_plugin,myisam \
-DEFAULT_COLLATION=utf8_general_ci \
-DEFAULT_CHARSET=utf8 \
-DENABLED_ASSEMBLER:BOOL=ON \
-DENABLED_LOCAL_INFILE:BOOL=ON \
-DENABLED_THREAD_SAFE_CLIENT:BOOL=ON \
-DENABLED_EMBEDDED_SERVER:BOOL=OFF \
-DWITH_CLIENT_LDFLAGS:STRING=all-static \
-DINSTALL_LAYOUT:STRING=STANDALONE \
-DCOMMUNITY_BUILD:BOOL=ON \
-DCMAKE_EXE_LINKER_FLAGS="-ltcmalloc" \
-DWITH_SAFEMALLOC=OFF \
-DWITH_BOOST=/usr/local/boost_1_59_0 make -j $CPUcount
make install # 配置percona-server
mkdir -p /data/database/mysql
chown mysql:mysql -R /data/database/mysql
cd /usr/local/mysql
ln -sv /data/database/mysql /usr/local/mysql/var
sed -i '/Initialize script globals/ a export LD_PRELOAD=/usr/local/lib/libtcmalloc.so' bin/mysqld_safe #让MySQL支持tcmalloc # 配置文件
[ -f "/etc/my.cnf" ] && mv /etc/my.cnf /etc/my.cnf.old
cat > /etc/my.cnf << EOF
[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 16M
max_heap_table_size = 16M
table_open_cache = 2048
sort_buffer_size = 8M
net_buffer_length = 8K
read_buffer_size = 8M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 16M
back_log = 200
skip-name-resolve
query_cache_size = 16M
join_buffer_size=8M
bulk_insert_buffer_size=16M
concurrent_insert=2
delay_key_write=ON
delayed_insert_limit=4000
delayed_insert_timeout=600
delayed_queue_size=4000
tmp_table_size = 16M
thread_cache_size=120
character-set-server=utf8
max_connections = 1024
log_output=FILE
slow_query_log=1
slow_query_log_file=/usr/local/mysql/var/slowquery.log
max_slowlog_size=10m
max_slowlog_files=20
long_query_time=1
wait_timeout=1814400
server-id=1
log-bin=mysql-bin
expire_logs_days=3
binlog_format=mixed
max-binlog-size=128M
binlog_cache_size = 4M
skip-slave-start=1
innodb_file_format=barracuda
innodb_strict_mode=1
binlog_direct_non_transactional_updates=1
innodb_data_home_dir = /usr/local/mysql/var/
innodb_data_file_path = ibdata1:200M:autoextend
innodb_log_group_home_dir = /usr/local/mysql/var/
innodb_file_per_table= 1
innodb_buffer_pool_size = 128M
innodb_log_file_size = 256M
innodb_log_buffer_size = 16M
innodb_lock_wait_timeout = 20
innodb_adaptive_flushing = 1
innodb_flush_log_at_trx_commit = 2
innodb_flush_method = 'O_DIRECT'
transaction-isolation=READ-COMMITTED
innodb_rollback_on_timeout = On
innodb_read_io_threads = 5
innodb_write_io_threads = 5
innodb_io_capacity=500
innodb_thread_concurrency = 8
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_fast_shutdown = 1
innodb_status_file=1
open-files-limit = 10240
memlock
datadir = /data/database/mysql/
tmpdir = /data/database/mysql/
[mysqldump]
quick
max_allowed_packet = 16M
[mysql]
no-auto-rehash
[isamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M
[myisamchk]
key_buffer = 16M
sort_buffer_size = 16M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
EOF # 初始化数据库,初始化过程中会产生初始化密码
result=`/usr/local/mysql/bin/mysqld --initialize --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/var/ --user=mysql 2>&1`
[ "$?" -eq 0 ] || (echo -e "\033[31m Initialize MySQL error,check it. \033[0m" ; exit 1)
initpwd=`echo "$result" | awk '/A temporary password is generated for root@localhost:/{print $NF}'` #启动数据库
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf & # 修改root用户初始化密码
newpwd=`head /dev/urandom | md5sum | head -c16`
/usr/local/mysql/bin/mysqladmin -uroot -p"$initpwd" password "$newpwd" mkdir -p /data/save && chmod 700 /data/save
echo -n "$newpwd" > /data/save/mysql_root && chmod 600 /data/save/mysql_root cat > /root/mysql3306_start << EOF
/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
EOF cat > /root/mysql3306_stop << EOF
/usr/local/mysql/bin/mysqladmin -uroot -p`cat /data/save/mysql_root` "shutdown"
EOF chmod +x /root/mysql3306_st*

inst_for_mysql5.7.sh的更多相关文章

  1. 数据库备份并分离日志表(按月)sh 脚本

    #!/bin/sh year=`date +%Y` month=`date +%m` day=`date +%d` hour=`date +%H` dir="/data/dbbackup/f ...

  2. Linux下如何查找.sh后缀的文件

    find / -name *.sh或locate *.shfind 与locate的区别:locate 配合数据库查看文件位置 find 实际搜寻硬盘查询文件名称

  3. sh 测试网段在线主机

    yum install nmap nmap -sP  192.168.21.1/24 查看网段在线主机 grep -vwf file1 file2 文件内容比较 #!/bin/bash # day=` ...

  4. Maven打包生成可运行bat/sh脚本文件

    利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台.   <plugin>      <groupId>org ...

  5. 记一个简单的保护if 的sh脚本

    真是坑爹,就下面的sh,竟然也写了很久! if [ `pwd` != '/usr/xx/bin/tomcat' ] then echo "rstall is not allowed in c ...

  6. 主机巡检脚本:OSWatcher.sh

    主机巡检脚本:OSWatcher.sh 2016-09-26更新,目前该脚本只支持Linux操作系统,后续有需求可以继续完善. 注意: 经测试,普通用户执行脚本可以顺利执行前9项检查: 第10项,普通 ...

  7. Oracle巡检脚本:ORAWatcher.sh

    Oracle巡检脚本:ORAWatcher.sh #!/usr/bin/ksh echo "" echo "ORAWatcher Version:1.0.1" ...

  8. 解决:/bin/sh: 1: /home/**/custom_app.sh: Permission denied错误

    出现如下错误,一般是执行权限不够. /bin/sh: : /home/custom_app.sh: Permission denied 解决方法是:cd 到此文件目录,对提示的文件赋予可执行权限或读写 ...

  9. SH Script Grammar

    http://linux.about.com/library/cmd/blcmdl1_sh.htm http://pubs.opengroup.org/onlinepubs/9699919799/ut ...

随机推荐

  1. JDK 1.8源码阅读 ArrayList

    一,前言 ArrayList是Java开发中使用比较频繁的一个类,通过对源码的解读,可以了解ArrayList的内部结构以及实现方法,清楚它的优缺点,以便我们在编程时灵活运用. 二,ArrayList ...

  2. Linux下fork机制详解(以PHP为例)

    考:https://blog.csdn.net/jason314/article/details/5640969 1.fork简介 一个进程,包括代码.数据和分配给进程的资源.fork()函数通过系统 ...

  3. Sql注入基础原理介绍

    说明:文章所有内容均截选自实验楼教程[Sql注入基础原理介绍]~ 实验原理 Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击, ...

  4. linux git patch 和patch以及git diff 命令

    1.git log 查看commit id,修改前为id1,修改后id2 2.根据id1到id2有几次提交来生成几个patch,否则的话会根据所有节点生成很多patch 比如: commit id2 ...

  5. .yml文件格式

    http://yaml.org/ YAML: YAML Ain't Markup Language What It Is: YAML is a human friendly data serializ ...

  6. Golang package

    今天,灵感一现:不能一个文件干到底吧,那要是工程大了怎么办? 答案很简单,“包”啊 GO里的包,看起来很简单,但又不简单 一开始,我想当然的以为就是include 路径一样的问题 事实是,GO以GOP ...

  7. JAVA编程思想学习笔记6-chap16-18-斗之气6段

    1.java.util.Arrays package com.chengjie; import java.util.Arrays; import java.util.List; public clas ...

  8. 办法总比困难多--JMeter压测小记

    标签: JMeter, 代理接口 前段时间溢+支付接口慢,有商户直接反映掉单严重.这时,我接到了压测溢+支付接口的任务.JMeter我并不熟悉,公司也没有搞自动化测试的QA,一开始team里的一个同学 ...

  9. mysql数据库表设计小数类型

    float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位)double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E308(15个有效 ...

  10. 递归n!

    package sushudigui; import java.util.Scanner; public class digui { public static void main(String[] ...