1. 首页 > MariaDB教程 > 正文

MariaDB教程FG006-MariaDB多实例部署与端口目录资源隔离实战

本文档风哥主要介绍MariaDB的多实例部署方法与资源隔离技术,包括多实例概念、目录结构搭建、实例创建和服务管理等内容。风哥教程参考MariaDB官方文档Deployment Guide内容,适合数据库管理员学习和实施。

Part01-基础概念与理论知识

1.1 多实例概念

MariaDB多实例是指在同一台服务器上运行多个独立的MariaDB服务,每个实例都有自己的:

  • 端口号
  • 数据目录
  • 配置文件
  • 进程
  • 日志文件

1.2 资源隔离原理

资源隔离的主要方法:

  • 目录隔离:每个实例使用独立的数据目录
  • 端口隔离:每个实例使用不同的端口
  • 配置隔离:每个实例使用独立的配置文件
  • 进程隔离:每个实例有独立的进程
  • 资源限制:通过cgroups等技术限制资源使用

1.3 部署模式

多实例部署的常见模式:

  • 同一服务器部署多个实例
  • 不同版本的MariaDB共存
  • 开发、测试、生产环境分离
  • 不同业务系统使用不同实例
更多视频教程www.fgedu.net.cn

Part02-生产环境规划与建议

2.1 实例规划

风哥提示:实例规划应根据业务需求、硬件资源和管理需求进行设计。

2.2 资源分配

资源分配建议:

  • 内存:根据实例重要性分配
  • CPU:根据并发需求分配
  • 磁盘:根据数据量和I/O需求分配
  • 网络:确保足够的带宽

2.3 网络配置

网络配置建议:

  • 为每个实例分配不同的端口
  • 配置防火墙规则
  • 考虑使用不同的IP地址
  • 优化网络参数
学习交流加群风哥微信: itpux-com

Part03-生产环境项目实施方案

3.1 目录结构搭建

更多学习教程公众号风哥教程itpux_com

# 创建多实例目录结构
[root@fgedu.net.cn ~]# mkdir -p /mariadb/{instance1,instance2,instance3}/{data,logs,conf}
# 创建用户和组
[root@fgedu.net.cn ~]# groupadd mysql
[root@fgedu.net.cn ~]# useradd -r -g mysql -s /sbin/nologin mysql
# 设置权限
[root@fgedu.net.cn ~]# chown -R mysql:mysql /mariadb/

3.2 实例创建

# 实例1配置文件
[root@fgedu.net.cn ~]# cat > /mariadb/instance1/conf/my.cnf << 'EOF'
[mysqld]
user = mysql
basedir = /usr/local/mariadb
datadir = /mariadb/instance1/data
socket = /mariadb/instance1/mysql.sock
pid-file = /mariadb/instance1/mysql.pid
port = 3306
# 性能配置
innodb_buffer_pool_size = 4G
max_connections = 1000
# 安全配置
bind-address = 0.0.0.0
skip-name-resolve
EOF
# 实例2配置文件
[root@fgedu.net.cn ~]# cat > /mariadb/instance2/conf/my.cnf << 'EOF'
[mysqld]
user = mysql
basedir = /usr/local/mariadb
datadir = /mariadb/instance2/data
socket = /mariadb/instance2/mysql.sock
pid-file = /mariadb/instance2/mysql.pid
port = 3307
# 性能配置
innodb_buffer_pool_size = 2G
max_connections = 500
# 安全配置
bind-address = 0.0.0.0
skip-name-resolve
EOF
# 实例3配置文件
[root@fgedu.net.cn ~]# cat > /mariadb/instance3/conf/my.cnf << 'EOF'
[mysqld]
user = mysql
basedir = /usr/local/mariadb
datadir = /mariadb/instance3/data
socket = /mariadb/instance3/mysql.sock
pid-file = /mariadb/instance3/mysql.pid
port = 3308
# 性能配置
innodb_buffer_pool_size = 2G
max_connections = 500
# 安全配置
bind-address = 0.0.0.0
skip-name-resolve
EOF
# 初始化实例1
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql_install_db –user=mysql –datadir=/mariadb/instance1/data –basedir=/usr/local/mariadb
# 初始化实例2
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql_install_db –user=mysql –datadir=/mariadb/instance2/data –basedir=/usr/local/mariadb
# 初始化实例3
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql_install_db –user=mysql –datadir=/mariadb/instance3/data –basedir=/usr/local/mariadb

3.3 服务配置与管理

# 创建实例1服务文件
[root@fgedu.net.cn ~]# cat > /etc/systemd/system/mariadb-instance1.service << 'EOF'
[Unit]
Description=MariaDB instance 1
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld –defaults-file=/mariadb/instance1/conf/my.cnf
ExecStop=/usr/local/mariadb/bin/mysqladmin –defaults-file=/mariadb/instance1/conf/my.cnf -u root -p shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 创建实例2服务文件
[root@fgedu.net.cn ~]# cat > /etc/systemd/system/mariadb-instance2.service << 'EOF'
[Unit]
Description=MariaDB instance 2
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld –defaults-file=/mariadb/instance2/conf/my.cnf
ExecStop=/usr/local/mariadb/bin/mysqladmin –defaults-file=/mariadb/instance2/conf/my.cnf -u root -p shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 创建实例3服务文件
[root@fgedu.net.cn ~]# cat > /etc/systemd/system/mariadb-instance3.service << 'EOF'
[Unit]
Description=MariaDB instance 3
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mariadb/bin/mysqld –defaults-file=/mariadb/instance3/conf/my.cnf
ExecStop=/usr/local/mariadb/bin/mysqladmin –defaults-file=/mariadb/instance3/conf/my.cnf -u root -p shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 启动服务
[root@fgedu.net.cn ~]# systemctl daemon-reload
[root@fgedu.net.cn ~]# systemctl start mariadb-instance1
[root@fgedu.net.cn ~]# systemctl start mariadb-instance2
[root@fgedu.net.cn ~]# systemctl start mariadb-instance3
# 设置开机自启
[root@fgedu.net.cn ~]# systemctl enable mariadb-instance1
[root@fgedu.net.cn ~]# systemctl enable mariadb-instance2
[root@fgedu.net.cn ~]# systemctl enable mariadb-instance3
学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 多实例部署实战

