2023-01-11

mariadb mysql

作者 admin

MySQL数据库介绍
MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。
MySQL的历史最早可以追溯到1979年,那时Oracle也才刚刚开始,微软的SQL Server影子都没有。
在2008年1月16号 MySQL被Sun公司收购。
2009年,SUN又被Oracle收购
体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,使得许多企业选择了MySQL作为数据库
MySQL官网介绍
主页https://www.oracle.com/mysql/index.html
下载主页面https://www.mysql.com/downloads/
社区资源下载页面https://dev.mysql.com/downloads/
MySQL社区版下载页面https://dev.mysql.com/downloads/mysql/
MySQL相关产品介绍
Oracle MySQL Cloud Service (commercial)
商业付费软件,基于MySQL企业版和Oracle云服务提供企业级 的MySQL数据库服务
MySQL Enterprise Edition(commercial)
商业付费软件,除了提供MySQL数据库服务之外,又包含了connector(程序连接接口),partition(表分区),企业级的monitor(监控),HA(高可用),backup(备份),Scalability(扩展)等服务
MySQL Cluster CGE(commercial)
商业付费软件,基于MySQL Cluster和企业版拥有的各项功能提供企业级的高并发 、高吞吐的数据库服务
MySQL Community Edition
免费社区软件,提供基础的数据库服务和其他衍生服务
MySQL 社区软件相关产品介绍
MySQL Community Server
最流行的开源数据库管理软件,当前最新版本是5.7(截止2020年5月最新版本是8.0)
MySQL Cluster
基于MySQL数据库而实现的集群服务,自身能提供高并发高负载等特性
MySQL Fabric
MySQL官方提供的关于MySQL数据库高可用和数据分片的解决方案
MySQL Connectors
为应用程序提供JDBC/ODBC等访问MySQL数据库的接口服务
MySQL Community Server各版本主要区别
MySQL4.0版本:增加了子查询的支持,字符集增加UTF-8,GROUP BY语句增加了ROLLUP,mysql.user表采用了更好的加密算法,InnoDB开始支持单独的表空间
MySQL5.0版本:增加了Stored procedures、Views、Cursors、Triggers、XA transactions的支持,增加了INFORATION_SCHEMA系统数据库
MySQL5.5版本:默认存储引擎更改为InnoDB,提高性能和可扩展性,增加半同步复制
MySQL5.6版本:提高InnoDB性能,支持延迟复制
MySQL5.7版本:提升数据库性能和存储引擎,更健壮的复制功能,增加sys系统库存放数据库管理信息
MySQL和MariaDB
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用,比如:阿里、腾讯、维百、Google和Facebook等网站。非常流行的开源软件组合LAMP中的“M”指的就是MySQL

但被甲骨文公司收购后,Oracle大幅调涨MySQL商业版的售价,且甲骨文公司不再支持另一个自由软件项目OpenSolaris的发展,因此导致自由软件社区们对于Oracle是否还会持续支持MySQL社区版(MySQL之中唯一的免费版本)有所隐忧,MySQL的创始人麦克尔·维德纽斯以MySQL为基础,成立分支计划MariaDB。而原先一些使用MySQL的开源软件逐渐转向MariaDB或其它的数据库。

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

谷歌与MariaDB
Google为了顺利从MySQL迁移到MariaDB,降低数据迁移成本,甚至派遣了一名工程师到MariaDB基金会协助开发,Google和MariaDB基金会的合作关系已经显而易见。

MariaDB基金会董事会
2017年MariaDB生态系统,取得了很大的进展,包括开源,资金,协作,产品,服务,当然还包括开发和维护MariaDB代码本身。

2017年董事会选出了几名新成员。2017年6月,董事会选出了3名新成员:阿里云的Xiaobin Lin,IBM的Todd Boyd和Barry。12月,又有两名新董事会成员当选:腾讯云的张青林和微软的Tobias Ternstrom。
图中的MariaDB和MySQL,一个向右,一个向左。
MariaDB名称来自麦克尔·维德纽斯的小女儿玛丽亚(英语:Maria)的名字
MySQL名称来自 麦克尔·维德纽斯的女儿“My”是因为 Monty 的大女儿叫做 My,“SQL”就是 Structured Query Language(结构化查询语言),用于和数据库交互的语言

MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

