1. 程式人生 > >MySQL5.7安裝部署

MySQL5.7安裝部署

1分鐘完成MySQL5.7安裝部署

 

1分鐘完成MySQL5.7安裝部署

簡介

Part1:寫在最前

MYSQL5.7.15是截止至本文撰寫當日,mysql官網的最新社群版,mysql5.7的多項功能優化可以用激動人心來形容,嫌安裝麻煩?沒關係,跟著本文,帶你1分鐘搞定MySQL5.7.15資料庫安裝部署。

 

Part2:僅僅安裝就夠了?

不,當然不夠,MySQL5.7的多項功能特性更新,無法一一贅述,因此,我們先從和本文最相關的my.cnf,來解讀一些MySQL5.7的部分新特性。

在之前我寫過一篇MySQL5.6的新特性引數,諸如:

innodb_buffer_pool_dump_at_shutdown=1

innodb_buffer_pool_load_at_startup=1

開啟這個兩個引數當資料庫重啟後把這些熱資料重新載入回去

只有正常關庫才會dump熱資料塊,宕機和kill -9不會

更多5.6安裝內容可移步:

http://suifu.blog.51cto.com/9167728/1846671

 

5.7裡,一個新的系統引數innodb_buffer_pool_dump_pct,其預設值為25

允許DBA控制每個緩衝池最近使用頁的百分比來匯出,以減緩匯出innodb buffer pool所有頁佔用過大的磁碟。如果innodb buffer pool裡快取了100個頁,那麼會將最近使用的25個頁匯出去,最大值是100,意思為全部匯出,如下圖所示:

注:在MariaDB10.1裡,同樣提供了該引數,不過其預設值是100

 

 

線上調整innodb_buffer_pool_size,不用重啟mysql程序

在MySQL5.6/MariaDB 10.1版本,調整該引數必須重啟MySQL程序才可以生效,而mysql5.7版本里,可以直接動態設定,非常方便。

這個功能應用場景如:

1.機器新增記憶體,DBA忘記調大該引數;

2.工作交接,新來的DBA發現前任DBA對該引數設定不合理。

下面在我機器裡進行測試,把512M記憶體變更為256M,見下圖:

需注意的是,在調整buffer_pool期間,使用者的請求會被阻塞,直到調整完畢,所以請勿在高峰期調整。

 

 

實戰

Part1:整個流程分3

1.mysql官網下載二進位制版本的mysql5.7.15安裝包(mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz)/root目錄

2.執行下文所述的mysql_auto_install.sh指令碼

3.輸入您設定的密碼登入資料庫

 


 

Part2:自動化指令碼

[root@HE2 ~]# cat mysql_auto_install.sh

###### 二進位制自動安裝資料庫指令碼root密碼MANAGER將指令碼和安裝包放在/root目錄即可###############

######資料庫目錄/usr/local/mysql############

######資料目錄/data/mysql############

######慢日誌目錄/data/slowlog############

######埠號預設3306其餘引數按需自行修改############

 

##################

#author[email protected]#

##################

#!/bin/bash

 

 

# Check if user is root

if [ $(id -u) != "0" ]; then

    echo "Error: You must be root to run this script, please use root to install"

    exit 1

fi

 

clear

echo "========================================================================="

echo "A tool to auto-compile & install MySQL 5.7.15 on Redhat/CentOS Linux "

echo "========================================================================="

cur_dir=$(pwd)

 

#set mysql root password

       echo "==========================="

 

       mysqlrootpwd="MANAGER"

       echo -e "Please input the root password of mysql:"

       read -p "(Default password: MANAGER):" mysqlrootpwd

       if [ "$mysqlrootpwd" = "" ]; then

              mysqlrootpwd="MANAGER"

       fi

       echo "==========================="

       echo "MySQL root password:$mysqlrootpwd"

       echo "==========================="

 

#which MySQL Version do you want to install?

