首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

CentOS 7 部署 MySQL 5.7 二進制包完整實戰:多實例架構與系統整合

     編輯:MySQL 資料庫相關知識

安裝方式對比

方式優點缺點推薦場景
二進制包版本自主、路徑自定、多實例友好、無依賴地獄手動整合 systemd、logrotate、監控生產核心叢集、多版本共存
YUM/RPM系統整合度高、升級簡單版本受限、路徑固定標準化運維、非核心庫
源碼編譯極致定製維護成本極高特殊硬體優化、學習研究

二進制包部署標準流程(單實例)

1. 下載與解壓

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/mysql

2. 使用者與目錄

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/mysql

3. 環境變數

echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
source /etc/profile

4. 配置檔

將 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=65535

5. 初始化

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 mysqld3306

7. 登入與密碼修改

mysql --socket=/tmp/mysql3306.sock -uroot -p
# 輸入隨機密碼
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql> FLUSH PRIVILEGES;

8. 多實例擴展(3307)

  1. 複製配置目錄:cp -r /data/mysql/mysql3306 /data/mysql/mysql3307
  2. 修改 port=3307、socket=/tmp/mysql3307.sock、pid-file、log-error、datadir
  3. mkdir -p /data/mysql/mysql3307/data && chown -R mysql:mysql /data/mysql/mysql3307
  4. mysqld --initialize --datadir=/data/mysql/mysql3307/data --basedir=/usr/local/mysql
  5. 建立 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 + 目錄隔離 = 生產級多實例標準部署模式。

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