mysql-5.6.19.tar.gz/doiido/server/mysql/doiido/mysql/data# CentOS 6 (iptables)
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
/etc/rc.d/init.d/iptables save
# CentOS 7 (firewalld)
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
yum -y install gcc gcc-c++ ncurses ncurses-devel openssl openssl-devel cmake perl lsof bison
rpm -qa | grep -i mysql
rpm -e --allmatches --nodeps mysql-libs-5.1.71-1.el6.x86_64 # 視實際包名調整
groupadd mysql
useradd -r -s /sbin/nologin -g mysql mysql
mkdir -p /doiido/mysql/data
chown -R mysql:mysql /doiido/mysql
cd /doiido/soft
tar -zxvf mysql-5.6.19.tar.gz
cd mysql-5.6.19
cmake \
-DCMAKE_INSTALL_PREFIX=/doiido/server/mysql \
-DMYSQL_DATADIR=/doiido/mysql/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_MEMORY_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DSYSCONFDIR=/etc \
-DWITH_SSL=yes \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_READLINE=on \
-DCMAKE_C_FLAGS="-O3" \
-DCMAKE_CXX_FLAGS="-O3"
make -j$(nproc) && make install
| 參數 | 作用 |
|---|---|
-DCMAKE_C_FLAGS="-O3" | 啟用最高級別編譯器優化 (針對 CPU 指令集) |
-DWITH_SSL=yes | 啟用 SSL 加密連接支援 |
-DDEFAULT_CHARSET=utf8 | 預設字符集 (新專案建議 utf8mb4) |
-DWITH_INNOBASE_STORAGE_ENGINE=1 | 編譯 InnoDB (5.6 內建,此參數確保啟用) |
chown -R mysql:mysql /doiido/server/mysql
ln -s /doiido/server/mysql/lib/lib* /usr/lib/
ln -s /doiido/server/mysql/bin/mysql /usr/bin/mysql
[mysqld]
character-set-server = utf8
default-storage-engine = InnoDB
basedir = /doiido/server/mysql
datadir = /doiido/mysql/data
log-error = /doiido/mysql/mysql_error.log
pid-file = /doiido/mysql/mysql.pid
max_allowed_packet = 32M
explicit_defaults_for_timestamp = true
innodb_buffer_pool_size = 1G # 視記憶體 60-70%
innodb_log_file_size = 256M
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1
/doiido/server/mysql/scripts/mysql_install_db \
--basedir=/doiido/server/mysql \
--datadir=/doiido/mysql/data \
--user=mysql
cp /doiido/server/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
# 編輯 /etc/init.d/mysqld 確認 basedir/datadir 路徑正確
chkconfig --add mysqld
chkconfig --level 345 mysqld on
service mysqld start
tcmalloc (Thread-Caching Malloc) 針對多線程高併發分配優化,減少 malloc/free 鎖爭用,MySQL 作為典型多線程應用受益顯著。
# 1. libunwind (64位必裝,tcmalloc 依賴)
cd /doiido/soft
tar zxvf libunwind-1.1.tar.gz
cd libunwind-1.1
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC && make CFLAGS=-fPIC install
# 2. gperftools (tcmalloc 所在包)
cd /doiido/soft
tar zxvf gperftools-2.2.tar.gz
cd gperftools-2.2
./configure && make && make install
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
# 編輯 MySQL 啟動腳本
vi /doiido/server/mysql/bin/mysqld_safe
# 在 "# executing mysqld_safe" 下方添加:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
service mysqld restart
/usr/sbin/lsof -n | grep tcmalloc
# 輸出包含 mysqld 進程映射 libtcmalloc.so 即成功
sysbench OLTP 測試對比 tcmalloc 前後 QPS/TPSinnodb_buffer_pool_pages_free、Threads_running、Innodb_row_lock_time_avgmalloc 相關內存碎片率下降遷移建議: MySQL 5.6 已停止維護 (EOL 2021/02),新部署**強烈建議 MySQL 8.0 或 Percona Server 8.0**,原生支援更多優化特性 (即時 DDL、隱藏索引、CTE、窗口函數、更好的成本模型),且社區活躍、安全更新及時。