echo "==========================="

 

 

    isinstallmysql57="n"

       echo "Install MySQL 5.7.15,Please input y"

       read -p "(Please input y , n):" isinstallmysql57

 

 

       case "$isinstallmysql57" in

       y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)

       echo "You will install MySQL 5.7.15"

 

       isinstallmysql57="y"

       ;;

       *)

       echo "INPUT error,You will exit install MySQL 5.7.15"

 

       isinstallmysql57="n"

    exit

       esac

 

       get_char()

       {

       SAVEDSTTY=`stty -g`

       stty -echo

       stty cbreak

       #dd if=/dev/tty bs=1 count=1 2> /dev/null

       stty -raw

       stty echo

       stty $SAVEDSTTY

       }

       echo ""

       echo "Press any key to start...or Press Ctrl+c to cancel"

       char=`get_char`

 

# Initialize  the installation related content.

function InitInstall()

{

       cat /etc/issue

       uname -a

       MemTotal=`free -m | grep Mem | awk '{print  $2}'` 

       echo -e "\n Memory is: ${MemTotal} MB "

       #Set timezone

       #rm -rf /etc/localtime

       #ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

 

    #Delete Old Mysql program

       rpm -qa|grep mysql

       rpm -e mysql

 

 

 

 

 

 

       #Disable SeLinux

       if [ -s /etc/selinux/config ]; then

       sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

       fi

    setenforce 0

 

 

}

 

 

#Installation of depend on and optimization options.

function InstallDependsAndOpt()

{

cd $cur_dir

 

cat >>/etc/security/limits.conf<<EOF

* soft nproc 65535

* hard nproc 65535

* soft nofile 65535

* hard nofile 65535

EOF

 

echo "fs.file-max=65535" >> /etc/sysctl.conf

}

 

#Install MySQL

function InstallMySQL57()

{

echo "============================Install MySQL 5.7.15=================================="

cd $cur_dir

 

#Backup old my.cnf

#rm -f /etc/my.cnf

if [ -s /etc/my.cnf ]; then

    mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak

fi

 

echo "============================MySQL 5.7.15 installing…………========================="

#mysql directory configuration

tar xvf /root/mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz

mv /root/mysql-5.7.15-linux-glibc2.5-x86_64 /usr/local/mysql

groupadd mysql -g 512

useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql

mkdir -p /data/mysql

mkdir -p /data/slowlog

chown -R mysql:mysql /data/mysql

chown -R mysql:mysql /usr/local/mysql

chown -R mysql:mysql /data/slowlog

 

 

#edit /etc/my.cnf

SERVERID=`ifconfig eth0 | grep "inet addr" | awk '{ print $2}'| awk -F. '{ print $3$4}'`

cat >>/etc/my.cnf<<EOF

[client]

port=3306

socket=/tmp/mysql.sock

default-character-set=utf8

 

[mysql]

no-auto-rehash

default-character-set=utf8

 

[mysqld]

port=3306

character-set-server=utf8

socket=/tmp/mysql.sock

basedir=/usr/local/mysql

datadir=/data/mysql

pid-file =/data/mysql/mysql.pid

explicit_defaults_for_timestamp=true

lower_case_table_names=1

back_log=103

max_connections=3000

max_connect_errors=100000

table_open_cache=512

external-locking=FALSE

max_allowed_packet=32M

sort_buffer_size=2M

join_buffer_size=2M

thread_cache_size=51

query_cache_size=32M

#query_cache_limit=4M

transaction_isolation=REPEATABLE-READ

tmp_table_size=96M

max_heap_table_size=96M

 

###***slowqueryparameters

long_query_time=1

slow_query_log = 1

slow_query_log_file=/data/slowlog/slow.log

 

###***binlogparameters

log-bin=mysql-bin

binlog_cache_size=4M

max_binlog_cache_size=4096M

max_binlog_size=1024M

binlog_format=MIXED

expire_logs_days=7

 

###***relay-logparameters

#relay-log=/data/3307/relay-bin

#relay-log-info-file=/data/3307/relay-log.info

#master-info-repository=table

#relay-log-info-repository=table

#relay-log-recovery=1

 

#***MyISAMparameters

key_buffer_size=16M

read_buffer_size=1M

read_rnd_buffer_size=16M

bulk_insert_buffer_size=1M

 

#skip-name-resolve

 

###***master-slavereplicationparameters

server-id=$SERVERID

#slave-skip-errors=all

 

#***Innodbstorageengineparameters

innodb_buffer_pool_size=512M

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=512M

innodb_log_files_in_group=2

innodb_max_dirty_pages_pct=75

innodb_buffer_pool_dump_pct=50

innodb_lock_wait_timeout=50

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

log-error=/data/mysql/error.log

pid-file=/data/mysql/mysqld.pid

 

EOF

 

 

 

 

/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --datadir=/data/mysql --basedir=/usr/local/mysql --initialize-insecure

 

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld

chmod 700 /etc/init.d/mysqld

chkconfig --add mysqld

chkconfig --level 2345 mysqld on

 

cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF

/usr/local/mysql/lib

EOF

ldconfig

 

if [ -d "/proc/vz" ];then

ulimit -s unlimited

fi

 

/etc/init.d/mysqld start

 

 

cat >> /etc/profile <<EOF

export PATH=$PATH:/usr/local/mysql/bin

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib

EOF

 

/usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd

 

cat > /tmp/mysql_sec_script<<EOF

use mysql;

delete from mysql.user where user!='root' or host!='localhost';

grant all privileges on *.* to 'sys_admin'@'%' identified by 'MANAGER';

flush privileges;

EOF

 

/usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script

 

#rm -f /tmp/mysql_sec_script

 

 

#/etc/init.d/mysqld restart

 

 

 

 

echo "============================MySQL 5.7.15 install completed========================="

}

 

 

 

