Percona Server 是 MySQL 的增強版分支,專注於效能優化、診斷工具與企業級特性。本文詳細記錄 Percona Server 5.5.33-31.1 在 CentOS/RHEL 環境下的完整安裝、配置與驗證流程,適用於生產環境部署參考。
PERFORMANCE_SCHEMA 增強、慢查詢日志微秒級精度yum install -y libaio numactl-libs perl-DBI perl-DBD-MySQL \
openssl-libs zlib libgcrypt libstdc++
# 安裝 Percona Release 套件 yum install -y https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 啟用 Percona Server 5.5 版本倉庫 percona-release enable ps-55 release
yum install -y Percona-Server-server-55 Percona-Server-client-55 \
Percona-Server-shared-55 Percona-Server-devel-55
rpm -qa | grep -i percona-server # 預期輸出: # Percona-Server-server-55-5.5.33-rel31.1.el6.x86_64 # Percona-Server-client-55-5.5.33-rel31.1.el6.x86_64 # ...
# 下載 RPM 包束 wget https://www.percona.com/downloads/Percona-Server-5.5/Percona-Server-5.5.33-31.1/binary/redhat/6/x86_64/Percona-Server-5.5.33-rel31.1.el6.x86_64.rpm.tar.gz # 解壓 tar -xzf Percona-Server-5.5.33-rel31.1.el6.x86_64.rpm.tar.gz cd Percona-Server-5.5.33-rel31.1.el6.x86_64 # 按依賴順序安裝 rpm -ivh Percona-Server-shared-55-5.5.33-rel31.1.el6.x86_64.rpm rpm -ivh Percona-Server-client-55-5.5.33-rel31.1.el6.x86_64.rpm rpm -ivh Percona-Server-server-55-5.5.33-rel31.1.el6.x86_64.rpm rpm -ivh Percona-Server-devel-55-5.5.33-rel31.1.el6.x86_64.rpm
[mysqld] # 基礎設置 datadir=/data/mysql socket=/var/lib/mysql/mysql.sock port=3306 server-id=1 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci # InnoDB/XtraDB 核心參數 innodb_buffer_pool_size=4G # 物理內存 60-70% innodb_log_file_size=512M # 大日志文件減少檢查點壓力 innodb_log_buffer_size=64M innodb_flush_log_at_trx_commit=1 # ACID 合規,核心業務建議 1 innodb_flush_method=O_DIRECT # 繞過文件系統緩存 innodb_file_per_table=ON # 獨立表空間 innodb_read_io_threads=8 innodb_write_io_threads=8 innodb_io_capacity=2000 # SSD 建議 2000+, HDD 200 # 連接與線程 max_connections=2000 thread_cache_size=100 thread_handling=pool-of-threads # 啟用 Thread Pool (Percona 特有) thread_pool_size=16 # 日志與監控 slow_query_log=ON slow_query_log_file=/var/log/mysql/slow.log long_query_time=0.5 # 記錄超過 0.5 秒的查詢 log_queries_not_using_indexes=ON log_slow_admin_statements=ON log_slow_slave_statements=ON # 二進制日志(主從復制必備) log-bin=mysql-bin binlog_format=ROW expire_logs_days=7 max_binlog_size=1G sync_binlog=1 # 安全與限制 skip-name-resolve max_allowed_packet=64M sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION # Percona 特有增強 innodb_buffer_pool_dump_at_shutdown=ON innodb_buffer_pool_load_at_startup=ON innodb_checksum_algorithm=crc32
mkdir -p /data/mysql /var/log/mysql chown -R mysql:mysql /data/mysql /var/log/mysql chmod 750 /data/mysql
# CentOS 7 (systemd) systemctl start mysqld # 或 service mysql start # 首次啟動會自動執行 mysql_install_db
mysql_secure_installation # 按提示設置 root 密碼、移除匿名用戶、禁止遠程 root 登錄、移除 test 庫
systemctl enable mysqld # 或 chkconfig mysql on
# 連接測試 mysql -uroot -p -e "SELECT VERSION(); SHOW ENGINES; SHOW VARIABLES LIKE 'thread_pool%';" # 預期輸出確認: # VERSION(): 5.5.33-rel31.1 # ENGINES: XtraDB 支持 YES # thread_pool: 相關變量存在
# 安裝 sysbench
yum install -y sysbench
# 準備測試數據
sysbench --test=oltp --oltp-table-size=1000000 \
--mysql-db=test --mysql-user=root --mysql-password=xxx \
prepare
# 運行測試
sysbench --test=oltp --oltp-table-size=1000000 \
--mysql-db=test --mysql-user=root --mysql-password=xxx \
--max-time=300 --max-requests=0 --num-threads=64 run
| 問題現象 | 可能原因 | 解決方案 |
|---|---|---|
| 啟動失敗:InnoDB: Unable to lock ./ibdata1 | 進程殘留或權限問題 | 檢查 ps -ef|grep mysql,kill 殘留進程;確認 datadir 權限 |
| 連接報錯:Can't connect to local MySQL server through socket | socket 路徑不匹配 | 檢查 my.cnf 中 socket 參數,或指定 -S /var/lib/mysql/mysql.sock |
| 中文亂碼 | 字符集配置不一致 | 統一設置 character-set-server=utf8mb4,應用連接指定 charset |
| Thread Pool 不生效 | 版本不支持或配置錯誤 | 確認 Percona Server 版本,檢查 thread_handling=pool-of-threads |
Percona Server 5.5.33-31.1 作為 MySQL 5.5 的強化版本,在保持完全兼容的前提下,通過 XtraDB 引擎、Thread Pool、增強監控等特性,顯著提升了高併發場景下的穩定性與效能。採用 YUM 倉庫安裝可簡化依賴管理與後續升級,配合合理的 my.cnf 調優與標準化運維流程,能為業務系統提供堅實的資料庫基礎設施支撐。