当前位置: 首页 > news >正文

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目录下的配置文件如下:

[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目录下的配置文件如下:

[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两个数据库实例:

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两个数据库实例:

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

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

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

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

  • 资源竞争:数据库实例之间共享同一物理资源,实例和实例之间在承担读写请求的过程中容易造成服务器硬件资源的抢夺;
  • 灾备较为局限:通常情况下,数据库多实例往往是服务器资源不足的情况下才会被考虑使用的部署方式,而建立灾备节点往往需要单独的服务器资源,因此在实际的实施过程中,应当平衡好有限的硬件资源和数据灾备之间的关系。

相关文章:

  • Vue - 使用Element UI Upload / importExcelJs进行文件导入
  • 【C语言学习疑难杂症】第12期:如何从汇编角度深入理解y = (*--p)++这行代码(易懂版)
  • php的laravel权限问题
  • 【开源】基于Vue+SpringBoot的二手车交易系统
  • MySQL一些常用命令
  • Unity UnityWebRequest 在Mac上使用报CommectionError
  • 不给病毒留空子:保护您的数据免受.mallox勒索病毒威胁
  • 饥荒Mod 开发(二三):显示物品栏详细信息
  • 嵌入式开发——ADC开发
  • Cisco模拟器-企业网络部署
  • hadoop hive spark flink 安装
  • STL——排序算法
  • pytest pytest.ini 设置目录路径,不执行该目录下的case
  • 前端框架前置学习(4) AJAX
  • 基于Unity Editor开发一个技能编辑器可能涉及到的内容
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • idea + plantuml 画流程图
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • java中具有继承关系的类及其对象初始化顺序
  • JS+CSS实现数字滚动
  • js继承的实现方法
  • MYSQL 的 IF 函数
  • Odoo domain写法及运用
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • 简单数学运算程序(不定期更新)
  • 京东美团研发面经
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (003)SlickEdit Unity的补全
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (02)Hive SQL编译成MapReduce任务的过程
  • (1)STL算法之遍历容器
  • (PyTorch)TCN和RNN/LSTM/GRU结合实现时间序列预测
  • (搬运以学习)flask 上下文的实现
  • (二十四)Flask之flask-session组件
  • (翻译)terry crowley: 写给程序员
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (一)Linux+Windows下安装ffmpeg
  • (转) 深度模型优化性能 调参
  • (转载)hibernate缓存
  • .NET CLR基本术语
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复
  • .stream().map与.stream().flatMap的使用
  • /usr/bin/env: node: No such file or directory
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Big Data - Kafka] kafka学习笔记:知识点整理
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [CodeForces-759D]Bacterial Melee