function CheckInstall()

{

echo "===================================== Check install ==================================="

clear

ismysql=""

echo "Checking..."

 

if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then

  echo "MySQL: OK"

  ismysql="ok"

  else

  echo "Error: /usr/local/mysql not found!!!MySQL install failed."

fi

 

if [ "$ismysql" = "ok" ]; then

echo "Install MySQL 5.7.15 completed! enjoy it."

echo "========================================================================="

netstat -ntl

else

echo "Sorry,Failed to install MySQL!"

echo "You can tail /root/mysql-install.log from your server."

fi

}

 

#The installation log

InitInstall 2>&1 | tee /root/mysql-install.log

InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log

InstallMySQL57 > /dev/null

CheckInstall 2>&1 | tee -a /root/mysql-install.log

 

 

 

Part5:登入&享受吧

1.source一下環境變數檔案使生效

[root@HE2 ~] source /etc/profile

 

2.輸入使用者名稱密碼(預設為MANAGER)登入資料庫

 

至此,MySQL5.7.15安裝完成

相關推薦

MySQL5.7安裝部署

1分鐘完成MySQL5.7安裝部署   1分鐘完成MySQL5.7安裝部署 簡介 Par

新手小白Linux(Centos6.5)部署java web項目(mysql5.7安裝及相關操作)

UNC cancel linux系統安裝 temporary tran sch statement current datadir 一、安裝   參考:https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yu

CentOS7下安裝MySQL5.7安裝與配置(YUM)

centos7下安裝mysql5.7安裝與配置(yum) CentOS7下安裝MySQL5.7安裝與配置(YUM) 安裝環境:CentOS7 64位 MINI版,安裝MySQL5.71、配置YUM源 在MySQL官網中下載YUM源rpm安裝包:http://dev.mysql.co

Linux下mysql5.7安裝

獲取 說明 sql roo 生效 all 安裝 localhost http 當前最新版本為5.7,此次將分別采用yum安裝和tar包編譯安裝的方式分別說明。 一、Yum安裝 A:獲取repo源 [[email protected]/* */ ~]# wget

MySql5.7安裝及配置

如果 utf8 sql安裝 壓縮 分享 你們 nec 管理 環境變量配置   MySQL是一個關系型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司。MySQL 最流行的關系型數據庫管理系統,在 WEB 應用方面MySQL是最好的 RDBM

MySQL5.7 安裝過程 解壓版

def win pan server blog 數據 sql數據庫 src ons 【1】下載zip壓縮包 【2】配置環境變量 path D:\work\mysql-5.7.20-winx64\bin 【3】新建my.ini放到D:\work\mysql-5.7.20-w

mysql5.7安裝以及數據庫主從遷移

