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、数据库单机多实例的优缺点总结

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

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

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

  • 资源竞争:数据库实例之间共享同一物理资源,实例和实例之间在承担读写请求的过程中容易造成服务器硬件资源的抢夺;
  • 灾备较为局限:通常情况下,数据库多实例往往是服务器资源不足的情况下才会被考虑使用的部署方式,而建立灾备节点往往需要单独的服务器资源,因此在实际的实施过程中,应当平衡好有限的硬件资源和数据灾备之间的关系。
相关推荐
IT 小阿姨(数据库)14 分钟前
PostgreSQL etcd 集群介绍
运维·数据库·sql·postgresql·centos·etcd
NPE~30 分钟前
[手写系列]Go手写db — — 第五版(实现数据库操作模块)
开发语言·数据库·后端·golang·教程·手写系列·手写数据库
有想法的py工程师1 小时前
PostgreSQL 测试磁盘性能
数据库·postgresql
weixin_441455262 小时前
Mysql MVCC
数据库·mysql
Su-RE3 小时前
【ElasticSearch】text 和 keyword 类型区分
java·数据库·elasticsearch
武子康3 小时前
Java-146 深入浅出 MongoDB 数据插入、批量写入、BSON 格式与逻辑查询and or not操作指南
java·开发语言·数据库·sql·mongodb·性能优化·nosql
奥尔特星云大使3 小时前
MySQL快速构建主从(基于GTID)
数据库·mysql·主从复制
小园子的小菜3 小时前
MySQL ORDER BY 深度解析:索引排序规则与关键配置参数阈值
数据库·mysql
wxjlkh3 小时前
Oracle Exadata一体机简介 1千多个W
数据库·oracle
泽虞3 小时前
《Qt应用开发》笔记p3
linux·开发语言·数据库·c++·笔记·qt·面试