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

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

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

一、多實(shí)例核心思想

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

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

/data/mysql/
├── instance_3306/
│   ├── data/                  # 數(shù)據(jù)目錄
│   ├── logs/
│   │   ├── error.log          # 錯(cuò)誤日志
│   │   └── 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.對(duì)比說(shuō)明:從你的單實(shí)例 → 多實(shí)例

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

三、systemd 多實(shí)例模板

設(shè)計(jì)原則

  • 使用 systemd 模板單元(template unit)mysqld@.service
  • 每個(gè)實(shí)例通過(guò) 端口號(hào)標(biāo)識(shí)(如 mysqld@3306、mysqld@3307
  • 實(shí)例配置文件路徑約定:/data/mysql/instance_<port>/my.cnf
  • 完全兼容你原有的路徑風(fēng)格:/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
# 動(dòng)態(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 的實(shí)例標(biāo)識(shí)符(如 3306),會(huì)自動(dòng)替換。

四、配置文件(啟用慢查詢?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

五、初始化并啟動(dòng)實(shí)例

# 初始化 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
# 啟動(dòng)并啟用開(kāi)機(jī)自啟
sudo systemctl start mysqld@3306
sudo systemctl enable mysqld@3306
sudo systemctl start mysqld@3307
sudo systemctl enable mysqld@3307

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

六、使用mysqladmin檢查實(shí)例狀態(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 通過(guò) TCP 檢查。

七、驗(yàn)證多實(shí)例功能

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. 登錄不同實(shí)例

# 登錄 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)建測(cè)試庫(kù),驗(yàn)證隔離性

在 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

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

4. 驗(yàn)證日志分離

# 觸發(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   # 無(wú)記錄
# 錯(cuò)誤日志
tail /data/mysql/instance_3306/logs/error.log
tail /data/mysql/instance_3307/logs/error.log

八、systemd 管理命令匯總

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

九、總結(jié):多實(shí)例核心驗(yàn)證點(diǎn)

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

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

相關(guān)文章

最新評(píng)論

汝南县| 黄浦区| 兴安盟| 蓬莱市| 屯门区| 玉屏| 兴和县| 桐柏县| 黎平县| 壤塘县| 门源| 徐汇区| 敦煌市| 凤翔县| 察雅县| 巫溪县| 衡山县| 德安县| 林西县| 东光县| 简阳市| 河津市| 富源县| 尤溪县| 彰化市| 将乐县| 比如县| 龙游县| 惠水县| 南投市| 定兴县| 湘潭县| 岑溪市| 南城县| 神农架林区| 郑州市| 焉耆| 临桂县| 额尔古纳市| 谷城县| 日土县|