遷移筆者下午趟了一下午的水rpm -qa mariadb*yum remove mariadb-libs-5.5.56-2.el7.x86_64-yrpm -ivh mysql-community-common-5.7.9-1.el7.x86_64.rpmrpm -ivh mysql-communit

mysql5.7安裝

centos stat ## /tmp 狀態 word rom pro mkdir http://www.jb51.net/article/109151.htm 1、cd /usr/local/ ##進入local目錄 2、cp /home/soft/MySQL-5

mysql5.7 安裝方法 (跟舊的不一樣了)

其他 如何 調用 oot cto 超級用戶 定義 文件中 帳戶 MySQL 5.7發布之後很多網友都在說,打開想安裝文件夾.但是文件夾中沒有DATA目錄, 沒有mysqly默認庫.啟動不了數據庫,那是因為5.7的數據庫的初始化方法和之前的初始化不一樣了。首先這裏所描

CentOS7 64位下MySQL5.7安裝與配置

mmu html sql -o ces valid ica strong med 1、下載並安裝MySQL官方的 Yum Repository 下載安裝用的Yum Repository [root@izm5e14weg5qigotah0j80z ~]# wget -i

CentOS7 64位下MySQL5.7安裝與配置(YUM)

isa 插件 lan 修改 文件路徑 res http off head 原文:https://www.linuxidc.com/Linux/2016-09/135288.htm 安裝環境:CentOS7 64位 MINI版,安裝MySQL5.7 1、配置YUM源 在M

YUM CentOS 7 64位下mysql5.7安裝配置

用戶 源安裝 sql安裝 ida -c 遠程連接 pri nbsp oar 配置YUM源 在MySQL官網中下載YUM源rpm安裝包:http://dev.mysql.com/downloads/repo/yum/ #下載mysql源安裝包 # wget http://de

CentOS 7安裝部署zabbix3.4

zabbix linux CentOS 7 安裝 部署 一、zabbix安裝配置1.zabbix簡介基於Web界面的分布式系統監控的企業級開源軟件。可以監控各種系統與設備,網絡參數,保證服務器設備安全運營;提供靈活的通知機制。1.1. zabbix的邏輯圖1.2. zabbix的組件z

MySQL5.7安裝(RPM)筆記

sym ica relay force grep flush oca user chan 1. 檢查MySQL是否安裝,如果有安裝,則移除(rpm –e 名稱)[root@localhost ~]# rpm -qa | grep -i mysqlmysql-libs-xxx

CentOS 7安裝部署ELK 6.2.4

ELK CentOS7 日誌服務器 日誌管理 安裝ELK 一、ELK介紹 ELK是三款開源軟件的縮寫,即:ElasticSearch + Logstash + Kibana。這三個工具組合形成了一套實用、易用的監控架構,可抓取系統日誌、apache日誌、nginx日誌、mysql日誌等多種

mysql5.6安裝部署

storage 配置 CM bst tex x86_64 linu mysqld engine 添加mysql用戶groupadd mysqluseradd mysql -g mysql -M -s /sbin/nologin 解壓文件tar –zxvf mysql-5.6

mysql5.7安裝的實踐過程與錯誤排查參考

dem 情況下 rod 添加 first row sco assume export 了解LAMP和安裝mysql服務 LAMP=Linux+Apache+Mysql+PHP四種組成的一個系統Apache和php必須在一臺服務器上才可使用,mysql可以通過網絡方式來提供服

ubuntu16.04卸載mysql5.7安裝mysql5.6

posit argument tput marked 6.0 filters mysql apt-get var 1. 刪除mysqla. sudo apt-get autoremove --purge mysql-server-5.0b. sudo apt-get rem

1-3 MySQL5.7安裝腳本與初始化腳本

print $nf root base del dir file error service 本文參考: http://www.unixfbi.com/1.html MySQL5.7安裝腳本 # cat mysql.sh groupadd mysql user

windows 64位mysql5.7安裝

windows 64位mysql5.7安裝 一、安裝mysql 1.下載mysql-5.7.15-winx64.zip http://dev.mysql.com/downloads/mysql/ 2.解壓縮到D:\ProgramFiles 3.在D:\ProgramFil