# 目錄規劃
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
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
| 參數 | 說明 | 建議值 |
|---|---|---|
-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 LOCAL | 1 |
-DWITH_*_STORAGE_ENGINE | 啟用存儲引擎 | InnoDB/MyISAM/MEMORY/Partition/Federated 均建議 1 |
-DWITH_READLINE | 支援命令行編輯 | 1 |
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
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig mysql on
service mysql start
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile
mysql -uroot
SET PASSWORD = PASSWORD('root');
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
FLUSH PRIVILEGES;
GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, SUPER ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';
# 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
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% 性能,是高性能場景的必經之路。