首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.6 源碼編譯安裝全流程:從依賴安裝到生產級配置優化

     編輯:MySQL 綜合教學

MySQL 5.6 源碼編譯安裝全流程:從依賴安裝到生產級配置優化

1. 環境準備

# 目錄規劃
mkdir -p /usr/local/mysql          # 安裝目錄
mkdir -p /usr/local/mysql/data     # 數據目錄

# 用戶/組
groupadd mysql
useradd -r -g mysql mysql

# 編譯依賴
yum -y install gcc gcc-c++ autoconf bison cmake automake \
  zlib-devel flex-devel libxml2-devel ncurses-devel \
  libmcrypt-devel libtool-ltdl-devel

2. 下載與編譯安裝

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.15.tar.gz
tar -zxf mysql-5.6.15.tar.gz
cd mysql-5.6.15

cmake \
  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
  -DMYSQL_DATADIR=/usr/local/mysql/data \
  -DSYSCONFDIR=/etc \
  -DWITH_MYISAM_STORAGE_ENGINE=1 \
  -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  -DWITH_MEMORY_STORAGE_ENGINE=1 \
  -DWITH_FEDERATED_STORAGE_ENGINE=1 \
  -DWITH_READLINE=1 \
  -DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
  -DMYSQL_TCP_PORT=3306 \
  -DENABLED_LOCAL_INFILE=1 \
  -DWITH_PARTITION_STORAGE_ENGINE=1 \
  -DEXTRA_CHARSETS=all \
  -DDEFAULT_CHARSET=utf8 \
  -DDEFAULT_COLLATION=utf8_general_ci

make && make install

關鍵 CMake 參數速查

參數說明建議值
-DCMAKE_INSTALL_PREFIX安裝根目錄/usr/local/mysql
-DMYSQL_DATADIR數據文件目錄/usr/local/mysql/data
-DDEFAULT_CHARSET默認字符集utf8 / utf8mb4
-DDEFAULT_COLLATION默認排序規則utf8_general_ci
-DEXTRA_CHARSETS額外字符集all
-DENABLED_LOCAL_INFILE允許 LOAD DATA LOCAL1
-DWITH_*_STORAGE_ENGINE啟用存儲引擎InnoDB/MyISAM/MEMORY/Partition/Federated 均建議 1
-DWITH_READLINE支援命令行編輯1

3. 權限與初始化

chown -R mysql:mysql /usr/local/mysql
cd /usr/local/mysql
scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --user=mysql
mv /usr/local/mysql/my.cnf /etc/my.cnf   # 若有產生
chown -R mysql:mysql /usr/local/mysql

4. 服務註冊與啟動

cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig mysql on
service mysql start

5. 環境變量

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

6. Root 密碼與遠程授權

mysql -uroot
SET PASSWORD = PASSWORD('root');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;

7. 備份賬號

GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, SUPER ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';

8. 防火牆開放 3306

# CentOS 6 / iptables
vim /etc/sysconfig/iptables
# 加入:-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
service iptables restart

# CentOS 7 / firewalld
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

9. 生產級補充建議

  • my.cnf 分離 datadir、log-bin、slow_query_log 到不同磁盤。
  • innodb_file_per_table = 1 開啟獨立表空間,利於空間回收與傳輸。
  • 監控 Innodb_buffer_pool_wait_free、Innodb_log_waits 調整 innodb_buffer_pool_size、innodb_log_file_size。
  • 定期 pt-online-schema-change 做 DDL,避免鎖表。

源碼編譯雖繁瑣,但能精準控制特性、去除調試符號、靜態鏈接提升 5-10% 性能,是高性能場景的必經之路。

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