MySQL可運行的最小資源需求極低。InnoDB緩衝池的默認大小僅128M。基於基準測試數據,MySQL內存佔用從1G到64G運行效率提高明顯,CPU從1核至48核運行效率提高明顯,進一步增長資源性能提高趨於平緩。而建議單數據庫主機數據庫內存設置在40%-60%左右。建議主機內存不超過126G,CPU核數不超過48核。mysql
操做系統linux |
CentOS Linux release 7.5.1804sql |
處理器數據庫 |
1bash |
內存服務器 |
4G網絡 |
硬盤架構 |
38G運維 |
主機名稱socket |
chenzx |
IP地址 |
192.168.56.8 |
MySQL數據庫建議運行在特定的用戶與用戶組下。對於同一主機安裝不一樣MySQL數據庫的場景,建議使用不一樣的用戶管理不一樣的數據庫。
用戶ID |
用戶名稱 |
用戶組ID |
用戶組名稱 |
備註 |
1001 |
mysql |
1001 |
mysql |
數據庫操做系統用戶 |
用戶不存在則很使用如下命令建立:
# groupadd -g 1001 mysql
# useradd –u 1001 –g mysql mysql
若已存在則使用如下命令修改:
# groupmod -g 1001 mysql
# usermod -s /bin/bash -u 1001 mysql
應用經過服務IP接入PROD數據庫,故障時經過服務IP的漂移實現高可用性。本文不涉及高可用部分,須要開放3306端口,固定IP用於複製接入,服務IP用於應用接入。
接口名 |
主機名 |
IP地址 |
端口 |
描述 |
ens32 |
chenzx |
192.168.5.68 |
3306 |
固定IP地址 |
數據庫相關文件系統規劃,一個好的文件系統規劃,有利於後續運維人員進行維護。
路徑 |
文件系統大小 |
功能說明 |
/mysql/mysql_data |
200GB |
數據目錄,存放數據文件,大小根據數據量而定。 |
/mysql/mysql_log |
200GB |
數據庫redo、bin-log、relay-log等日誌,能夠根據具體需求再進行拆分。 |
/mysql/mysql_dump |
100GB |
備份目錄,數據庫備份或者其餘數據文件備份。 |
建立相關目錄:
# mkdir –p /mysql/mysql_data
# mkdir –p /mysql/mysql_log
# mkdir –p /mysql/mysql_dump
修改相關目錄的屬組信息:
# chown –R mysql:mysql /mysql/mysql_data
# chown –R mysql:mysql /mysql/mysql_log
# chown –R mysql:mysql /mysql/mysql_dump
數據庫目錄規劃:
路徑 |
功能說明 |
/mysql/mysql-5.7.23 |
區分版本的軟件安裝目錄,軟鏈接(/usr/local/mysql)指向目錄 |
/home/mysql |
mysql用戶家目錄 |
/mysql/mysql_data/mysql |
數據目錄,存放數據文件 |
/mysql/mysql_data/tmp |
臨時數據目錄 |
/mysql/mysql_log/redolog |
redo日誌目錄 |
/mysql/mysql_log/binlog |
二進制日誌目錄 |
/mysql/mysql_log/relaylog |
複製用中繼日誌目錄 |
/mysql/mysql_log/slowlog |
指定慢查詢日誌目錄 |
/mysql/mysql_log/innodb |
InnoDB日誌目錄 |
/mysql/mysql_log/errlog |
錯誤日誌目錄 |
建立相關目錄:
# mkdir –p /mysql/mysql_log/redolog
# mkdir –p /mysql/mysql_log/binlog
# mkdir –p /mysql/mysql_log/relaylog
# mkdir –p /mysql/mysql_log/slowlog
# mkdir –p /mysql/mysql_log/innodb
# mkdir –p /mysql/mysql_log/errlog
修改相關目錄的屬組信息:
# chown –R mysql:mysql /mysql/mysql_log/redolog
# chown –R mysql:mysql /mysql/mysql_log/binlog
# chown –R mysql:mysql /mysql/mysql_log/relaylog
# chown –R mysql:mysql /mysql/mysql_log/slowlog
# chown –R mysql:mysql /mysql/mysql_log/innodb
# chown –R mysql:mysql /mysql/mysql_log/errlog
注意:
MySQL數據目錄規劃因根據數據庫預計承載的數據量而定,當超過1T時,建議規劃多個數據目錄。
MySQL安裝目錄所在的文件系統,建議保持15G左右的空閒,用於後續升級。
MySQL redo日誌目錄大小應根據數據庫平常寫入量而定,建議15G左右。
MySQL 二進制日誌存放歸檔的操做記錄,根據數據庫的繁忙程度,建議在50-100G左右。
若是是集羣架構,須要計劃中繼日誌目錄。中繼日誌大小根據主庫二進制日誌產生量而定,通常是主庫二級制目錄大小的50%。
本文主要介紹MySQL社區版二進制軟件包的安裝過程。通常狀況下,PROD環境和TEST環境都應該選用GA版本,切勿使用DMR版本、RC版本和Beta版本。二進制軟件包能夠到官網(https://www.mysql.com/downloads/)進行下載。
點擊社區版本後進入下一個界面,選擇「MySQL Community Server」。
使用scp或者ftp等工具把安裝包(mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz)上傳至服務器,並使用命令生成軟件安裝包的md5碼與官網md5碼進行比對:
$ md5sum mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz
比對結果必須一致!!!
官網提供MD5碼 |
下載後生成MD5碼 |
比對結果 |
d903d3dbf235b74059a4b3e216c71161 |
|
一致 |
二進制的安裝方式中,官方版本中已經把全部功能都配置好了,安裝使用起來方便簡單。
1) 解壓安裝包
$ su - mysql
$ tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /mysql/
2) 解壓文件更名
$ su - mysql
$ mv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql-5.7.23/
3) 創建軟連接
$ su -
# ln -s /mysql/mysql-5.7.23/ /usr/local/mysql
# chown mysql:mysql -R /usr/local/mysql
因爲是二進制安裝,數據庫的配置文件須要本身配置。
$ cat /etc/my.cnf
[mysql]
prompt="\u@\h:\p \R:\m:\s [\d]>"
[client]
port=3306
socket=/tmp/mysql.sock
[mysql_multi]
mysqld = /usr/local/mysql/bin/mysqld
mysqladmin = /usr/local/mysql/bin/mysqladmin
user = mysql
[mysqld]
############################ system ##################################
basedir = /usr/local/mysql
server-id = 189
port = 3306
user = mysql
read_only = off
character-set-server = utf8
socket = /tmp/mysql.sock
datadir = /mysql/mysql_data/mysql
lower_case_table_names = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
show_compatibility_56 = on
#skip_slave_start = 1
explicit_defaults_for_timestamp = ON
skip-name-resolve
log_timestamps = SYSTEM
#skip_grant_tables
############################ log ##################################
max-binlog-size = 1G
binlog_cache_size = 2097152
master_info_repository = TABLE
innodb_log_group_home_dir = /mysql/mysql_log/innodb/
log-bin = /mysql/mysql_log/binlog/logbin.log
relay_log = /mysql/mysql_log/relaylog/relay.log
log-error = /mysql/mysql_log/errlog/error.err
slow-query-log-file = /mysql/mysql_log/slowlog/slow.log
slow-query-log = 1
long_query_time = 1
relay_log_info_repository = TABLE
relay_log_recovery = 1
slave_preserve_commit_order = 1
log-queries-not-using-indexes = 0
expire_logs_days = 7
binlog_format = row
sync-binlog = 1
log_bin_trust_function_creators = 1
########################### connection ##############################
open-files-limit = 65535
symbolic-links = 0
max_allowed_packet = 1024M
max_connections = 3000
max_user_connections = 3000
max_connect_errors = 1000000
transaction_isolation = READ-COMMITTED
########################### BUFFER ##############################
query-cache-type = 0
query-cache-size = 0
thread-cache-size = 50
innodb_buffer_pool_size = 2G
innodb_buffer_pool_instances = 8
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1
innodb_print_all_deadlocks = 1
innodb_log_file_size = 1G
innodb_log_buffer_size = 16M
innodb_flush_log_at_trx_commit = 1
innodb_log_files_in_group = 3
################GTID#################
#gtid_mode = 1
#enforce_gtid_consistency = 1
slave_parallel_workers = 4
slave_parallel_type = LOGICAL_CLOCK
slave_preserve_commit_order = 1
log_slave_updates = 1
[mysqld_safe]
log-error = /mysql/mysql_log/errlog/error.err
pid-file = /mysql/mysql.pid
注意:
MySQL讀取配置文件的順序是
1) /etc/my.cnf
2) /etc/mysql/my.cnf
3) /usr/local/mysql/etc/my.cnf~/.my.cnf
建立數據庫
$ /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mysql/mysql_data/mysql --user=mysql --initialize
$ /usr/local/mysql/bin/mysqld_safe --user=mysql&