MySQL

  • 如何学习MySQL

    ·

    《高性能MySQL》第四版发布后,收到了很多读者的反馈,其中关注最多的是作为一个初学者,应该如何能够较为系统的学习MySQL,从而应对日常工作或者获得更好的职业发展。于是和多个业内朋友讨论后,整理了一些MySQL学习的推荐资源,供初学者参考。文章末尾有一个MySQL学习交流群,供加入提问与讨论。


    业界专家的经验

    Yangyidba 阿里云的数据库专家

    yangyidba 阿里云数据库专家

    刚刚入行时,有哪些资料给你了帮助?

    正式接触 MySQL 是2011年底,当时的公司的数据库版本主要是 5.5 版本和少量 5.1 版本。因为之前学Oracle的经验是查看官方文档,学习MySQL 资料主要是 “官方文档” 和当时的淘宝DBA团队组织的技术大学的技术分享,学习MySQL技术的技术特性和经典案例。

    其实就现在而言,MySQL 官方文档依然是最好的学习资料和教材, 里面非常详细的说明 MySQL的基础架构,redo,undo,读写逻辑,字段类型,锁,存储引擎,主从复制,MGR ,性能优化等等。把官方文档通读一遍,基本上能超越60-70%左右的DBA,为什么不是更高呢?因为学习技术是为了使用技能。

    进一步了解 MySQL/数据库,是哪些资料帮助了你?

    (more…)
  • 数据库图形客户端(GUI)工具,可以大大帮助开发者提升SQL编写与开发的效率。在云时代,企业越来越多的开始采用RDS,同时也还有部分本地IDC自建数据库,而在云端也会选择/尝试多个不同云厂商。“工欲善其事,必先利其器”,在这样的背景下,看看有哪些工具产品可供选择吧。

    整体综述

    本文完整对比了12种MySQL图形客户端(GUI)工具,从产品体验、功能完整度、云适配、计费模式、OS兼容性等多个角度进行评估与分析,给出推荐。下面产品推荐与整体得分图,读者可根据自己的实际情况选择:

    (more…)
  • Oracle对MySQL5.7的扩展支持到2023年10月就结束了,之后可能不再发布新的版本,是时候更多的了解MySQL 8.0了。同时,再看看各个云厂商对于用户和角色的支持情况。

    从8.0开始,MySQL开始支持“角色”,帮助用户更好的进行权限管理,使用角色功能,可以批量、规模化的管理用户的权限。如果,需要较大规模新建用户,并对其权限进行管理的时候,这个功能将大大简化权限增加、减少时候的管理工作。

    另外,在8.0版本中,MySQL对角色的设计上,非常的“偷懒”,因此,还有很多的隐藏的打开方式,附带的也留下了一些坑需要注意。

    基础使用示例

    基础的:

    • “角色”是代表”一组权限”(例如,某个数据库的读权限、写权限等)的对象,可以将角色赋予某个用户后,该用户使用该角色运行时,则具备这”一组权限”。
    • 当角色的权限发生变化(例如,收回或者新增权限)时,对应用户(使用该角色时)的权限也会跟着改变,这对于规模化的用户、权限管理是很方便的。

    我们看看如下场景与示例:

    (more…)
  • 一直以来实现数据库的零数据丢失都是非常有挑战,尤其是跨可用区的场景下。很多核心系统为了实现这一点都投入了大量的智慧和金钱。Amazon RDS在文档都明确的写到,数据库在多AZ之间的数据是保持同步的(注:同步是指数据写入两边要同时写成功,即使一边不可用,已经提交的事务在另一边一定是成功的)。一直以来,我也很好奇Amazon RDS在哪个层面实现的同步复制。

    这个问题原本也是没有太大疑问的,可以推测应该是通过EBS层面的块复制来下。依据有两方面,有一些公开的Amazon RDS一些架构图中可以看到有EBS复制的箭头说明。另外,还有一点,只有通过EBS的复制实现跨可用区数据一致性,才可能在RDS支持的多种数据库,如MySQL、SQL Server、Oracle等,上保持架构上一致。否则,不同数据库类型的高可用和复制架构可能相差很大。

    但是,之前很长时间我还是有一个疑问,Amazon RDS复制到底是在数据库逻辑层实现的还是在EBS物理层实现的。

    既然有上面的猜测,那为什么产生了这个疑问呢?是因为,在Aurora很多的对外介绍材料(包括论文、架构介绍的slide)中,会放一个MySQL架构来突出Aurora的架构优势。这个图一直让我误以为Amazon RDS使用了数据库的binlog的复制。在了解Aurora的时候大家经常会看到如下架构图作为反面案例(参考): (more…)

  • MariaDB 10.3发布已经有一段时间了,最近刚刚RC。里面提到了SQL_MODE新增了ORACLE选项,可以支持部分的PL/SQL语法,算是一个比较“新鲜”的更新,所以打算安装体验一下。

    体验一下SQL_MODE=”ORACLE”

    简单体验一下,我们在Google上找到Oracle 9i文档中PL/SQL示例Sample 1. FOR Loop

    Oracle中的示例文档中代码:

    -- available online in file 'sample1' DECLARE x NUMBER := 100; BEGIN FOR i IN 1..10 LOOP IF MOD(i,2) = 0 THEN -- i is even INSERT INTO temp VALUES (i, x, 'i is even'); ELSE INSERT INTO temp VALUES (i, x, 'i is odd'); END IF; x := x + 100; END LOOP; COMMIT; END;

    (more…)

  • 上周在纽约MariaDB年度用户大会(MariaDB User Conference,也简称M|18)上,CEO Michael Howard对MariaDB未来的产品策略做一个较为详细的阐述。MariaDB应该是除了官放MySQL之外最重要的MySQL分支。现在MariaDB在做版本10,这次大会上也发布了MariaDB 10.3.5(RC版)。近期官方MySQL也在快速的推进8.0版本(已经发布了RC版)的研发和发布。

    Michael Howard分享的内容可以参考:MariaDB CEO takes aim at Oracle and launches new Labs。下面是我整理的一些关键点,或者说我关注的点吧。 (more…)