生活随笔
收集整理的這篇文章主要介紹了
001:介绍和安装
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
一. MySQL版本選擇 二. MySQL官方網站介紹1. Developer Zone: MySQL開發工程師板塊 2. Downloads:MySQL下載 3. Documentation:MySQL文檔 三. MySQL下載 四. MySQL安裝1. 安裝通用步驟: 2. MySQL 5.6.X 安裝: 3. MySQL 5.7.X 安裝 4. 驗證安裝 5. MySQL啟動 五. 附錄1. 配置文件my.cnf 2. 幾個重要的參數配置和說明 3. my.cnf問題 4. 安裝腳本 run_02_install_new_mysql_version.sh 一. MySQL版本選擇 MySQL5.6 以后的版本,推薦使用官方版本。 Percona:在5.6版本以后,MySQL將Percon之前優化集成到官方版本中; MariaDB:無INNODB;且核心代碼較老 MySQL在5.6以后不斷重構源碼,安裝包越來越大,功能和性能在持續改進 二. MySQL官方網站介紹 官方網站:http://www.mysql.com
1. Developer Zone: MySQL開發工程師板塊 Articles: Oracle工程師自己的博客 Plant MySQL: 和MySQL相關從業人員的博客 Bugs:MySQL BugList Worklog:開發記錄 Labs:MySQL實驗性項目 2. Downloads:MySQL下載 Enterprise:MySQL企業版本相關,略過 Community:社區版,我們下載和使用社區版 MySQL Community Server:MySQL Server MySQL Fabric : 和管理相關的工具 MySQL Router:路由中間件 MySQL Utilities:MySQL應用程序包 MySQL Workbench:官方圖型化管理界面 MySQL Proxy:MySQL代理。Alpha版本,不推薦 3. Documentation:MySQL文檔 官方文檔 版面更改,下載離線文檔在左側Menu的下面 三. MySQL下載 推薦下載Linux-Generic版本 Source Code版本主要作用是為了讓開發人員研究源碼使用,自己編譯對性能提升不明顯 不推薦Version 5.5.X,有部分bug 推薦使用Version 5.6.X和Version 5.7.X 下載地址:
四. MySQL安裝 1. 安裝通用步驟: 解壓縮mysql-VERSION-linux-glibc2.5-x86_64.tar.gz 打開INSTALL_BINARY 文件,按照shell>開頭的步驟進行操作 將export PATH=/安裝路徑/mysql/bin:$PATH添加到/etc/profile chkconfig mysqld on或者chkconfig mysqld.server on因你的環境而定。 2. MySQL 5.6.X 安裝: shell> yum install libaio # Debain系用戶:apt-get install libaio1
shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
3. MySQL 5.7.X 安裝 shell> groupadd mysql
shell> useradd -r -g mysql mysql
shell> cd /usr/local
shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
shell> ln -s full-path-to-mysql-VERSION-OS mysql
shell> cd mysql
shell> mkdir mysql-files
shell> chmod 770 mysql-files
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> bin/mysqld --initialize --user=mysql #該步驟中會產生臨時root@localhost密碼
shell> bin/mysql_ssl_rsa_setup
shell> chown -R root .
shell> chown -R mysql data mysql-files
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
4. 驗證安裝 data目錄在安裝之前是空目錄,安裝完成后應該有ibXXX等文件 安裝過程中輸出的信息中,不應該含有ERROR信息,錯誤信息默認會寫入到$HOSTNAME.err的文件中 通過bin/mysql命令(5.7.X含有臨時密碼)可以正常登錄 5. MySQL啟動 mysqld_safe --user=mysql & 即可啟動,mysqld_safe是一個守護mysqld進程的腳本程序,旨在mysqld意外停止時,可以重啟mysqld進程 也可以通過INSTALL_BINARRY中的的步驟,使用/etc/init.d/mysql.server start進行啟動(啟動腳本以你復制的實際名字為準,通常改名為mysqld,即/etc/init.d/mysqld start) 五. 附錄 1. 配置文件my.cnf # line :V1.9
# mail :gczheng@139.com
# data :2018-07-19
# file_name :my.cnf
# update :#### 注意 :建議參數根據實際情況作調整
#### 本配置文件主要適用于MySQL 5.7.18版本[client]
port = 3306
socket = /data/mysqldata/mysql.sock
#=======================================================================
# # MySQL客戶端配置
#=======================================================================
[mysql]
prompt="(\u@\h) \\R:\\m:\\s [\d]> "
no-auto-rehash
default-character-set = utf8mb4
#=======================================================================
# MySQL服務器全局配置
#=======================================================================
[mysqld]
user = mysql
port = 3306
server-id = 49180
tmpdir = /data/mysqldata
datadir = /data/mysqldata
socket = /data/mysqldata/mysql.sock
wait_timeout = 31536000
#interactive_timeout = 600
#sql_mode = #sql_mode 配置為空值
#skip_name_resolve = 1
lower_case_table_names = 1
character-set-server = utf8mb4
log_timestamps = SYSTEM
init_connect='SET NAMES utf8mb4'
max_allowed_packet = 128M
######################### 性能參數 ####################
open_files_limit = 10240
max_connections = 1000
max_user_connections=999
max_connect_errors = 100000
table_open_cache = 1024
thread_cache_size = 64
max_heap_table_size = 32M
query_cache_type = 0
###global cache ###
key_buffer_size = 1G
query_cache_size = 0
tmp_table_size = 32M #內存臨時表
binlog_cache_size = 4M #二進制日志緩沖
###session cache ###
sort_buffer_size = 8M #排序緩沖
join_buffer_size = 4M #表連接緩沖
read_buffer_size = 8M #順序讀緩沖
read_rnd_buffer_size = 8M #隨機讀緩沖
thread_stack = 256KB #線程的堆棧的大小
######################### binlog設置 #####################
binlog_format = ROW
log_bin = /data/mysqldata/binlog
max_binlog_size = 1G
expire_logs_days = 15 #binlog比較占空間,注意磁盤空間
sync_binlog = 1 #重要參數必須修改為1
######################### 復制設置 ########################
log_slave_updates = 1
#replicate-do-db = test
#binlog-ignore-db = mysql
### GTID 配置 ###
gtid_mode=ON
enforce-gtid-consistency=true
#****************** 開啟并行復制(從庫)******************
slave-parallel-type=LOGICAL_CLOCK #基于組提交的并行復制方式
slave-parallel-workers= 8 #并行的SQL線程數量(cpu核數)
master-info_repository=TABLE #master信息以表的形式保存
relay_log_info_repository=TABLE #slave信息以表的形式保存
relay_log_recovery=ON #relay_log自我修復
######################### innodb ##########################
default_storage_engine = InnoDB
innodb_data_file_path = ibdata1:1G:autoextend
innodb_buffer_pool_size = 1G #系統內存50%
innodb_open_files = 5120 #調整innodb_open_files設置值,必須小于open_files_limit的設置值
innodb_flush_log_at_trx_commit = 1 #線上服務器必須配置為1
innodb_file_per_table = 1
innodb_lock_wait_timeout = 5
innodb_io_capacity = 400 #根據您的服務器IOPS能力適當調整innodb_io_capacity,配SSD盤可調整到 10000 - 20000
innodb_io_capacity_max = 20000
innodb_flush_method = O_DIRECT
innodb_log_file_size = 1G
innodb_log_files_in_group = 2
innodb_large_prefix = 0
innodb_thread_concurrency = 64
innodb_strict_mode = OFF
innodb_sort_buffer_size = 4194304
#****************** undolog設置 ******************
innodb_undo_directory = /data/undolog #undolog空間的目錄位置
innodb_undo_tablespaces = 2 #undolog日志文件個數,mysql8之后將棄用
innodb_undo_logs = 128 #回滾段的數量, 至少大于等于35,默認128。
innodb_max_undo_log_size = 1G #當超過這個閥值(默認是1G),會觸發truncate回收(收縮)動作,truncate后空間縮小到10M。
innodb_purge_rseg_truncate_frequency = 128 #控制回收(收縮)undolog的頻率
innodb_undo_log_truncate = 1 #即開啟在線回收undolog日志文件
######################### log 設置 #####################
log_error = /data/mysqldata/error.log
slow_query_log = 1
long_query_time = 10
slow_query_log_file = /data/mysqldata/slow.log
#=======================================================================
# MySQL mysqldump配置
#=======================================================================
[mysqldump]
quick
max_allowed_packet = 128M
#=======================================================================
# MySQL mysqld_safe配置
#=======================================================================
[mysqld_safe]
log_error = /data/mysqldata/error.log
pid_file = /data/mysqldata/mysqldb.pid[mysqld-5.7]
innodb_buffer_pool_dump_pct = 40
innodb_page_cleaners = 4
innodb_undo_log_truncate = 1
innodb_max_undo_log_size = 2G
innodb_purge_rseg_truncate_frequency = 128
binlog_gtid_simple_recovery=1
log_timestamps=system
transaction_write_set_extraction=MURMUR32
show_compatibility_56=on
2. 幾個重要的參數配置和說明 innodb_log_file_size = 4G :做實驗可以更改的小點,線上環境推薦用4G,以前5.5和5.1等版本之所以官方給的值很小,是因為太大后有bug,現在bug已經修復 innodb_undo_logs = 128和innodb_undo_tablespaces = 3建議在安裝之前就確定好該值,后續修改比較麻煩 [mysqld],[mysqld-5.7]這種tag表明了下面的配置在什么版本下才生效,[mysqld]下均生效 datadir, innodb_log_group_home_dir, innodb_undo_directory一定要注意他的權限是 mysql:mysql 3. my.cnf問題 使用mysqld --help -vv | grep my.cnf查看mysql的配置文件讀取順序 后讀取的my.cnf中的配置,如果有相同項,會覆蓋之前的配置 使用--defaults-files可指定配置文件 4. 安裝腳本 run_02_install_new_mysql_version.sh 注意:腳本、my.cnf文件和mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz放在同一目錄下 #!/bin/bash
# line: V1.0
# mail: gczheng@139.com
# data: 2018-06-21
# script_name: run_02_install_new_mysql_version.sh
# function: Install mysql5.7.18#=======================================================================
#配置信息
#=======================================================================
MYCNF=my.cnf
MYSQL_SOURCE_PACKAGES=mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz
MYSQL_DOWNLOAD_LINK='http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.18-linux-glibc2.5-x86_64.tar.gz'
MYSQL=/usr/local/mysql/bin/mysql#=======================================================================
# echo添加顏色
#=======================================================================
echo_color(){color=${1} && shiftcase ${color} inblack)echo -e "\e[0;30m${@}\e[0m";;red)echo -e "\e[0;31m${@}\e[0m";;green)echo -e "\e[0;32m${@}\e[0m";;yellow)echo -e "\e[0;33m${@}\e[0m";;blue)echo -e "\e[0;34m${@}\e[0m";;purple)echo -e "\e[0;35m${@}\e[0m";;cyan)echo -e "\e[0;36m${@}\e[0m";;*)echo -e "\e[0;37m${@}\e[0m";;esac # --- end of case ---
}#=======================================================================
#檢查安裝包、腳本、my.cnf是否齊全
#=======================================================================function chk_install_resource()
{#判斷 template_install-my.cnf 是否存在if [ ! -f "$MYCNF" ];thenecho_color red "$(date +'%Y-%m-%d %H:%M:%S') $MYCNF file is not exits!$(echo_warning)"exit 1fi#判斷 MySQL Community Server 5.7.18 tar包是否存在if [ ! -f "$MYSQL_SOURCE_PACKAGES" ];thenecho_color red "$(date +'%Y-%m-%d %H:%M:%S') $MYSQL_SOURCE_PACKAGES is not exits, please download it from $MYSQL_DOWNLOAD_LINK"exit 1fi
}
#=======================================================================
# 添加帳號和目錄
#=======================================================================
function create_sys_user()
{#添加mysql用戶信息if id mysql &> /dev/null;thenecho_color red "$(date +'%Y-%m-%d %H:%M:%S') MySQL user is exits."elseuseradd -r -s /bin/false mysql && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') The system user is added to success .."fi#添加mysql數據目錄/r2/mysqldata和權限if [ -d "/r2" ];thenif [ ! -d "/r2/mysqldata" ];thenmkdir -p /r2/mysqldata && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') MySQL data directory is created .."chown -R mysql:mysql /r2/mysqldatachmod 750 /r2/mysqldataelif [ "$(ls -A /r2/mysqldata)" = "" ];thenecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') MySQL data directory is exits."elseecho_color red "$(date +'%Y-%m-%d %H:%M:%S') MySQL data directory is not empty. Please check it."exit 1fielseecho_color red "$(date +'%Y-%m-%d %H:%M:%S') /r2 directory is not exits. Please check the system config."exit 1fi
}
#=======================================================================
#檢查是否有舊的mysql/mariadb版本存在
#=======================================================================function chk_old_mysql_version()
{mysqlNum=$(rpm -qa | grep -Ei 'mysql|mariadb'|wc -l)if [ "${mysqlNum}" -gt "0" ];thenecho_color red "$(date +'%Y-%m-%d %H:%M:%S') The system has MySQL other version. There may be a conflict in the version!If it continues, the original database will be uninstall."read -p "Do you continue to install it(y/n):" cncase $cn iny|Y)rpm -qa | grep -Ei 'mysql|mariadb' | xargs yum remove -y &> /dev/nulltar_install;;n|N)exit 1;;*)echo_color red "$(date +'%Y-%m-%d %H:%M:%S') Input ERROR."esacelseecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') No old version was found."tar_installfi
}#=======================================================================
# 解壓安裝
#=======================================================================function tar_install()
{echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Starting unzip $MYSQL_SOURCE_PACKAGES .."tar zxvf $MYSQL_SOURCE_PACKAGES -C /usr/local/ echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Unzip $MYSQL_SOURCE_PACKAGES SUCCESS .."if [ ! -d "/usr/local/mysql" ];thenln -s /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'` /usr/local/mysqlchown -R mysql:mysql /usr/local/mysqlchown -R mysql:mysql /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'`chmod 750 /usr/local/mysqlchmod 750 /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'`echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') MySQL package has been placed in the right position .."cp -f $MYCNF /etc/my.cnfelseread -p "/usr/local/mysql install directory already exists, delete it, and continue(y/n):" dncase $dn iny|Y)rm -rf /usr/local/mysqlln -s /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'` /usr/local/mysqlchown -R mysql:mysql /usr/local/mysqlchown -R mysql:mysql /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'`chmod 750 /usr/local/mysqlchmod 750 /usr/local/`echo $MYSQL_SOURCE_PACKAGES |awk -F ".tar.gz" '{printf $1}'`echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') MySQL package has been placed in the right position .."cp -f $MYCNF /etc/my.cnf;;n|N)exit 1;;*)echo_color red "$(date +'%Y-%m-%d %H:%M:%S') /usr/local/mysql is exits.Please check it."esacfiecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Starting initialization .."/usr/local/mysql/bin/mysqld --initialize --user=mysql &> /dev/null && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Initialization ......SUCCESS"
}#=======================================================================
# 修改環境變量
#=======================================================================
function add_system_profile()
{
cat >> /etc/profile <<EOF
export PATH=\$PATH:/usr/local/mysql/bin/
EOF
source /etc/profile
}function modify_system_env()
{
#egrep "/usr/local/mysql/bin/" /etc/profile &> /dev/null
PROFILES=`grep -i "/usr/local/mysql/bin/" /etc/profile |wc -l`
if [ $PROFILES -eq 0 ];thenadd_system_profileecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Flush profile done .."
elseEXISTS=`grep -i "/usr/local/mysql/bin/" /etc/profile |grep -e "^#" |wc -l`if [ $EXISTS -gt 0 ];thenadd_system_profileecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Flush profile done .."fi
fi
}#=======================================================================
#創建MySQL服務
#=======================================================================function el7_create_mysql_service()
{cat > /usr/lib/systemd/system/mysql.service <<EOF
[Unit]
Description=mysql
After=syslog.target network.target remote-fs.target nss-lookup.target[Service]
Type=forking
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/usr/local/mysql/support-files/mysql.server restart
ExecStop=/usr/local/mysql/support-files/mysql.server stop
LimitNOFILE = 65535
PrivateTmp=false[Install]
WantedBy=multi-user.target
EOFsystemctl daemon-reload && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Reload systemd services .."systemctl enable mysql.service && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Enable MySQL systemd service .."systemctl start mysql.service && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Starting MySQL......SUCCESS!" || echo_color red "$(date +'%Y-%m-%d %H:%M:%S') Starting MySQL......FAILED!."
}function el6_create_mysql_service()
{cd /usr/local/mysql/support-files/cp mysql.server /etc/init.d/mysql chmod +x /etc/init.d/mysqlchkconfig --add mysql && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Add MySQL service for management .."chkconfig --list mysql && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') List MySQL service .."/etc/init.d/mysql start && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Starting MySQL......SUCCESS!" || echo_color red "$(date +'%Y-%m-%d %H:%M:%S') Starting MySQL......FAILED!."
}#=======================================================================
# 添加帳號
#=======================================================================function modify_mysql_account()
{password=$(awk '/A temporary password/ {print $NF}' /r2/mysqldata/error.log)#echo_color cyan "mysql temp password is ${password}"if [ "${password}" != "" ];then${MYSQL} -uroot -p"${password}" --connect-expired-password -e "alter user root@localhost identified by 'iforgot';flush privileges;" &> /dev/null && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') 系統隨機密碼修改成功."p1=$?elseecho_color red "$(date +'%Y-%m-%d %H:%M:%S') MySQL密碼獲取失敗,請排查/清除數據目錄重新安裝."exit 1fi${MYSQL} -uroot -piforgot -e "grant all privileges on *.* to gcdb@'%' identified by 'iforgot';" &> /dev/null && echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') 授予gcdb@'%'用戶通過任意主機操作所有數據庫的所有權限成功."p2=$?if [[ "${p1}" == "0" && "${p2}" == "0" ]];thenecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') 現在可以登錄mysql數據庫,root@localhost和gcdb@'%'用戶的默認密碼是\033[41;37m iforgot \033[0m."elseecho_color red "$(date +'%Y-%m-%d %H:%M:%S') 授權失敗,請手動執行授權操作."fi
}#=======================================================================
# 開始安裝mysql
#=======================================================================
function mysql_install()
{version=$(uname -r |awk -F '.' '{ print $(NF-1) }')if [ "${version}" != "el7" ];thenecho_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Start install mysql for el6."chk_install_resourcecreate_sys_userchk_old_mysql_versionmodify_system_envel6_create_mysql_servicemodify_mysql_accountelse echo_color cyan "$(date +'%Y-%m-%d %H:%M:%S') Start install mysql for el7."chk_install_resourcecreate_sys_userchk_old_mysql_versionmodify_system_envel7_create_mysql_servicemodify_mysql_accountfi
}mysql_install
echo_color blue "$(date +'%Y-%m-%d %H:%M:%S') \033[42;37m run_02_install_new_mysql_version.sh執行完成 \033[0m"
轉載于:https://www.cnblogs.com/gczheng/p/7879403.html
與50位技術專家面對面 20年技術見證,附贈技術全景圖
總結
以上是生活随笔 為你收集整理的001:介绍和安装 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。