首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Linux 系統下 MySQL 原始碼編譯安裝與基礎配置完整指南

     編輯:MySQL 資料庫相關知識

本文詳細記錄從依賴安裝、原始碼編譯、目錄規劃、參數配置到服務啟動與優化的完整流程,以 MySQL 5.6.12 為例,適用於 CentOS 與 Ubuntu 環境。

一、安裝編譯依賴

CentOS

yum -y install wget gcc-c++ cmake make bison ncurses-devel perl unzip

Ubuntu

sudo apt-get install -y g++ gcc make libpcre3 zlib1g libbz2-dev automake cmake perl libncurses5-dev bison

二、建立系統用戶與目錄

groupadd mysql
useradd -r -g mysql mysql
mkdir -p /data/logs/mysql /data/mysql

三、下載與配置原始碼

wget https://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.12.tar.gz
tar xf mysql-5.6.12.tar.gz
cd mysql-5.6.12

執行 cmake 配置(關鍵參數說明見下):

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/server/mysql-5.6.12 \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DMYSQL_USER=mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLE_DOWNLOADS=1
參數說明
CMAKE_INSTALL_PREFIX安裝根目錄
MYSQL_DATADIR資料檔存放目錄
MYSQL_UNIX_ADDRSocket 檔案路徑
MYSQL_USER執行身分用戶
DEFAULT_CHARSET預設字元集
DEFAULT_COLLATION預設排序規則
WITH_INNOBASE_STORAGE_ENGINE啟用 InnoDB
ENABLE_DOWNLOADS自動下載測試套件(如 gmock)

常見錯誤處理:若出現 CMake Error: Problem extracting tar: gmock-1.6.0.zip,進入 source_downloads 目錄手動 unzip gmock-1.6.0.zip 後重跑 cmake,或移除 -DENABLE_DOWNLOADS=1 參數。

四、編譯安裝與權限設定

make && make install
ln -s /usr/local/server/mysql-5.6.12 /usr/local/server/mysql
chown -R mysql:mysql /usr/local/server/mysql*
chown -R mysql:mysql /data/mysql /data/logs/mysql

五、初始化資料庫

/usr/local/server/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/mysql --basedir=/usr/local/server/mysql --collation-server=utf8_general_ci

若出現 TIMESTAMP with implicit DEFAULT value is deprecated 警告,後續在 my.cnf 加入 explicit_defaults_for_timestamp=true 即可解決。

六、配置啟動腳本與 my.cnf

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

編輯安裝目錄下的 my.cnf(範例關鍵段落):

[mysqld]
datadir = /data/mysql
socket = /tmp/mysql.sock
pid-file = /data/logs/mysql/mysql.pid
user = mysql
port = 3306
default_storage_engine = InnoDB
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
character-set-server=utf8
collation-server=utf8_general_ci
skip-host-cache
skip-name-resolve
log_error = /data/logs/mysql/mysql-error.log
slow_query_log = 1
long_query_time = 1
slow_query_log_file = /data/logs/mysql/mysql-slow.log
explicit_defaults_for_timestamp=true
max_connections = 500
open_files_limit = 65535
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

[client]
socket = /tmp/mysql.sock
port = 3306

注意:被註解的參數(如 innodb_buffer_pool_size)需依實際硬體資源調整;確認 /etc/my.cnf 不存在衝突配置;啟動前再次檢查目錄權限。

七、啟動與後續設定

service mysql start
echo 'export PATH=$PATH:/usr/local/server/mysql/bin' >> /etc/profile
source /etc/profile
/usr/local/server/mysql/bin/mysql_secure_installation  # 設定密碼、移除匿名帳號等
chkconfig mysql on  # CentOS 開機自啟
# update-rc.d mysql defaults  # Ubuntu

八、核心參數調優建議

InnoDB 緩衝池 (innodb_buffer_pool_size)

InnoDB 最關鍵參數,建議設為實體記憶體 60%-70%(扣除 OS、其他服務、連線緩衝、Log 緩衝後)。過大導致 Swap 反而拖慢效能。

Redo Log (innodb_log_file_size)

總大小建議能容納 1 小時寫入量,通常設定數百 MB 至數 GB。配合 innodb_log_files_in_group 使用。

MyISAM Key Buffer (key_buffer_size)

僅緩存索引。可透過 SELECT SUM(INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE ENGINE='MYISAM'; 或 du -sch `find /datadir -name "*.MYI"` 評估索引總大小,取較小值設定。

其他重要參數

  • skip-name-resolve:跳過 DNS 解析,降低延遲。
  • max_connections:依預期並發數設定,避免「Too many connections」。
  • table_open_cache:建議為 max_connections 的 10 倍,上限 10000。
  • max_connect_errors:防暴力破解,建議 2000+。
  • open_files_limit:設大(65535)防止「too many open files」。

原則:MySQL 預設值多已優化,僅調整核心參數即可;隨業務增長定期複核,避免過度優化導致不穩定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved