首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.6 RPM 打包與自動化部署完整實戰:從編譯到批量安裝

     編輯:MySQL 綜合教學

MySQL 5.6 RPM 打包與自動化部署完整實戰:從編譯到批量安裝

針對大規模同質化環境,將 MySQL 編譯為 RPM 包並配合腳本自動化部署,能實現「一鍵交付、配置一致、版本可控」。本文記錄完整流程:原始碼編譯 RPM、資料模板打包、配置檔模板化、Shell 自動安裝腳本、遠程批量分發。

一、建置環境準備

yum install -y vsftpd rpm-build cmake gcc g++ bison ncurses-devel zlib-devel
service vsftpd start  # 提供檔案下載點

二、原始碼編譯 RPM

  1. 下載源碼:wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.21.tar.gz
  2. 解壓並進入目錄建立 rpm 子目錄。
  3. 編寫 mysql.spec(關鍵片段):
Name: mysql-rpm
Version: 5.6.21
Release: renfengjun
Prefix: /u01/mysql
%build
cmake . -DCMAKE_INSTALL_PREFIX=%{prefix} -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci ...
make -j $(nproc)
%install
make DESTDIR=$RPM_BUILD_ROOT install
%pre
groupadd mysql; useradd -g mysql mysql
mkdir -p /u01/mysql/{data,run,log}
chown -R mysql:mysql /u01/mysql
%post
ln -s %{prefix}/lib %{prefix}/lib64
cp %{prefix}/support-files/mysql.server /etc/init.d/mysql
chkconfig mysql on
  1. 執行打包:rpmbuild -bb ./mysql.spec
  2. 產出:/usr/src/redhat/RPMS/x86_64/mysql-rpm-5.6.21-renfengjun.x86_64.rpm

三、資料模板打包(含初始業務資料)

systemctl stop mysql
cd /u01/mysql/data
tar cf data.tar ibdata1 mysql/ dexdb/ performance_schema/ test/

關鍵:必須包含 ibdata1(系統表空間),否則 InnoDB 元資料遺失。

四、配置檔模板化 my.cnf

  • 固定參數寫死(路徑、緩衝區、InnoDB 參數、複寫設定等)。
  • server_id 由安裝腳本以時間戳動態生成:echo 'server_id='$(date +%Y%m%d%M%S) >> my.cnf。
  • 字元集統一 gbk(依業務調整)。

五、自動化安裝腳本 auto_install_mysql.sh

#!/bin/bash
yum install -y cmake gcc g++ bison ncurses-devel zlib
ftp -n <> my.cnf
cp my.cnf /u01/mysql/

六、遠程批量分發與執行

使用 dcli(Python 寫的並行 SSH 工具,類 pssh):

# 初始化 SSH 信任
dcli -l root -c 192.168.0.36 -k
# 分發腳本
dcli -l root -c 192.168.0.36 -f ./auto_install_mysql.sh
# 遠程執行
dcli -l root -c 192.168.0.36 /root/auto_install_mysql.sh

七、驗證

service mysql start
mysql -e "show databases; use dexdb; select * from t;"

輸出顯示 dexdb 與測試資料 renfengjun 存在,部署成功。

八、後續優化方向

  • 引入 Ansible / SaltStack 替代自製腳本,實現冪等與狀態管理。
  • RPM 包簽名與私有 Yum 倉庫,支援 yum update 熱升級。
  • 配置檔參數化(Jinja2 模板),支援不同規格主機自動調整 innodb_buffer_pool_size 等。
  • 加入健康檢查與回滾機制。

此套流程已在生產環境驗證,可作為 MySQL 標準化交付基線。

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