MySQL的海豚标志的名字叫“sakila”,它是由MySQLAB的创始人从用户来在“海豚命名”的竞赛中自建议的大量的名字表中选出的。获胜的名字是由来自非洲斯威士兰知的开源软件开发者AmbroseTwebaze提供。根据Ambrose所说,Sakila来自一种叫SiSwati的斯威士兰方言,也是在Ambrose的家乡乌干达附道近的坦桑尼亚的Arusha的一个小镇的名字。

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL5.5中了解到MariaDB的所有功能。从2012年11月12日起发布的10.0.0版开始,不再依照MySQL的版号。10.0.x版以5.5版为基础,加上移植自MySQL 5.6版的功能和自行开发的新功能。
在存储引擎方面,10.0.9版起使用XtraDB(名称代号为Aria)来代替MySQL的InnoDB。
MariaDB的API和协议兼容MySQL,另外又添加了一些功能,以支持本地的非阻塞操作和进度报告。
这意味着,所有使用MySQL的连接器、程序库和应用程序也将可以在MariaDB下工作。
在此基础上,由于担心甲骨文MySQL的一个更加封闭的软件项目,Fedora的计划在Fedora 19中的以MariaDB取代MySQL

MySQL人物历史
随着科技公司的兴起和衰落,大学计算机专业的学生数量不断变化着,而目前,计算机科学专业正蓬勃发展。这意味着,不管是好是坏,大多数的计算机科学毕业生理想最多写两年代码,然后做项目经理再学习风险,创业,或进入商学院学习,然后进入一家公司的中层管理,在32岁结婚,生两个孩子,一个女儿,一个儿子,养一条狗,一栋漂亮的两层楼的有太阳能电池板的别墅。对于大多数来说一个程序员工作是一份早九晚五的工作,毕业后拿着六位数的工资来偿还大学学费,这只是一个手段,而没有人会为此受到责备。但是对于成千的好的、中等的和一般的程序员,只有一个 Monty Widenius。

Monty Widenius

Monty 是一个编程天才。19岁的时候就从赫尔辛基理工大学退学并找了份全职工作,因为在学校里已经不能再教他什么了。33岁的时候他发布了 MySQL,世界上最有名的开源数据库,除了一个库之外,他编写了数据库的全部东西。55岁的时候他抛开年龄问题,现在仍是公司的较好的程序员。

Monty 出生于1962年的赫尔辛基,Monty 1978年买了他的第一台个人电脑,为了买这台电脑他用了整个夏天在马路上铺沥青。Monty 很快发现他很擅长写代码——那些对于其他人来说很复杂的事情对他来说却很简单,他很快全身心投入到他的工作上了。“三个小时就像几分钟,很快就过去了。” Monty 说。“简单的说,这就像是在看一本很好很好的书。或者玩一个游戏。你知道当你开始玩游戏,很快三个小时就过去了。这就是我写代码的感觉。”

当其他人去参加聚会的时候,Monty 在家里写代码。他学会了计算机的输入和输出。他把 BASIC 发挥到了极致。“学校不知道编程不像其他的语言和历史学科,其他学科只需要学习。” Monty 说:“除了在学校学习还不够,较高级黑客,这只有1/1000的概率。他们在所有时间,10个小时,16个小时,每天,年复一年都在用于编码。这不是每个人都想做的事情。大多数的人都偏向于拥有一个人生。”在 Monty 的眼中,好的代码就是写了一次以后永远不会再改动。从性能上来讲,他是最优的,而且总是可以不重写的。

1980年,17岁的 Monty 陷入了编程中,他需要增加他电脑的存储空间,从8KB到16KB。因为芬兰没有商店卖他想要的,后来他就乘船来到了瑞典 Allan Larsson 的一家电脑店铺。那里 Allan, Monty 见到了 David Axmark,他们三个保持联系了很多年,在项目上经常互相帮助,偶尔还一起合作。1995年他们一起创立了 MySQL AB。Monty 负责编码,David 和 Allan 做剩下的事情。Monty 早在1981年就开始写了部分 MySQL 代码,他为芬兰公司 Tapio Laakso Oy 工作的同时也为他和 Allan 一起创建的数据仓库公司工作。但是在 Allan 和 David 的极力说服下 Monty 决定在他现在的代码之上加一层 SQL 层。1996年十月,MySQL 终于发布了,得到了广泛的好评。数据库表现很快,很可靠,学起来很简单,很大部分功劳都归功于 Monty 这些年一直在根据真实用户的反馈进行着持续的改进开发。

MySQL 生来就是为存储和管理海量数据服务的。如果有人希望跟着大量的数据点,他们使用数据库,这有点像微软的 Excel。但是,随着数据越来越多,在 Excel这样的数据库里查找数据变得很慢,而且不可靠。MySQL 能存储很多数据而且查找数据时返回的特别快。“My”是因为 Monty 的女儿叫做 My,“SQL”就是 Structured Query Language(结构化查询语言),用于和数据库交互的语言。


一张图告诉你 MySQL 是什么