# 检查服务状态
[root@fgedu.net.cn ~]# systemctl status mariadb-instance1 mariadb-instance2 mariadb-instance3
● mariadb-instance1.service – MariaDB instance 1
Loaded: loaded (/etc/systemd/system/mariadb-instance1.service;
enabled;
vendor preset: disabled)
Active: active (running) since Mon 2026-04-07 14:00:00 CST;
5min ago
● mariadb-instance2.service – MariaDB instance 2
Loaded: loaded (/etc/systemd/system/mariadb-instance2.service;
enabled;
vendor preset: disabled)
Active: active (running) since Mon 2026-04-07 14:00:05 CST;
5min ago
● mariadb-instance3.service – MariaDB instance 3
Loaded: loaded (/etc/systemd/system/mariadb-instance3.service;
enabled;
vendor preset: disabled)
Active: active (running) since Mon 2026-04-07 14:00:10 CST;
5min ago
# 检查端口监听
[root@fgedu.net.cn ~]# netstat -tlnp | grep 330
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 4567/mysqld
tcp 0 0 0.0.0.0:3307 0.0.0.0:* LISTEN 4578/mysqld
tcp 0 0 0.0.0.0:3308 0.0.0.0:* LISTEN 4589/mysqld

4.2 资源隔离实战

# 连接不同实例
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3306
Enter password:
Welcome to the MariaDB monitor. Commands end with;
or \g.
Your MariaDB connection id is 8
Server version: 10.11.8-MariaDB Source distribution
MariaDB [(none)]> CREATE DATABASE fgedudb1;
Query OK, 1 row affected (0.00 sec)
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3307
Enter password:
Welcome to the MariaDB monitor. Commands end with;
or \g.
Your MariaDB connection id is 8
Server version: 10.11.8-MariaDB Source distribution
MariaDB [(none)]> CREATE DATABASE fgedudb2;
Query OK, 1 row affected (0.00 sec)
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3308
Enter password:
Welcome to the MariaDB monitor. Commands end with;
or \g.
Your MariaDB connection id is 8
Server version: 10.11.8-MariaDB Source distribution
MariaDB [(none)]> CREATE DATABASE fgedudb3;
Query OK, 1 row affected (0.00 sec)
# 验证数据隔离
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3306 -e “SHOW DATABASES;

Enter password:
+——————–+
| Database |
+——————–+
| information_schema |
| fgedudb1 |
| mysql |
| performance_schema |
| test |
+——————–+
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3307 -e “SHOW DATABASES;

Enter password:
+——————–+
| Database |
+——————–+
| information_schema |
| fgedudb2 |
| mysql |
| performance_schema |
| test |
+——————–+
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysql -u root -p -P 3308 -e “SHOW DATABASES;

Enter password:
+——————–+
| Database |
+——————–+
| information_schema |
| fgedudb3 |
| mysql |
| performance_schema |
| test |
+——————–+

4.3 实例管理与监控

# 启动/停止/重启实例
[root@fgedu.net.cn ~]# systemctl start mariadb-instance1
[root@fgedu.net.cn ~]# systemctl stop mariadb-instance2
[root@fgedu.net.cn ~]# systemctl restart mariadb-instance3
# 查看实例状态
[root@fgedu.net.cn ~]# systemctl status mariadb-instance1
# 监控实例性能
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysqladmin -u root -p -P 3306 extended-status
[root@fgedu.net.cn ~]# /usr/local/mariadb/bin/mysqladmin -u root -p -P 3307 processlist
# 查看实例日志
[root@fgedu.net.cn ~]# tail -f /mariadb/instance1/logs/error.log
[root@fgedu.net.cn ~]# tail -f /mariadb/instance2/logs/error.log
[root@fgedu.net.cn ~]# tail -f /mariadb/instance3/logs/error.log
风哥提示:安全开发是防止SQL注入的第一道防线

Part05-风哥经验总结与分享

5.1 部署常见问题与解决

  • 端口冲突:确保每个实例使用不同的端口
  • 权限问题:确保数据目录权限正确
  • 配置错误:检查配置文件语法
  • 资源不足:合理分配系统资源
  • 服务启动失败:查看错误日志定位问题

5.2 最佳实践

风哥提示:多实例部署应根据服务器硬件资源和业务需求进行合理规划,避免资源竞争。

5.3 维护建议

  • 定期备份每个实例的数据
  • 监控每个实例的性能和资源使用
  • 统一管理实例配置
  • 制定合理的维护计划
  • 考虑使用容器化技术简化管理
from MariaDB视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息