MariaDB单机多实例的配置方法

1、什么是数据库的单机多实例

数据库的单机多实例是指在一台物理服务器上运行多个数据库实例。这种部署方式允许多个数据库实例共享相同的物理资源,如CPU、内存和存储,从而提高硬件利用率并降低成本。每个数据库实例可以独立运行,处理不同的业务或应用程序,并且可以配置独立的数据目录、端口和用户权限等。

通俗点讲,就是把"一套数据库撕成几半,分别独立使用"。

2、在debian12系统配置MariaDB多实例步骤

(1)在配置好软件仓库源的情况下,通过命令"apt install mariadb-server"安装MariaDB数据库,或者通过二进制编译方式安装也可;

(2)通过命令"systemctl stop mariadb"关闭MariaDB进程;

(3)通过命令"mkdir -p /data/mariadb/{3307,3308}/etc"创建两个数据库实例的目录,这个目录可以根据实际需求进行改变,此处创建的3307和3308两个目录对应实例,后续将分别使用3307和3308两个端口;

(4)通过命令"chown -R mysql:mysql /data/mariadb/"将相关数据库实例目录的属主和属组设置为mysql(在通过包管理器安装MariaDB/MySQL完成后,系统会自动创建名为mysql的属主和属组);

(5)通过命令"mysql_install_db --datadir=/data/mariadb/3307/data --user=mysql --basedir=/usr"和"mysql_install_db --datadir=/data/mariadb/3308/data --user=mysql --basedir=/usr"分别在两个实例目录下生成数据库所需的相关文件;

(6)通过命令"touch /data/mariadb/3307/etc/my.cnf"和"touch /data/mariadb/3308/etc/my.cnf"在两个实例目录下生成对应的配置文件,并通过vim工具填写相关配置文件的内容,其中3307目录下的配置文件如下:

bash 复制代码
[mysqld]
port=3307
datadir=/data/mariadb/3307/data
socket=/data/mariadb/3307/mysql.socket

[mysqld_safe]
log-error=/data/mariadb/3307/mariadb.err.log
pid-file=/data/mariadb/3307/mariadb.pid

3308目录下的配置文件如下:

bash 复制代码
[mysqld]
port=3308
datadir=/data/mariadb/3308/data
socket=/data/mariadb/3308/mysql.socket

[mysqld_safe]
log-error=/data/mariadb/3308/mariadb.err.log
pid-file=/data/mariadb/3308/mariadb.pid

(7)分别使用以下命令启动3307和3308两个数据库实例:

bash 复制代码
mysqld_safe --defaults-file=/data/mariadb/3307/etc/my.cnf --basedir=/usr &
mysqld_safe --defaults-file=/data/mariadb/3308/etc/my.cnf --basedir=/usr &

(8)通过命令"netstat -anput | grep mariadb"检查相关数据库实例的进程;

(9)分别使用以下命令登录3307和3308两个数据库实例:

bash 复制代码
mysql -u root -S /data/mariadb/3307/mysql.socket
mysql -u root -S /data/mariadb/3308/mysql.socket

mysql.socket是MariaDB/MySQL数据库启动成功后自动生成的套接字文件,用于接收客户端的连接,若将数据库实例关闭,此文件也将默认消失。

(10)最后按照实际需求初始化相关实例,如果要关闭相关数据库的实例,可使用命令"kill <对应实例的pid>"。

3、常见报错和解决方法

3.1、执行"mysql_install_db"进行数据库实例初始化时,反馈报错信息"FATAL ERROR: Could not find my_print_defaults"

相关报错信息如下图所示:

从上图看,执行"mysql_install_db"命令时,带有"--basedir"参数,这个参数指向MariaDB数据库的安装目录,通过"--basedir"参数,mysql_install_db命令会在MariaDB安装目录下寻找名为"my_print_defaults"的文件(此文件在MariaDB安装目录下默认存在),而如果"--basedir"参数没有指向正确的安装路径,则mysql_install_db命令找不到my_print_defaults文件,最终导致数据库实例无法安装成功。

因为MariaDB不同的安装方式会导致安装目录不同,如果想查明安装目录,则可以取巧使用"find / -name my_print_defaults"命令来查明MariaDB的安装目录。

4、数据库单机多实例的优缺点总结

通过配置和管理多个数据库实例,可以实现以下优点:

  • 资源共享:多个实例可以共享服务器的硬件资源,提高资源利用率,降低硬件成本;
  • 独立性:每个实例可以有独立的配置和数据存储,互不影响,提高了系统的稳定性和可靠性;
  • 可扩展性:根据业务需求,可以动态增加或减少实例数量,方便系统扩展和伸缩;
  • 灵活性:可以针对不同业务需求进行实例的配置和管理,满足各种场景的需求。

然而,单机多实例也需要注意一些问题,通常情况下,缺点如下:

  • 资源竞争:数据库实例之间共享同一物理资源,实例和实例之间在承担读写请求的过程中容易造成服务器硬件资源的抢夺;
  • 灾备较为局限:通常情况下,数据库多实例往往是服务器资源不足的情况下才会被考虑使用的部署方式,而建立灾备节点往往需要单独的服务器资源,因此在实际的实施过程中,应当平衡好有限的硬件资源和数据灾备之间的关系。
相关推荐
憧憬成为web高手31 分钟前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学43 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh3 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789864 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD4 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward5 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记5 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发5 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB5 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88205 小时前
Mysql并发DML锁等待的优化
数据库·mysql