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、数据库单机多实例的优缺点总结
通过配置和管理多个数据库实例,可以实现以下优点:
- 资源共享:多个实例可以共享服务器的硬件资源,提高资源利用率,降低硬件成本;
- 独立性:每个实例可以有独立的配置和数据存储,互不影响,提高了系统的稳定性和可靠性;
- 可扩展性:根据业务需求,可以动态增加或减少实例数量,方便系统扩展和伸缩;
- 灵活性:可以针对不同业务需求进行实例的配置和管理,满足各种场景的需求。
然而,单机多实例也需要注意一些问题,通常情况下,缺点如下:
- 资源竞争:数据库实例之间共享同一物理资源,实例和实例之间在承担读写请求的过程中容易造成服务器硬件资源的抢夺;
- 灾备较为局限:通常情况下,数据库多实例往往是服务器资源不足的情况下才会被考虑使用的部署方式,而建立灾备节点往往需要单独的服务器资源,因此在实际的实施过程中,应当平衡好有限的硬件资源和数据灾备之间的关系。
相关文章:

MariaDB单机多实例的配置方法
1、什么是数据库的单机多实例 数据库的单机多实例是指在一台物理服务器上运行多个数据库实例。这种部署方式允许多个数据库实例共享相同的物理资源,如CPU、内存和存储,从而提高硬件利用率并降低成本。每个数据库实例可以独立运行,处理不同的…...

加强->servlet->tomcat
0什么是servlet jsp也是servlet 细细体会 Servlet 是 JavaEE 的规范之一,通俗的来说就是 Java 接口,将来我们可以定义 Java 类来实现这个接口,并由 Web 服务器运行 Servlet ,所以 TomCat 又被称作 Servlet 容器。 Servlet 提供了…...

Python初学者必须吃透的69个内置函数!
所谓内置函数,就是Python提供的, 可以直接拿来直接用的函数,比如大家熟悉的print,range、input等,也有不是很熟,但是很重要的,如enumerate、zip、join等,Python内置的这些函数非常精巧且强大的&…...

Day73力扣打卡
打卡记录 统计移除递增子数组的数目 II(双指针) 链接 class Solution:def incremovableSubarrayCount(self, a: List[int]) -> int:n len(a)i 0while i < n - 1 and a[i] < a[i 1]:i 1if i n - 1: # 每个非空子数组都可以移除return n …...

Android原生实现分段选择
六年前写的一个控件,一直没有时间总结,趁年底不怎么忙,整理一下之前写过的组件。供大家一起参考学习。废话不多说,先上图。 一、效果图 实现思路使用的是radioGroup加radiobutton组合方式。原理就是通过修改RadioButton 的backgr…...

在 Unity 中获取 Object 对象的编辑器对象
有这个需求的原因是,在编辑器的 Inspector 逻辑中,写了许多生成逻辑。 现在不想挨个在 Inspector 上都点一遍按钮,所以就需要能获取到它们的编辑器对象。 发现可以借助官方的 UnityEditor.Editor.CreateEditor 方法达到目的,如下…...

idea自动注释
前言 保存一下自己的自动注释代码 idea自动注释 前言1 创建类时,自动生成注释2 在方法上使用快捷键生成注释3 使用方法4 效果图 1 创建类时,自动生成注释 如下: #if (${PACKAGE_NAME} && ${PACKAGE_NAME} ! "")package …...

阿里云 ACK 云上大规模 Kubernetes 集群高可靠性保障实战
作者:贤维 马建波 古九 五花 刘佳旭 引言 2023 年 7 月,阿里云容器服务 ACK 成为首批通过中国信通院“云服务稳定运行能力-容器集群稳定性”评估的产品, 并荣获“先进级”认证。随着 ACK 在生产环境中的采用率越来越高,稳定性保…...