开源 MySQL 的决定在1985年就有了,在一次芬兰和瑞典的邮轮旅程中,这是在一次开源的会上。Monty 说:“决定开源 MySQL 的讨论并没有花几分钟,他想给开源社区回馈点东西。即使有的人要拷贝和偷窃你的代码,我们想我们开源后不会比我们现在的收入有所减少。”开源项目让社区的开发者更好的开发软件,但是缺点是从企业角度来说把产品货币化就更困难。为了避免这种情形,Monty 增加了一个条款,如果任何企业用 MySQL 来挣钱,那么这个公司就必须购买许可证。但是实际上代码里并没有逻辑来这样处理,不过由于这个系统很有名,MySQL 还是可以扩张并且盈利的。Monty 说:“我相信开源是开发软件更好的一种方式,但是你还是要有足够的收入来雇员工和创办公司和其他的开源社区进行竞争。MySQL 是第一款做到的产品。”

在 MySQL AB 的时候,Monty 担任的是 CTO ,对于大多数城市的公司来说,CTO 只做一点点的编码工作。但是 Monty 从没有停止编码。这让一些晚一些阶段的创业公司感到羞愧,即使有550名员工,Monty 在 MySQL AB 规定了一个特别的文化,不让他每天的日程都被回会议排的满满的。(实际上,Monty 不接受预约的邀请)。Monty 说: “我总是雇佣自己开车的人,所以我不会给他们经常聊天。同时有开源你就有了一个开放的社区,人们能给你编码,你可以检查代码的质量,他们和社区怎么互动,和你怎么互动,他们问的问题,在这些场景下你很容易看到一个人是好还是坏。在一个面试中你很难知道你面试的人怎么样。”

MySQL 的成功是 CTO Monty 和 CEO Mårten Mickos 合作的成果。两人在不同的方面都很能干,对公司都很重要。Monty 是技术专家,专注于员工生产完美的代码。Mårten 是公司的创建者,他专注于运送物品,并且帮助团队成长。这是两人远景的结合才创造了 MySQL。但是在一个没有免费洗衣机,免费视频和站立办公桌的公司,是 Monty 吸引了编程天才们。Monty 不是一个善于社交活动,讨人们喜欢的,游戏理论大师,或者专业的网络工作者的筹款人。他编码,而且做得非常好。在 Monty 的眼中,让开发这尊重是很简单的:“你跟他们做相同的事,但是比他们做的更好就可以了。”


“我的自由软件支撑了你的公司。”

程序员如果看到了,Monty 建议参与到开源社区,同时在个人项目上花些时间(“我这些年创作了上百个软件。MySQL 是使用最多的一个,其他的就是我自己用而已”)。同时他提醒,频繁的换环境和编码意味着较好的程序员也有很多要学习的。在 Oracle 收购了 Sun,Monty 创立了 MariaDB,一个开发的分支,由同意的团队成员,和相同的官方语言:“蹩脚的英语。” MySQL 里很多热心的开源拥护者跟着 Monty 到了 MariaDB。MariaDB 更倾向于开发者,允许来自外部的补丁,并且是许多 Linux 发行版的默认数据库。

Monty 给开源社区和开发者的承诺是很有力的 —— OpenOcean 最初就是由 Monty 用 MySQL 的收益来创立的,致力于开发者驱动和更深的科技产品。他还邀请了开发者到他在赫尔辛基的家里吃午餐,很快 OpenOcean 将会为开发者直接向 Monty 提问开一个 Slack 频道。这么多年,Monty 给开源社区的贡献是不可否认的。然而,这是成千上万名不知名的程序员和黑客的时间和能力的结果,大部分的功劳应该归功于他们,而是他们才能确保开源革命继续前行。
出处

浅谈MySQL和mariadb区别
转载出处
MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被Sun、Oracle收购)。除了作为一个Mysql的“向下替代品”,MariaDB包括的一些新特性使它优于MySQL。

这两个数据库究竟有什么本质的区别,我看mariadb文件夹BIN中还是mysql*.exe,除了MySQL会被ORACLE闭源外,而mariadb则开源,他俩之间到底还有什么本质区别没有?

区别一:

MariaDB不仅仅是Mysql的一个替代品,它的主要目的是创新和提高Mysql的技术。

区别二:

MySQL之父Widenius先生离开了Sun之后,觉得依靠Sun/Oracle来发展MySQL,实在很不靠谱,于是决定另开分支,这个分支的名字叫做MariaDB。

MariaDB跟MySQL在绝大多数方面是兼容的,对于开发者来说,几乎感觉不到任何不同。目前MariaDB是发展最快的MySQL分支版本,新版本发布速度已经超过了Oracle官方的MySQL版本。

MariaDB 是一个采用Aria存储引擎的MySQL分支版本,是由原来 MySQL 的作者Michael Widenius创办的公司所开发的免费开源的数据库服务器。

