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