如何在无公网IP环境使用Windows远程桌面Ubuntu
文章目录 一、 同个局域网内远程桌面Ubuntu二、使用Windows远程桌面连接三、公网环境系统远程桌面Ubuntu1. 注册cpolar账号并安装2. 创建隧道,映射3389端口3. Windows远程桌面Ubuntu 四、 配置固定公网地址远程Ubuntu1. 保留固定TCP地址2. 配置固定的TCP地址3. 使用…...

Python——yolov8识别车牌2.0
目录 一、前言 二、关于项目UI 2.1、修改界面内容的文本 2.2、修改界面的图标和图片 三、项目修改地方 四、其他配置问题 一、前言 因为后续有许多兄弟说摄像头卡顿,我在之前那个MATS上面改一下就可以了,MAST项目:基于YOLOv8的多端车流检…...

Cookie的详解使用(创建,获取,销毁)
文章目录 Cookie的详解使用(创建,获取,销毁)1、Cookie是什么2、cookie的常用方法3、cookie的构造和获取代码演示SetCookieServlet.javaGetCookieServlet.javaweb.xml运行结果如下 4、Cookie的销毁DestoryCookieServletweb.xml运行…...
shell脚本自动化部署Zabbix4.2(修改脚本替换版本)
#!/bin/bash # 配置无人值守的安装,定义安装过程中需要用到的一些信息 DBPasswordadmin123 CacheSize256M ZBX_SERVER_NAMEZabbix-Server http_port80 # 配置 Zabbix 防火墙 firewall-cmd --permanent --zonepublic --add-port10051/tcp firewall-cmd…...

java SSM课程平台系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
一、源码特点 java SSM课程平台系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S…...

k8s二进制最终部署(网络 负载均衡和master高可用)
k8s中的通信模式 1、pod内部之间容器与容器之间的通信,在同一个pod 中的容器共享资源和网络,使用同一个网络命名空间,可以直接通信的 2、同一个node节点之内,不同pod之间的通信,每个pod都有一个全局的真实的IP地址&a…...

【51单片机系列】DS1302时钟模块
本文是关于DS1302时钟芯片的相关介绍。 文章目录 一、 DS1302时钟芯片介绍二、DS1302的使用2.1、DS1302的控制寄存器2.2、DS1302的日历/时钟寄存器2.3、片内RAM2.4、DS1302的读写时序 三、SPI总线介绍四、DS1302使用示例 一、 DS1302时钟芯片介绍 DS1302是DALLAS公司推出的涓流…...
深入理解C语言中冒泡排序(优化)
目录 引言: 冒泡排序概述: 优化前: 优化后(注意看注释): 解析优化后: 原理(先去了解qsort): 引言: 排序算法是计算机科学中的基础问题之一。在本篇博客中,…...

低代码选型注意事项
凭借着革命性的生产力优势,低代码技术火爆了整个IT圈。面对纷繁复杂的低代码和无代码产品,开发者该如何选择? 在研究低代码平台的年数上,本人已有3年,也算是个低代码资深用户了,很多企业面临低代码选型上的…...
Caffeine--缓存组件
Caffeine 概念缓存手动加载自动加载手动异步加载自动异步加载 驱逐策略基于容量基于时间基于引用 移除显式移除 概念 Caffeine是一个基于Java8开发的提供了近乎最佳命中率的高性能的缓存库。与ConcurrentMap有点相似。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的…...

Centos7:Jenkins+gitlab+node项目启动(1)
Centos7:Jenkinsgitlabnode项目启动(1) Centos7:Jenkinsgitlabnode项目启动(1)-CSDN博客 Centos7:Jenkinsgitlabnode项目启动(2) Centos7:Jenkinsgitlabnode项目启动(2)-CSDN博客 Centos7:Jenkinsgitlabnode项目启…...

starrocks集群fe/be节点进程守护脚本
自建starrocks集群,有时候服务会挂掉,无法自动拉起服务,于是采用supervisor进行进程守护。可能是版本的原因,supervisor程序总是异常,无法对fe//be进行守护。于是写了个简易脚本。 #!/bin/bash AppNameFecom.starrock…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...

tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...

基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...