这个项目的更多的代码都改编于 MySQL 6.0,例如 “pool of threads”功能提供解决多数据连接问题。MariaDB 5.1.41 RC可以到这里下载,32位和64位已编译Linux版本,还包括源代码包。MariaDB基于GPL 2.0发布。

所以对于大部分的MySQL用户来说,从现在主流的MySQL转到MariaDB应该是没有什么难度的。

区别三:

LAMP架构盛极一时,这离不开MySQL的免费与易用,但是在Oracle收购了Sun之后,很多公司开始担忧MySQL的开源前景,而最近Oracle进一步闭源的举措更是让人难以安心,众多互联网公司纷纷开始寻求MySQL的替代方案。

不得不提的是Apple的远见,在Oracle收购Sun之初就宣布迁移到PostgreSQL。但PostgreSQL的设计初衷就不同于MySQL,并不是使用MySQL的大部分互联网公司合适的解决方案。除了Apple,Google、Facebook、Twitter也大量使用了MySQL,纷纷发布了自己的MySQL分支/补丁集,并为不少公司所采用。同时,MariaDB、Percona等MySQL分支也渐渐步入大众的视野。

根据Wikipedia介绍,MariaDB是一个社区驱动的、采用XtraDb存储引擎的MySQL分支版本,由MySQL创始人Michael Widenius带领开发,遵循GPL v2.0协议开源。因为MySQL创始人的介入,MariaDB备受关注,Drupal、MediaWiki、phpMyAdmin、WordPress等众多应用都宣布支持MariaDB。

另外,Wikipedia开发者Asher Feldman之前宣称已将英文维基的一个从(slave)数据库从MySQL5.1 + Facebook补丁集迁移到了MariaDB 5.5.28。通过全面测试发现,MariaDB的查询效率提升了3%-15%,平均提升了8%,而且没有任何异常发生;以qp为单位,吞吐量提升了2%-10%。由于缺少数据支持,现在还不能得出任何结论,但单从测试结果看来还是非常积极的。

Asher还表示,join中索引的使用以及查询优化,特别是子查询方面,MariaDB都有不少提升,可惜目前还没有涉及到,完全升级可能还需要1-2个月。最后他强调,性能并不是Wikipedia采用MariaDB的主要原因,他们看中的是MariaDB的开源性,只有这样才能保证社区的真正开放;此外,MariaDB对MySQL导出的良好支持也非常重要,性能的提升只是迁移的附属。

为什么MariaDB更优于MySQL
转载出处
本文为读者提供MariaDB和MySQL的深入见解。分析两者并讨论它们之间的差异。还有一部分内容阐述为什么MySQL用户应该切换到MariaDB。

如今,组织有一系列数据库可供选择–无论是商业还是开源。曾经有一段时间,大多数数据库管理系统(DBMS)都是商业的。但是现在,随着众多开源数据库的推出,行业专业人士更愿意使用它们。实际上,开源数据库在当今市场上占有相当大的份额,因为用户可以根据需求自由地实现系统,并充分利用这些系统。

开源数据库系统可从Oracle,Microsoft,Google,Amazon和Rackspace等各种供应商处获得。开源数据库管理系统(DBMS)的历史并不长。第一个可用的开源数据库管理系统是MySQL,它于1995年推出,直到今天,它已经有很多重大的改进,使其成为商业数据库软件的强大竞争对手。

开源数据库管理系统越来越受欢迎,不仅因为它们功能丰富,成本低廉,而且还因为它们的操作效率。用户享受在根据个人需求定制源代码时的自由,以及少量的编程知识是也是一个加分项。Gartner报告说,开源数据库管理系统每年增长42%,到2020年这个行业的价值将达到80亿美元。报告中约80%的用户使用某种开源软件,包括数据库管理系统(DBMS)。像微软和IBM这样的各种商业供应商也提供他们数据库管理系统(DBMS)软件的“快速版”。

最广泛采用的开源数据库管理系统(DBMS)是MySQL和MariaDB。本文讨论它们的相似之处,差异和相对优点,然后再提出用户应该迁移到MariaDB的原因。

数据库

数据库是以表格形式保存数据的特定结构。支持通过基于表格结构的数据流的软件称为数据库管理系统(DBMS)。使用最广泛的数据库管理系统(DBMS)是关系数据库管理系统(RDBMS)。数据库管理系统(DBMS)是一种计算机软件应用程序,可与终端用户,其他应用程序和数据库本身交互以捕获数据。通用数据库管理系统允许定义,创建,查询,更新和管理数据库。

数据库及其数据的功能是:

数据定义:创建,修改和删除为数据组织奠定基础的定义

数据更新:插入,修改和删除数据

检索:通过进行特定查询从整个数据库检索数据

管理:用户创建和修改,数据安全性,性能监控,数据完整性,并发控制和数据恢复

