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

MySQL 二進制包快速部署與多實例自動化腳本實戰

     編輯:MySQL 綜合教學

MySQL 二進制包快速部署與多實例自動化腳本實戰

生產環境常需在單機部署多個 MySQL 實例(不同端口、數據目錄、配置)。本文提供一鍵部署腳本,支援自定義 basedir、datadir、端口、server_id,解決初始化常見報錯。

二進制包部署標準流程

groupadd mysql
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
tar zxvf mysql-VERSION-OS.tar.gz
ln -s full-path mysql
cd mysql
chown -R mysql .
chgrp -R mysql .
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
bin/mysqld_safe --user=mysql &

一鍵部署腳本 4.sh

用法:sh 4.sh /path/mysql.tar.gz /mysql3306 3306

#!/bin/bash
filename=$1; basedir=$2; port=$3
groupadd mysql; useradd -r -g mysql -s /bin/false mysql
cd /usr/local; tar zxvf $filename
file=`basename $filename`; dir=`dirname $filename`
after_tar_file=${file:0:-7}
mv $after_tar_file mysql"$port"; cd mysql"$port"
cp $dir/my.cnf ./my"$port".cnf
user_cnf=my"$port".cnf

# 路徑替換技巧:將 / 先換為 | 再 sed 再換回
basedir_new=${basedir/\//|}
sed -i "s/\/project\/class2/$basedir_new/g" $user_cnf
sed -i "s/|/\//g" $user_cnf

# 動態 server_id 與端口
sed -i "/^server_id/s/.*/server_id=\"`date +%s`\"/" $user_cnf
sed -i "/^port/s/.*/port=\"$port\"/" $user_cnf

mkdir -p "$basedir"/mysql/{run,data,share,log,tmp}
chown -R mysql $basedir; chgrp -R mysql $basedir
cp share/english/errmsg.sys "$basedir"/mysql/share/
scripts/mysql_install_db --user=mysql --defaults-file="$user_cnf" --force
bin/mysqld_safe --defaults-file="$user_cnf" --user=mysql &

核心配置模板 my.cnf 要點

  • 目錄隔離:basedir/datadir/tmpdir/log-error/socket 各實例唯一
  • InnoDB 調優:buffer_pool_size、log_file_size、flush_log_at_trx_commit=1、file_per_table
  • 複制相關:binlog_format=ROW、sync_binlog=1、GTID 或基於位點
  • 連接池:max_connections=4500、thread_cache_size=256
  • 字符集:utf8mb4、lower_case_table_names=1

常見初始化報錯與解決

錯誤原因解決
Neither host 'x' nor 'localhost' could be looked uphostname 解析失敗加 --force 或修正 /etc/hosts
Can't find messagefile '.../errmsg.sys'basedir 變更導致 share 路徑錯手動拷貝 share/english/errmsg.sys 到新 share 目錄

多實例部署檢查清單

  1. 端口、socket、pid-file、log-error 全部不衝突
  2. server_id 全局唯一(腳本用時間戳保證)
  3. 防火牆/安全組放行所有實例端口
  4. 系統限制:ulimit -n 65535、vm.swappiness=1
  5. 啟動腳本加入 /etc/rc.local 或 systemd 服務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved