最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL多實例部署實戰(zhàn)完美攻略

 更新時間:2025年10月23日 15:32:45   作者:zz-zjx  
文章介紹了如何配置和管理多個MySQL實例,包括多實例的核心思想、目錄結(jié)構(gòu)規(guī)劃、systemd模板設(shè)計、配置文件管理、初始化和啟動實例、檢查實例狀態(tài)以及驗證多實例功能,感興趣的朋友跟隨小編一起看看吧

一、多實例核心思想

  • 每個實例有獨立的
    • datadir
    • socket
    • port
    • pid-file
    • log-error
    • mysqlx_port(如啟用)
  • 共享同一個 MySQL 二進制文件(/usr/local/mysql/bin/mysqld
  • 使用 單獨的配置文件 或 同一文件中的多個 [mysqldN] 段

二、目錄結(jié)構(gòu)規(guī)劃

/data/mysql/
├── instance_3306/
│   ├── data/                  # 數(shù)據(jù)目錄
│   ├── logs/
│   │   ├── error.log          # 錯誤日志
│   │   └── slow.log           # 慢查詢?nèi)罩?
│   └── my.cnf                 # 配置文件
│
└── instance_3307/
    ├── data/
    ├── logs/
    │   ├── error.log
    │   └── slow.log
    └── my.cnf

創(chuàng)建目錄并授權(quán):

sudo mkdir -p /data/mysql/instance_3306/{data,logs}
sudo mkdir -p /data/mysql/instance_3307/{data,logs}
sudo chown -R mysql:mysql /data/mysql

1.對比說明:從你的單實例 → 多實例

保留的核心元素:
配置項你的原始值多實例中保留
datadir/data/mysql→ 拆分為 /data/mysql/instance_3306/data 等
socket/data/mysql/mysql.sock→ 每個實例獨立 socket
log-error/data/mysql/mysqld.log→ 拆分為各實例的 logs/error.log
port3306→ 實例1保留3306,實例2用3307
mysqlx_port33060→ 實例2改為33070,避免沖突
bind-address0.0.0.0→ 改為 127.0.0.1(更安全,可改回)
character-set-serverutf8mb4保留
collation-serverutf8mb4_unicode_ci 保留
default_authentication_pluginmysql_native_password(你原配置)→ 升級為 caching_sha2_password(MySQL 8.4 推薦),但你可改回
secure-file-priv/var/lib/mysql-files 保留
innodb_buffer_pool_size1G→ 調(diào)整為 256M(因多實例需節(jié)省內(nèi)存,你可調(diào)回)
max_connections200→ 調(diào)整為 50(按實例分配,你可調(diào)回)

三、systemd 多實例模板

設(shè)計原則

  • 使用 systemd 模板單元(template unit)mysqld@.service
  • 每個實例通過 端口號標識(如 mysqld@3306、mysqld@3307
  • 實例配置文件路徑約定:/data/mysql/instance_<port>/my.cnf
  • 完全兼容你原有的路徑風格:/data/mysql/...

1. 創(chuàng)建 systemd 模板單元文件

sudo tee /etc/systemd/system/mysqld@.service <<'EOF'
[Unit]
Description=MySQL Server for instance on port %i
After=network.target
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/
[Service]
Type=simple
User=mysql
Group=mysql
# 動態(tài)配置文件路徑:/data/mysql/instance_3306/my.cnf
ExecStart=/usr/local/mysql/bin/mysqld \
          --defaults-file=/data/mysql/instance_%i/my.cnf
# 安全加固(可選)
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
# 重啟策略
Restart=on-failure
RestartSec=5
TimeoutSec=300
# 環(huán)境(可選)
Environment="MYSQLD_OPTS=--defaults-file=/data/mysql/instance_%i/my.cnf"
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload

%i 是 systemd 的實例標識符(如 3306),會自動替換。

四、配置文件(啟用慢查詢?nèi)罩荆?/h2>

/data/mysql/instance_3306/my.cnf

[client]
port = 3306
socket = /data/mysql/instance_3306/mysql.sock
[mysql]
socket = /data/mysql/instance_3306/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/instance_3306/data
socket = /data/mysql/instance_3306/mysql.sock
pid-file = /data/mysql/instance_3306/mysqld.pid
# 日志
log-error = /data/mysql/instance_3306/logs/error.log
slow_query_log = ON
slow_query_log_file = /data/mysql/instance_3306/logs/slow.log
long_query_time = 1
# 網(wǎng)絡(luò)
port = 3306
mysqlx_port = 33060
mysqlx_socket = /data/mysql/instance_3306/mysqlx.sock
bind-address = 127.0.0.1
# 安全與字符集
symbolic-links = 0
secure-file-priv = /var/lib/mysql-files
default_authentication_plugin = caching_sha2_password
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 性能
innodb_buffer_pool_size = 256M
max_connections = 50

/data/mysql/instance_3307/my.cnf(僅端口/路徑不同)

[client]
port = 3307
socket = /data/mysql/instance_3307/mysql.sock
[mysql]
socket = /data/mysql/instance_3307/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /data/mysql/instance_3307/data
socket = /data/mysql/instance_3307/mysql.sock
pid-file = /data/mysql/instance_3307/mysqld.pid
log-error = /data/mysql/instance_3307/logs/error.log
slow_query_log = ON
slow_query_log_file = /data/mysql/instance_3307/logs/slow.log
long_query_time = 1
port = 3307
mysqlx_port = 33070
mysqlx_socket = /data/mysql/instance_3307/mysqlx.sock
bind-address = 127.0.0.1
symbolic-links = 0
secure-file-priv = /var/lib/mysql-files
default_authentication_plugin = caching_sha2_password
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
innodb_buffer_pool_size = 256M
max_connections = 50

五、初始化并啟動實例

# 初始化 3306
sudo -u mysql /usr/local/mysql/bin/mysqld \
  --defaults-file=/data/mysql/instance_3306/my.cnf \
  --initialize-insecure
# 初始化 3307
sudo -u mysql /usr/local/mysql/bin/mysqld \
  --defaults-file=/data/mysql/instance_3307/my.cnf \
  --initialize-insecure
# 啟動并啟用開機自啟
sudo systemctl start mysqld@3306
sudo systemctl enable mysqld@3306
sudo systemctl start mysqld@3307
sudo systemctl enable mysqld@3307

使用 --initialize-insecure 是為了測試方便(root 無密碼)。生產(chǎn)環(huán)境請用 --initialize 并從 error.log 獲取臨時密碼。

六、使用mysqladmin檢查實例狀態(tài)

# 檢查 3306
/usr/local/mysql/bin/mysqladmin \
  -S /data/mysql/instance_3306/mysql.sock \
  -u root ping
# 檢查 3307
/usr/local/mysql/bin/mysqladmin \
  -S /data/mysql/instance_3307/mysql.sock \
  -u root ping

 正常輸出:

mysqld is alive

 也可以用 -h 127.0.0.1 -P 3306 通過 TCP 檢查。

七、驗證多實例功能

1. 檢查狀態(tài)(使用mysqladmin)

/usr/local/mysql/bin/mysqladmin -S /data/mysql/instance_3306/mysql.sock ping
# 輸出:mysqld is alive
/usr/local/mysql/bin/mysqladmin -S /data/mysql/instance_3307/mysql.sock ping
# 輸出:mysqld is alive

2. 登錄不同實例

# 登錄 3306
/usr/local/mysql/bin/mysql -u root -S /data/mysql/instance_3306/mysql.sock
# 登錄 3307
/usr/local/mysql/bin/mysql -u root -S /data/mysql/instance_3307/mysql.sock

3. 創(chuàng)建測試庫,驗證隔離性

在 3306 中:

CREATE DATABASE test_from_3306;
SHOW DATABASES;
-- 應(yīng)包含 test_from_3306,不包含 test_from_3307

在 3307 中:

CREATE DATABASE test_from_3307;
SHOW DATABASES;
-- 應(yīng)包含 test_from_3307,不包含 test_from_3306

證明:兩個實例數(shù)據(jù)完全隔離!

4. 驗證日志分離

# 觸發(fā)慢查詢
echo "SELECT SLEEP(2);" | /usr/local/mysql/bin/mysql -S /data/mysql/instance_3306/mysql.sock
# 檢查日志
cat /data/mysql/instance_3306/logs/slow.log   # 有記錄
cat /data/mysql/instance_3307/logs/slow.log   # 無記錄
# 錯誤日志
tail /data/mysql/instance_3306/logs/error.log
tail /data/mysql/instance_3307/logs/error.log

八、systemd 管理命令匯總

# 啟動/停止/重啟
sudo systemctl start mysqld@3306
sudo systemctl stop mysqld@3307
sudo systemctl restart mysqld@3306
# 查看狀態(tài)
systemctl status mysqld@3306
# 查看啟動日志(systemd journal)
journalctl -u mysqld@3306 -f
# 開機自啟
sudo systemctl enable mysqld@3306
sudo systemctl disable mysqld@3307

九、總結(jié):多實例核心驗證點

項目是否滿足
獨立數(shù)據(jù)目錄 /data/mysql/instance_3306/data vs .../3307/data
獨立配置文件兩個 my.cnf
獨立錯誤日志 error.log 分開
獨立慢查詢?nèi)罩?/td> slow.log 分開
mysqladmin 檢查狀態(tài) 通過 socket 指定實例
mysql 登錄不同實例 -S 指定 socket
數(shù)據(jù)庫完全隔離 各自創(chuàng)建 DB,互不可見

到此這篇關(guān)于MySQL多實例部署實戰(zhàn)完美攻略的文章就介紹到這了,更多相關(guān)mysql多實例部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

苍梧县| 台山市| 西盟| 蕉岭县| 樟树市| 朝阳市| 郑州市| 康乐县| 咸阳市| 锡林郭勒盟| 隆尧县| 邵阳市| 河间市| 舒兰市| 石阡县| 土默特左旗| 思茅市| 南开区| 郸城县| 长春市| 镇赉县| 石景山区| 湖北省| 西昌市| 通化市| 务川| 堆龙德庆县| 长治市| 宁国市| 乌鲁木齐县| 东方市| 射洪县| 六盘水市| 宁明县| 景东| 罗平县| 伊金霍洛旗| 湄潭县| 芦溪县| 眉山市| 九寨沟县|