因此,数据库系统是数据库模型,数据库管理系统(DBMS)和数据库的组合。

MySQL

MySQL是一个用C和C ++编写的开源多线程关系数据库管理系统(RDBMS)。MySQL由瑞典公司MySQL AB创建,该公司由David Axmark,Allan Larsson和Micheal Monty Widenius创建,并于1994年开始开发。第一个版本于1995年5月23日发布。MySQL是中的”My“取自联合创始人Monty Widenius女儿的名字。MySQL海豚标志–Sakila是从用户在“Name the Dolphin”比赛中的大量提议中选出的。

MySQL服务器适用于任务关键型,重载生产系统以及嵌入大规模部署的软件。它被认为是LAMP栈(Linux,Apache,MySQL和PHP)的核心组件。MySQL数据库适用于Linux,Windows,MAC,BSD UNIX等各种操作系统平台。维基百科,Facebook和YouTube等热门网站使用MySQL。

MySQL现在是Oracle公司以及其附属公司拥有的商标,并且是双重许可。用户可以选择GNU许可作为开源软件使用,甚至可以购买有Oracle许可证的商业软件。

MySQL体系结构

MySQL服务器基于分层架构,由主要子系统和支持组件组成,它们通过相互交互来读取,解析和执行查询以返回结果。

MySQL的五种主要子系统是:
查询引擎
存储管理器
缓冲管理器
事务管理器
恢复管理器

查询引擎:它包含三个主要的相关组件 - 语法分析器,查询优化器和执行组件。语法分析器以一种MySQL引擎能够理解的形式分解从调用程序接收到的SQL命令。“查询优化器”简化执行组件使用的语法,然后为查询执行准备最有效的计划。执行组件根据它接收的信息解释执行计划,并向其他组件提出请求以检索记录。

存储管理器:与操作系统连接,以用户表,索引和日志以及内部系统数据的形式将数据写入磁盘。

查询缓存: MySQL引擎使用查询缓存–极其高效的结果集缓存机制,这极大地减少了查询的响应时间,这些查询被调用当检索与先前查询相同的数据。

缓冲区管理器:处理查询引擎和存储管理器对数据请求之间的所有内存管理问题。MySQL使用内存来缓存可以返回的结果集,并且缓存被保存在缓冲区管理器中。

事务管理器:这个子系统提供了锁定功能,以确保多个用户以一致的方式访问数据,而不会损坏或破坏数据。

恢复管理器:为了在发生任何类型的数据丢失的情况下进行检索,会保留数据的副本。

MySQL的两个支持组件是:
进程管理
函数库

进程管理器:它执行两个主要功能 – 管理通过网络连接的用户,以及通过多线程,线程锁定和执行线程安全操作同步任务和进程。

函数库:它包含通用的函数,如字符串操作,排序操作和执行特定于操作系统的函数,如内存管理和文件I / O。

MySQL的特点

关系数据库管理系统: MySQL支持所有功能,这使得它成为一个完整的关系数据库管理系统(RDBMS)。它支持完整的SQL作为查询和更新数据的标准化语言,并且可以管理数据库。
简单而安全:与其他数据库管理系统(DBMS)软件相比,MySQL使用非常简单且具有交互性,并且具有可靠的数据安全层,可为数据提供高效的加密,因此非常安全。
客户机/服务器体系结构:其简单的客户机/服务器体系结构可帮助终端用户创建一个与许多客户机连接的服务器,以便与服务器进行通信进行插入,更新和管理数据库。
可伸缩性: MySQL可以处理大量数据而不会出现任何卡顿 – 多达5000万行。它可以处理高达8TB的数据而没有任何问题。
跨平台:与几乎所有操作系统兼容,如UNIX,Windows,Linux,MAC OS X等。
高性能,灵活且高效的生产力: MySQL提供更快速,高度可靠,便宜的存储解决方案,并支持大量嵌入式应用程序。它利用触发器,程序和视图来提高生产力。

MariaDB

MariaDB是MySQL的分支版本。它主要是由于MySQL在被Oracle公司收购时出现的问题而开发的。MariaDB是一个通用的数据库管理系统(DBMS),它具有可扩展的架构,可通过可插拔存储引擎支持大量的用例。它使用不同的存储引擎来支持不同的用例。

MariaDB是一款开源的多线程关系数据库管理系统,在GNU公共许可证(GPL)下发布。其首席开发人员是Michael Monty Widenius,他也是MySQL AB的创始人之一。作为数据库系统,许多功能有助于MariaDB的普及。其速度是其最显着的特点之一。MariaDB也具有很强的可扩展性,能够处理数万张表和数十亿行数据。它还可以快速平稳地管理少量数据,方便小型企业或个人项目。另一个与前任不同的特点是专注于安全。MariaDB的内置功能包括操作和格式化文本,业务和统计计算,记录时间顺序信息,

