(十三)MariaDB存储引擎Spider简介
新的问题:
若数据量即使使用 Partition,都不是单一台主机有办法处理;存放要分散,但存取要集中。
这个时候,就可以考虑 Spider 存储引擎。
事实上,对于数据驱动的功能,都可能面临类似的问题,数据库日益膨大,单表、单数据库、单机器已经不能存储和处理数据了。 所以会有上述说明的分片设计。
针对不同程度的数据,会选择到不同的具体分片实现,这也是上述说明的各种单表的分区作业。
不过基于有些引擎的限制或者功能不够强大,可能在数据库分片上无法实现跨设备的作业。
但是 Spider 引擎可能提供了一个比较好的解决方案。
Spider 是什么?Spider 是 MariaDB 内置的一个可插拔用于 MariaDB/MySQL 数据库分片的存储引擎,充当应用服务器和远程后端 DB 之间的代理(中间件),它可以轻松实现 MariaDB/MySQL 的横向和纵向扩展,突破单台 MariaDB/MySQL 的限制,支持范围分区、列表分区、哈希分区,支持 XA 分布式事务,支持跨库 join。完成数据库跨越多组实例(instances)。
使用 Spider 存储引擎创建表后,该表将链接到远程服 ...
(十二)MariaDB中的分区操作
数据量不大的中小型规模 size 的 Table 原则是还是采用 Table+Index 设计为最佳化的思考重点。
在大数据考虑数据分片的时候,有两点也是重点:
一是空间,数据存放的存储空间是否足够,易于扩展。二是时间,对于数据存取是否有限制,能否优化。
此外就是:
基本的数据与索引区隔无法满足 Big Data 所需的数据分片
高达数百 TB 的数据表毫无疑问将导致 DML 语法执行缺乏效率
海量型数据建议采用 分区(Partition) 机制分离储存数据
数据分区存放可以有效提升数据查询与异动操作
对于 MyISAM 引擎,可以设计分离数据文件和索引文件来加快数据存取。例如:
CREATE TABLE X (
…
)
ENGINE=MyISAM,
DATA DIRECTORY = '/var/p1',
INDEX DIRECTORY = '/var/p2';
当然,InnoDB 采用 System TableSpace 集中存放,无法支持此种方式,需要通过设定去转换成一个 table 一个 file。
MariaDB 表分区(Table Partition)Maria ...
(十一)数据分片(Sharding)和数据分区(PARTITIONing)简述
即便是 MariaDB,也有一个想要处理大数据的心。虽然可能跟其它的例如 HBase、Hive 之类的比有些差异和不足,但并不影响壮志。
简单列举两个要处理大量数据的例子:
1、IoT Sensor Networks
存取特性: 很少大量写入,但多大量读取
事务需求: 少
资料量: 累积数量庞大
2、AI Machine Learning 领域
搜集大量数据进行分析
使用 MariaDB 处理大量数据,先来了解一下这两点。
DATA Sharding (数据分片)和 Data Partition(数据分区)数据分片简述
单一数据库系统已无法处理 Big Data 服务需求
大部分数据库瓶颈皆处于 I/O 效能问题
提供数据分片技术将数据分散储存于多个数据库实例中
提供水平式,垂直档案分布于不同的 I/O 系统,加速数据存取
可横跨多种不同功能数据库系统
相关技术或引擎:FEDERATEDX , CONNECT , SPIDER , MAXSCALE
关于数据分片,这里有一篇 2019 年 2 月发布的文章,到今天(2020/06/18)一年多,有 169.9k 的浏览量 ...
(十)MariaDB存储引擎CONNECT使用介绍
事实上,采用 MariaDB 作为数据库,一般是两种情况:1 是觉得 MySQL 被 Oracle 收购之后,继续使用 MySQL 心里不踏实(license 和发展前景等)。2 是想另外找一个生命力比较旺盛、小区比较丰富的关系型数据库。
所以一般默认的 InnoDB 和 Aria 就足够满足大部分的需求了。
不过连接处理到其它数据库,或者加载到 MariaDB 中的需求还是比较多的。例如将一份 json 文件 存在大量需要加载到 MariaDB 数据库中的数据时,这个时候就比较需要使用 CONNECT 引擎了。
注意:CONNECT 是连接到远程数据,并没有转存到 MariaDB 中。所以远程数据源的异动,MariaDB 处理查德德询得到的也是异动后的数据。
在官网(https://mariadb.com/kb/en/introduction-to-the-connect-engine/)可以看到 CONNECT 更多特性。
CONNECT 的安装与卸载Connect Storage Engine 并未封装于 MariaDB Package 内,需要透过 Repository 安装: ...
(九)MariaDB存储引擎简介
存储引擎简述
简单说来,存储引擎是数据库管理系统用来从数据库创建、读取、更新数据的软件模块。
负责提供数据实体储存的算法
提供数据文件与索引档案的管理
MariaDB 采用 Plugin 方式动态加载/卸载 引擎模块
可透过外部安装的方式添加新的 Storage Engine
查询指令:
查看所有的已启用的存储引擎:show engines;
查询预设引擎:select @@global.storage_engine;
简单介绍几个 MariaDB 的存储引擎1、InnoDB/XtraDB
XtraDB 属于 InnoDB 分支( Percona 负责维护),针对“效能与监控”进行强化,兼容 InnoDB 引擎。MariaDB 10.1 采用 (MariaDB 10.1),但在 MariaDB 10.2 回归 MySQL InnoDB 。
支持 Trasaction/Savepoints 以及 XA Transaction。
现代 IoT/BigData: 大量数据与快速写入上出现瓶颈。
2、MyISAM
MySQL/MariaDB 最早的预设引擎
轻量化设计不支持交易(Tras ...
(八)MariaDB的备份还原(mysqldump及mariabackup)
备份简介备份一般分为逻辑备份 Logical Backup ( Hot Backup )和物理备份 Physical Backup ( Cold Backup )。
逻辑备份 由恢复数据所需的 SQL 语句组成,例如 CREATE DATABASE,CREATE TABLE 和 INSERT。
逻辑备份的特点:
无需停机作业
还原弹性较佳
硬件无关,可任意还原到指定的数据库
档案较大, 备份与还原时间较长
无法备份 log 与配置文件
无事务的表(Non-transaction table) 必须被锁定
可能影响联机操作处理效能
物理备份 是通过复制单个数据文件或目录来执行的。
物理备份的特点:
需停机作业( MariaDB 10 可执行 Hot Physical Backup )
目录/文件(Directories/Files) 操作
执行速度较快
档案 size 较小
可备份日志和配置文件
因此,逻辑备份和物理备份主要区别如下:
逻辑备份更加灵活,因为可以在其它不同的硬件配置、MariaDB 版本甚至其它 DBMS 上恢复数据,而物理备份不能在明显不同的硬件、不同的 DB ...
(七)MariaDB设定最佳性能优化简述
在使用 MariaDB 之后,肯定也会希望它能够按照一定设定、规则等进行合理的性能优化,提高效能等。此篇将从常见的一些 mariadb-server 的设定上,简单介绍调整 MariaDB 期望能以最佳性能进行运行。
主要简介以下几种:
1、启用服务器内置特定最佳化参数设定(optimizer_switch)
2、线程池(thread pool)
3、查询缓存(query cache)
4、MyISAM 键缓存(Key Cache)
5、InnoDB 缓冲池(Buffer Pool)
6 优化表 (OPTIMIZE TABLE)
在此之前,需要记住 mariadb server 常用的查看状态的几个命令:show status;、show variables;、show engines;,当然都可以附加like关键词筛选。
1、启用服务器内置特定最佳化参数设定使用 switch 方式开关 MariaDB 特定的最佳化机制,系统变量:@@optimizer_switch。
这一个服务器变量,可以用来启用/禁用特定的优化。
可以使用SELECT @@optimizer_switch;来 ...
(六)实用插件ServerAudit测试使用示例
server audit 插件测试使用示例简介与安装SERVER_AUDIT 是一个非常不错的插件,在 MariaDB 5.5.34 加入,提供服务器事件(activities) 记录功能。例如联机 client 信息(账号, 主机 ..)、Queries 执行、Tables 信息;或者 Server 变数异动等。是 MariaDB Package 内建的插件。
该 server_audit 插件记录服务器的活动。对于每个客户端会话,它记录谁连接到服务器(即用户名和主机),执行了哪些查询,访问了哪些表以及更改了服务器变量。此信息存储在循环日志文件( rotating log file)中,或者可以发送到本地 syslogd。
因为是内建的,所以安装简单:
INSTALL SONAME 'server_audit';安装成功后,可以查看 MariaDB 的全局参数,了解 server_audit 的配置变量信息:
show global variables like 'server_audit%';
几个重要变量的说明:server_audit_events审核日志记录的事件类型。默 ...
(五)非MariaDB内建插件
非内嵌的插件有些插件,是 MariaDB 内建的,本地安装 MariaDB 就激活了;有的是在服务器的插件,需要 install plugin;还有就是第三方,需要安装到本地,再激活使用。
区别可以简单这样认为:
SHOW PLUGINS;看到所有已安装的激活的插件,可见数量等于SELECT * FROM information_schema.PLUGINS;;
SHOW PLUGINS SONAME;在 plugin_dir 目录中显示有 关已编译和所有服务器插件的信息,包括尚未安装的插件,可见数量等于SELECT * FROM information_schema.all_plugins。
还有就是第三种,不在 MariaDB 服务器的插件,就是不在information_schema.all_plugins的表中的第三方的插件。可能需要在终端中进行额外安装。
例如 Cracklib Password Check,可以 select 一下:
ok,为了测试该插件的使用效果,先把之前安装的 simple_password_check 卸载了:
UNINSTALL PLUG ...
(四)MariaDB密码验证插件使用示例
插件(PLUGIN)使用示例示例介绍密码验证插件 Simple Password Check Plugin (MariaDB 10.1.2.加入)——(顺带简单介绍一些 DBeaver 的使用)
之前我们在设定 root 密码时,使用的是简单密码“root”,虽然后续连接时,要加 sudo,但是该账号密码依旧可用。
以 mariadb-server 现有的状态,新建一个账号:
再输入账号信息:
然后点击右下角的保存,会有执行语句窗口,语句如下
CREATE USER 'test'@'%';
ALTER USER 'test'@'%'
IDENTIFIED BY '123456' ;
GRANT Create user ON *.* TO 'test'@'%';
GRANT Event ON *.* TO 'test'@'%';
GRANT File ON *.* TO 'test'@'%';
GRANT Process ON *.* TO 'test'@'%';
GRANT Reload ON *.* TO 'test'@'%';
GRANT Replication client ...