| 方式 | 優點 | 缺點 | 推薦場景 |
|---|---|---|---|
| 二進制包 | 版本自主、路徑自定、多實例友好、無依賴地獄 | 手動整合 systemd、logrotate、監控 | 生產核心叢集、多版本共存 |
| YUM/RPM | 系統整合度高、升級簡單 | 版本受限、路徑固定 | 標準化運維、非核心庫 |
| 源碼編譯 | 極致定製 | 維護成本極高 | 特殊硬體優化、學習研究 |
cd /opt wget https://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz tar -zxvf mysql-5.7.15-linux-glibc2.5-x86_64.tar.gz ln -s mysql-5.7.15-linux-glibc2.5-x86_64 /usr/local/mysql2. 使用者與目錄
groupadd mysql useradd -r -g mysql -s /bin/false -d /usr/local/mysql -M mysql mkdir -p /data/mysql/mysql3306/{data,logs,tmp} chown -R mysql:mysql /usr/local/mysql /opt/mysql /data/mysql3. 環境變數
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile source /etc/profile4. 配置檔
將
my.cnf放入/data/mysql/mysql3306/,核心內容:[mysqld] basedir=/usr/local/mysql datadir=/data/mysql/mysql3306/data port=3306 socket=/tmp/mysql3306.sock pid-file=/data/mysql/mysql3306/mysql3306.pid log-error=/data/mysql/mysql3306/logs/error.log slow_query_log=1 slow_query_log_file=/data/mysql/mysql3306/logs/slow.log long_query_time=2 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci default-storage-engine=InnoDB innodb_buffer_pool_size=1G innodb_log_file_size=256M innodb_flush_log_at_trx_commit=1 sync_binlog=1 gtid_mode=ON enforce_gtid_consistency=ON log_bin=mysql-bin log_slave_updates=ON max_connections=1000 open_files_limit=655355. 初始化
mysqld --initialize --datadir=/data/mysql/mysql3306/data --basedir=/usr/local/mysql # 記錄輸出的隨機 root 密碼6. Systemd 服務整合
cat > /etc/systemd/system/mysqld3306.service <<'EOF' [Unit] Description=MySQL 5.7 3306 After=network.target [Service] Type=forking User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql3306/my.cnf --daemonize ExecStop=/usr/local/mysql/bin/mysqladmin --socket=/tmp/mysql3306.sock -uroot -p shutdown PIDFile=/data/mysql/mysql3306/mysql3306.pid LimitNOFILE=65535 Restart=on-failure [Install] WantedBy=multi-user.target EOF systemctl daemon-reload systemctl enable mysqld3306 systemctl start mysqld33067. 登入與密碼修改
mysql --socket=/tmp/mysql3306.sock -uroot -p # 輸入隨機密碼 mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; mysql> FLUSH PRIVILEGES;8. 多實例擴展(3307)
- 複製配置目錄:
cp -r /data/mysql/mysql3306 /data/mysql/mysql3307- 修改
port=3307、socket=/tmp/mysql3307.sock、pid-file、log-error、datadirmkdir -p /data/mysql/mysql3307/data && chown -R mysql:mysql /data/mysql/mysql3307mysqld --initialize --datadir=/data/mysql/mysql3307/data --basedir=/usr/local/mysql- 建立
mysqld3307.service,systemctl start mysqld3307驗證命令
ps aux | grep mysqld netstat -natp | grep 330 mysql --socket=/tmp/mysql3306.sock -e "SHOW VARIABLES LIKE 'port';" mysql --socket=/tmp/mysql3307.sock -e "SHOW VARIABLES LIKE 'port';"二進制包 + Systemd + 目錄隔離 = 生產級多實例標準部署模式。