MariaDB服务器是世界上最流行的开源数据库之一。它在Debian和Ubuntu中可用,现在是Arch Linux,Manjaro,openSUSE,Red Hat Enterprise Linux,CentOS,Fedora和SUSE Linux Enterprise的默认数据库。作为世界上最广泛采用和广泛部署的产品之一,MariaDB服务器收到阿里巴巴,Facebook和谷歌等公司的捐款。最近,微软还联手支持MariaDB社区。

MariaDB的特点

MariaDB可用于GPL,LGPL和BSD。
它包括广泛的存储引擎选择,包括高性能存储引擎,用于与其他关系数据库管理系统(RDBMS)数据源一起工作。
它使用标准和流行的查询语言。
MariaDB在许多操作系统上运行,并支持各种编程语言。
它提供对PHP的支持,PHP是最流行的Web开发语言之一。
它提供Galera群集技术。
MariaDB还提供了很多在MySQL中不可用的操作和命令,并消除/取代了对性能产生负面影响的功能。
其他功能还包括多源复制,融合IO优化,表发现和联机更改表。

MariaDB和MySQL的比较分析

MariaDB拥有大量新功能,这使得它在性能和用户导向方面更加出色。让我们来评估MariaDB和MySQL,以确定哪一个更好。这种选择最终将取决于IT经理以及他们对开源数据库的熟悉程度。

MySQL和MariaDB之间的一些重要差异

1. 数据库的使用情况:自1995年以来,MySQL一直被视为迄今为止实施最为广泛且最广泛使用的开源数据库。许多像Twitter,YouTube,Netflix和PayPal这样的IT巨头,以及美国国家航空航天局,美国国防部队和沃尔玛都利用这个数据库。

最近才到来的MariaDB也在各种IT巨头组织(如Google,Red Hat,CentOS和Fedora)中作为后端软件因此得到了强大的基础。

2. 数据库和索引的结构: MySQL是一个纯粹的关系数据库,集成了一个ANSI标准的信息模式,由表,列,视图,过程,触发器,游标等组成。MySQL的结构化查询语言(SQL)是ANSI SQL 99。

而MariaDB是MySQL的一个分支,因此具有相同的数据库结构和索引。该功能使MariaDB成为希望直接切换或升级后端的用户的理想选择,而无需升级数据库和数据结构。

当从MySQL升级到MariaDB时,所有内容(从数据,表格定义,结构和API)都保持一致。

3. 二进制和实现: MySQL是使用C和C ++开发的,并且完全兼容几乎所有操作系统,如Microsoft Windows,MAC OS X,Linux,FreeBSD,UNIX,NetBSD,Novell Netware和其他许多操作系统。

MariaDB使用C,C ++,Bash和Perl开发。它与Microsoft Windows,Linux,MAC OS X,FreeBSD,Solaris等各种操作系统兼容。

4. 复制和集群: MySQL通过主从主复制和主从复制提供强大的复制和集群,并利用Galera集群实现多主集群。

MariaDB为主终端用户提供与主从主复制和主从复制相同的复制和集群功能。它还使用10.1版以后的Galera Cluster。

5. 对数据库的支持:通过Oracle全天候提供MySQL技术支持服务,支持团队由专业开发人员和工程师组成,他们提供各种工具,如错误修复,修补程序和版本发布。Oracle根据用户的需求提供MySQL首要支持,扩展支持和持续支持。

MariaDB通过开源社区,在线论坛甚至通过专家为用户提供强有力的支持。MariaDB通过企业订阅提供24小时全天候支持,尤其适用于任务关键型生产系统。

6. 安全性:就安全性而言,MySQL为表空间数据提供了强大的加密机制。它提供了强大的安全参数,包括选择好的密码,不给用户不必要的特权,并通过防止SQL注入和数据损坏来确保应用程序安全。

MariaDB在内部安全和密码检查,验证模块(PAM)和轻量级目录访问协议(LDAP)认证,Kerberos,用户角色以及对表空间,表格和日志的强大加密等安全功能方面取得了重大进展。

7. 可扩展性:支持可扩展系统的数据库可以用许多不同的方式进行扩展,如添加新的数据类型,函数,运算符,聚集函数,索引方法和过程语言。MySQL不支持可扩展性。

MariaDB建立在现代架构的基础之上,可以在每一层 – 客户端,集群,内核和存储上进行扩展。这种可扩展性提供了两个主要优势。它允许通过插件实现持续的社区创新,这意味着可以通过MariaDB的可扩展架构集成各种存储引擎,如MariaDB ColumnStore或Facebook的MyRocks。此外,它使客户能够轻松配置MariaDB以支持从联机事务处理(OLTP)到联机分析处理(OLAP)的各种用例。

