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

Ubuntu 10.04 64位編譯安裝 MySQL 完整實戰手冊

     編輯:MySQL 綜合教學

Ubuntu 10.04 64位編譯安裝 MySQL 完整實戰手冊

從源碼編譯安裝 MySQL 可根據硬體特性啟用最優化選項,移除無用模組,顯著提升效能。本文記錄基於 CMake 的現代編譯流程、GCC 4.8.2 升級步驟、核心配置參數詳解與安裝後初始化腳本。

一、環境準備:升級 GCC 至 4.8.2

Ubuntu 10.04 預設 GCC 4.4 版本較舊,編譯 MySQL 5.6+ 建議升級至 4.8+ 以獲得更好優化與 C++11 支援。

1. 下載源碼包

# 官方鏡像
wget https://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.2/gcc-4.8.2.tar.gz
# 依賴庫
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz

2. 編譯安裝腳本(含依賴庫整合)

#!/bin/bash
gccver=4.8.2; gmpver=4.3.2; mpfrver=2.4.2; mpcver=0.8.1
pkgdir=.; rootdir=gcc-${gccver}; prefix=/opt/gcc-${gccver}; langs=c,c++

mkdir -p ${rootdir}
tar xzf ${pkgdir}/gcc-${gccver}.tar.gz
tar xjf ${pkgdir}/gmp-${gmpver}.tar.bz2
tar xjf ${pkgdir}/mpfr-${mpfrver}.tar.bz2
tar xzf ${pkgdir}/mpc-${mpcver}.tar.gz

# 將依賴庫移入 gcc 源碼目錄(自動編譯模式)
mv gmp-${gmpver} ${rootdir}/gmp
mv mpfr-${mpfrver} ${rootdir}/mpfr
mv mpc-${mpcver} ${rootdir}/mpc

pushd ${rootdir}
./configure --prefix=${prefix} --enable-languages=${langs} --disable-multilib
make -j$(nproc)
make install
popd

# 更新系統預設編譯器
update-alternatives --remove-all gcc
update-alternatives --remove-all g++
update-alternatives --install /usr/bin/gcc gcc /opt/gcc-4.8.2/bin/gcc 40
update-alternatives --install /usr/bin/g++ g++ /opt/gcc-4.8.2/bin/g++ 40
update-alternatives --config gcc
update-alternatives --config g++

# 替換 libstdc++.so(關鍵步驟,避免運行時連結舊版)
rm -f /usr/lib/libstdc++*
cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6.0.18 /usr/lib/
cp -f /opt/gcc-4.8.2/lib64/libstdc++.so.6 /usr/lib/

二、MySQL CMake 核心配置參數詳解

MySQL 5.5+ 全面改用 CMake,以下為生產環境推薦配置(針對 5.6 版本):

cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DCMAKE_BUILD_TYPE=Release \
-DSYSCONFDIR=/etc \
-DINSTALL_SBINDIR=/usr/local/mysql/bin \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DENABLED_LOCAL_INFILE=1 \
-DMYSQL_TCP_PORT=3306 \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_EMBEDDED_SERVER=0 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=0 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=0 \
-DWITH_MEMORY_STORAGE_ENGINE=0 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=0 \
-DWITH_EXTRA_CHARSETS=none \
-DWITH_DEBUG=0 \
-DWITH_ASAN=0

關鍵參數說明

參數建議值說明
CMAKE_BUILD_TYPERelease啟用 -O2 優化,去除除錯符號
DEFAULT_CHARSETutf8mb4支援完整 Unicode,含 Emoji
WITH_INNOBASE_STORAGE_ENGINE1InnoDB 核心引擎,必須啟用
WITH_PARTITION_STORAGE_ENGINE1分區表支援
WITH_DEBUG0生產環境關閉除錯,提升 10-15% 效能
WITH_ASAN0AddressSanitizer 僅用於開發測試

三、編譯安裝與初始化

# 編譯(多核加速)
make -j$(nproc)
make install

# 建立用戶與權限
groupadd mysql
useradd -r -g mysql mysql
chown -R mysql:mysql /usr/local/mysql/data

# 初始化系統表 (MySQL 5.7+ 使用 --initialize-insecure)
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 啟動服務
/usr/local/mysql/support-files/mysql.server start

# 設定 root 密碼
/usr/local/mysql/bin/mysql -uroot -D mysql -e "UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='root'; FLUSH PRIVILEGES;"

四、生產環境 my.cnx 核心優化範本

[mysqld]
# 連線設定
max_connections=4000
back_log=1500
table_open_cache=8000
table_open_cache_instances=16

# InnoDB 核心
innodb_file_per_table=1
innodb_buffer_pool_size=32G
innodb_buffer_pool_instances=32
innodb_log_file_size=1G
innodb_log_files_in_group=3
innodb_flush_log_at_trx_commit=2
innodb_flush_method=O_DIRECT
innodb_read_io_threads=4
innodb_write_io_threads=4
innodb_io_capacity=4000
innodb_thread_concurrency=0

# 關閉無用特性
innodb_doublewrite=0
innodb_support_xa=0
innodb_adaptive_hash_index=0
query_cache_type=0
performance_schema=OFF

# 字符集
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci

五、常見問題排查

  • libstdc++ 版本衝突: 必須替換系統 /usr/lib/libstdc++.so.6 為新版 GCC 編譯產出的版本。
  • CMAKE_BUILD_TYPE=Debug 導致效能極差:生產務必使用 Release 或 RelWithDebInfo。
  • 大頁面支援: 若啟用 large-pages,需在 OS 層面配置 vm.nr_hugepages 並給 mysql 用戶 cap_ipc_lock 權限。

參考資源: MySQL 官方 CMake 選項 | 本文配套腳本與配置檔打包

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