8. JSON支持: MySQL支持本地JSON数据类型,可以在JSON(JavaScript Object Notation)文档中高效地访问数据。与将JSON格式的字符串存储在字符串列中相比,JSON数据类型提供了以下优点:

自动验证存储在JSON列中的JSON文档。无效的文档会产生错误。
优化的存储格式:存储在JSON列中的JSON文档被转换为允许快速读取文档元素的内部格式。当服务器稍后必须读取以这种二进制格式存储的JSON值时,不需要从文本表示中解析该值。二进制格式的结构使服务器能够直接通过键或数组索引查找子对象或嵌套值,而无需读取文档中的所有值。
另一方面,MariaDB Server 10.2引入了一整套用于读写JSON文档的24个函数。另外,JSON_VALID函数可以与校验约束一起使用,而像JSON_VALUE这样的函数可以与动态列一起使用来索引特定的字段。

9. 授权许可: MySQL在GPL下以开放源代码提供代码,并以MySQL Enterprise形式提供非GPL商业分发选项。

MariaDB只能使用GPL,因为它的工作源于该许可条款下的MySQL源代码。

10. 性能: MariaDB通过MySQL的许多创新实现了同类最佳性能。其中包括线程池管理以最大限度地提高处理效率,以及InnoDB数据存储区内的碎片整理等广泛的优化功能。因此,当从InnoDB表中删除行时,可用空间立即可供操作系统使用。不需要将旧表中的数据复制到新表中,并且表空间中没有空闲。MariaDB还提供与引擎无关的表统计信息,以改善优化程序的性能,加快对表的大小和结构进行查询处理和数据分析。

如果没有这些增强功能,MySQL的性能就会下降。MySQL中的线程利用率是次优的,InnoDB表随着时间的推移变得碎片化,从而影响性能。

MariaDB与MySQL

以下几点突出了MariaDB的优缺点。

优点

MariaDB针对性能进行了优化,对于大型数据集,它比MySQL强大得多。从其他数据库系统可以优雅的迁移到MariaDB是另一个好处。

从MySQL切换到MariaDB相对容易,这对于系统管理员来说好像是一块蛋糕。

MariaDB通过引入微秒级精度和扩展用户统计数据提供更好的监控。

MariaDB增强了KILL命令,使您可以杀死用户的所有查询(KILL USER 用户名)或杀死查询ID(KILL QUERY ID query_id)。MariaDB也转而使用Perl兼容的正则表达式(PCRE),它提供比标准MySQL正则表达式支持更强大和更精确的查询。

MariaDB为与磁盘访问,连接操作,子查询,派生表和视图,执行控制甚至解释语句相关的查询应用了许多查询优化。

MariaDB纯粹是开源的,而不是MySQL使用的双重授权模式。一些仅适用于MySQL Enterprise客户的插件在MariaDB中具有等效的开源实现。

与MySQL相比,MariaDB支持更多的引擎(SphinxSE,Aria,FederatedX,TokuDB,Spider,ScaleDB等)。

MariaDB提供了一个用于商业用途的集群数据库,它也支持多主复制。任何人都可以自由使用它,并且不需要依赖MySQL Enterprise系统。

缺点

从版本5.5.36开始,MariaDB无法迁移回MySQL。
对于MariaDB的新版本,相应的库(用于Debian)不会及时部署,由于依赖关系,这将导致必需升级到较新的版本。
MariaDB的群集版本不是很稳定。
迁移到MariaDB的主要原因

首先,MariaDB提供了更多更好的存储引擎。NoSQL支持由Cassandra提供,允许您在单个数据库系统中运行SQL和NoSQL。MariaDB还支持TokuDB,它可以处理大型组织和企业用户的大数据。

MySQL的平常(和缓慢的)数据库引擎MyISAM和InnoDB已分别在MariaDB中由Aria和XtraDB取代。Aria提供了更好的缓存,这对于磁盘密集型操作来说是有所不同的。

MariaDB通过引入微秒级精度和扩展用户统计数据提供更好的监控。

MariaDB的最新功能(如GIS,动态色谱柱支持等)使其成为更好的选择。

MariaDB遵循良好的行业标准,同时发布安全公告和升级,并以正确的方式处理预发布的保密性和发布后的透明度。

这几天在帮助网友维护服务器的时候看到他们的网站居然有用MariaDB数据库的,我们一般的都是用的MySQL。当然目前大部分的程序也是都支持这两个数据库类型的,我们在搭建服务器WEB环境的时候也有看到可选择2个数据库,MariaDB和MySQL数据库哪个比较好?如果让我们安装的话到底选择哪个。

第一、MariaDB 数据库

MariaDB数据库,其实是我们常用的MySQL的一个分支,一直由开源设置维护升级,采用的是GPL授权许可,而且我们要知道MariaDB完全兼容MySQL,我们可以用作为MySQL的代替品。不过在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。开始的时候,我们看到版本型号是同步的,但是现在版本高于MYSQL,它的版本号直接从10.0开始,以自己的步伐进行开发,当然,还是可以对MySQL完全兼容。在某些方面,确实可以看到MariaDB的数据特性、性能等都超越了MySQL。

第二、MySQL数据库

MySQL,是相当老的数据库类型,从MySQL 5.5发布,Oracle把InnoDB做成了MySQL默认的存储引擎,效率和存储性能提高很多,所以我们低配置服务器的话建议从5.5开始安装。目前,MYSQL版本已经升级到8.0版本,但是如果我们需要安装高级版本的话需要看自己的配置服务器和程序兼容性。

第三、MariaDB和MySQL选择哪个

根据趋势的话,我们一般用户可以用MySQL,但是如果我们追求性能的话,可以开始尝试MariaDB,毕竟MariaDB的开发灵活度已经受欢迎度已经和以前确实不同。我们可以从不同的项目试试然后对比,反正两者是可以切换的,都是没有问题。

1. 介绍

  • mariadb就是mysql的分支,因为mysql听说要收费了,有人写了一个开源,免费的mysql,起名叫mariadb,用法和mysql一模一样
  • 阿里云的yum仓库,和mariadb官方的yum仓库,其实就是两个不同的url,提供了2个不同的yum仓库。
  • 阿里云的yum仓库中,软件版本可能较低,不会实时的更新I如果选择的是阿里云的yum仓库。

2. 安装

  • 如果显示没有,换一下yum源即可
yum install mariadb-server  mariadb -y

3.初始化mysql

3.1 介绍

  • 在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据 库的安全性和正常运转,需要先对数据库程序进行初始化操作。这个初始化操作涉及下面 5 个 步骤。
  • ➢ 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系统中的密 码,这里的密码值默认应该为空,可直接按回车键)。
  • ➢ 设置 root 管理员在数据库中的专有密码。
  • ➢ 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业
  • 务的安全性。
  • ➢ 删除默认的测试数据库,取消测试数据库的一系列访问权限。
  • ➢ 刷新授权列表,让初始化的设定立即生效。

3.2 初始化

3.2.1 命令

# 确保mariadb服务器启动后,systemctl start  mariadb # 执行命令初始化(退出数据库执行)mysql_secure_installation

3.2.2 步骤

Enter current password for root (enter for none): Set root password? [Y/n] yNew password:Re-enter new password: Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] n ... skipping. Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y Thanks for using MariaDB!

4. mysql授权sql

4.1 命令介绍

mysql使用grant命令对账户进行授权,grant命令常见格式如下 grant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限

4.2 创建mysql普通用户并授权

生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求。MariaDB [(none)]> create user username@'%' identified by 'password';MariaDB [(none)]> use mysql;MariaDB [mysql]> select host,user,password from user where user='username'; 切换普通用户,查看数据库信息,发现无法看到完整的数据库列表[root@master ~]# mysql -uusername -p -h 127.0.0.1MariaDB [(none)]> show databases; 退出数据库,使用root登录,开始权限设置[root@master ~]# mysql -uroot -pMariaDB [(none)]> use mysql;##授予远程登录的权限MariaDB [(none)]> grant all privileges on *.* to username@"%" identified by 'password';MariaDB [mysql]> show grants for username@"%"; 移除权限MariaDB [(none)]> revoke all privileges on *.* from username@"%";

4.3 给root授权,使其可以远程登录

授予所有的库所有的表权限,给用户root,在任何主机上,密码是1grant all privileges on *.* to root@"%" identified by '1';# 刷新权限,立即生效flush privileges; # window上用root远程链接数据库mysql -uroot -p*** -h 10.0.0.100

5. mysql备份与恢复

mysqldump命令用于备份数据库数据(全部的数据库) p密码 不能有空格 windows上不用写路径,直接 > db.sql[root@master ~]# mysqldump -uroot -p1 --all-databases > /opt/db.sql # 单独导出一个数据库mysqldump -u root -p -B ob_crm > opt/crm.sql 			    进入mariadb数据库,删除一个db[root@master ~]# mysql -uroot -pMariaDB [(none)]> drop database s11; 进行数据恢复,吧刚才重定向备份的数据库文件导入到mysql中# 第一种在外部[root@master ~]# mysql -uroot -p < /tmp/db.sql# 第二种进入数据库source /opt/db.sql;

参考文章

https://blog.csdn.net/pengjianglilive/article/details/120693981

https://blog.csdn.net/qq_52385631/article/details/123878869