对于数据库管理员(DBA)来说,保持数据库运行在***状态需要具备敏捷,专注,快速反应的能力以及一颗冷静的头脑。数据库几乎是所有应用程序成功运行的核心,由于 DBA 负责组织数据,因此寻找可靠的工具帮助简化数据库管理流程并简化日常维护任务是必要的。
以下这些优秀工具可以改善 MySQL 环境中的 CLI 和 Web 管理,SQL 查询,模式迁移以及复制和恢复。(顺附 Github 地址,Star 数量和提交数量供广大 DBA 参考
1、Mycli
Mycli 项目提供 MySQL 命令行自动完成和语法高亮显示,它是***的 MySQL 管理工具之一。
诸如跳转主机和双因素认证之类的安全限制使许多 MySQL DBA 只能通过命令行访问系统。在这种情况下,心爱的 GUI 工具(如 MySQL Workbench,Monyog 等)不是合适的选择。
使用命令行的过程中,大部分时间都花在了黑色的终端世界。Mycli ***的一点就是语法突出的丰富性。例如,它允许 DBA 在 WHERE 子句中将查询字符串中的函数和运算符在视觉上分离出来。对于简短的单行查询来说,这可能不是什么大不了的事情,但是当使用多表执行 JOIN 操作查询时,这就变成了巨大优势。
Mycli 支持多行查询和语法突出显示,这意味着可以在查看或优化查询时最重要的部分,可以选择多种语法高亮配色方案或创建自己的配色方案。
Mycli 的另一个明星功能是智能完成,允许通过输入前几个字符来从上下文相关列表中选择表名和列名。不需要因为忘记 WHERE 子句中列的名称而放弃当前输入运行 SHOW CREATE TABLE。
在 Mycli 中的智能完成
使用 Mmycli,用户可以使用s 等来查询,例如 fs myAlias myQuery。 这非常方便,只要需要,就可以使用 f myAlias 执行查询。
Mycli 项目使用 BSD 3 许可证,项目目前有 44 个贡献者,1.2k 提交和 5k Star(地址:https://github.com/dbcli/mycli)。
2、Gh-ost
99%的 MySQL 数据库管理员(DBA)在执行对 MySQL 表的更改时担心会影响生产,可以考虑 Gh-ost(GitHub Online Schema Migration)。Gh-ost 提供 MySQL 模式更改,不会阻塞写入,不使用触发器,并且可以暂停和恢复迁移!
为什么这个如此重要?由于 MySQL 5.6 提供了新的 ALTER TABLE ... ALGORITHM = INPLACE DDL(数据定义语言)功能,因此有可能修改一个表而不阻塞写操作,例如添加索引(B-tree)等常用操作。但是,在写入(DML 语句)被阻塞的情况下,最显着的是增加了 FULLTEXT 索引,表空间的加密以及列类型转换。
其他流行的在线模式更改工具(如 Percona 的 pt-online-schema-change)通过在主服务器上实现一组三个触发器(INSERT,UPDATE 和 DELETE)来保持 shadow 副本表与变化同步。这会由于写入放大而导致较小的性能损失,但更重要的是需要七个元数据锁定实例。这些有效地阻止了 DML(数据操纵语言)事件。
由于 Gh-ost 使用二进制日志进行操作,因此不会受到基于触发器的缺点影响。***,如果服务器出问题,可以暂停模式迁移一段时间,并在恢复后继续。
那么 Gh-ost 如何工作呢?默认情况下,Gh-ost 连接到副本(从),标识主节点,并在主节点上进行应用迁移。它将副本上的更改接收到 binlog_format = ROW 的源表中,解析日志并将这些语句转换为在主 shadow 表上重新执行。它跟踪副本上的行数,并确定何时执行原子切换(切换表)。
Gh-ost 操作模式
Gh-ost 提供了一种替代模式,可以直接在主服务器(不管是否有从服务器)上执行迁移,读取主服务器的 binlog_format = ROW 事件,然后将其重新应用到 shadow 表中。
***一个选项可用于仅在副本上运行迁移,而不会影响主服务器,因此可以测试或以其他方式验证迁移。
Gh-ost 一般流程
请注意,如果模式具有外键,那么 Gh-ost 可能无法运行,因为此配置不受支持。oak-online-alter-table 是 Gh-ost 的前身,DBA 可以阅读 Percona ***执行官 Peter Zaitsev 以及 OAK 工具包和 Gh-ost 的作者和维护人员 Shlomi Noach 的回应,比较 Gh-ost 和 pt-online-schema-change 的性能。
Gh-ost 项目使用 MIT 许可证,该项目目前有 29 个贡献者,近 1k 的提交和 3k Star。(Github 地址:https://github.com/github/gh-ost)
3、PhpMyAdmin
MySQL 工具中运行时间最长,最成熟的项目之一是用于通过 Web 管理 MySQL 的古老 PhpMyAdmin 工具。phpMyAdmin 允许 DBA 浏览和修改 MySQL 数据库对象:数据库,表,视图,字段和索引。有多种选项可使用十几种格式执行数据导出,修改 MySQL 用户和权限,以及执行临时查询。
PhpMyAdmin 状态页面显示问题,连接 / 流程和流量图
可以找到一个 “状态” 选项卡,动态绘制给定数据库实例问题,连接 / 进程和网络流量以及 “Advisor ” 选项卡,显示可能的性能问题列表以及如何修复的建议。
PhpMyAdmin 开始屏幕
PhpMyAdmin 使用 GPLv2 许可证,这是一个超过 800 个贡献者的项目,112k 提交和 2.7k Star。在线演示可在 https://demo.phpmyadmin.net/master-config / 上找到。(Github 地址:https://github.com/phpmyadmin/phpmyadmin)
4、Sqlcheck
SQL 反模式可能会降低查询速度,但通常需要经验丰富的 DBA 和开发人员仔细研究代码来识别和解决这些问题。Sqlcheck 反映了 Karwin 确定的四类反模式:
- Logical database design
- Physical database design
- Query
- Application development
工作中的 Sqlcheck
Sqlcheck 可以针对不同的风险分为低风险,中风险或高风险三大级别。如果反模式列表很大,这会很有帮助,因为可以优先考虑对性能影响***的查询。要做的是收集一个不同的查询列表到文件,然后将它们作为参数传递给该工具。
使用从 PMM 演示环境收集的样本来生成以下输出:
Apache 许可证 2.0 涵盖了 Sqlcheck,该项目有五个贡献者,187 个提交和 1.4k Star。(Github 地址:https://github.com/jarulraj/sqlcheck)
5、Orchestrator
Orchestrator 是高可用性管理工具,它提供了发现 MySQL 环境的复制拓扑能力,通过上下链接来识别主从。它也可以通过 GUI 重构复制拓扑结构,提供一个拖放界面将从设备提升为主设备,这是一个非常安全的操作。事实上,Orchestrator 拒绝任何非法操作,以免破坏系统。
***,Orchestrator 在节点遭遇失败时可以支持恢复,因为它使用状态的概念智能选择正确的恢复方法,并决定使用适当的主升级过程。
Orchestrator 是 GitHub 的 Shlomi Noach 提供的另一个工具。它由 Apache 许可证 2.0 涵盖,该项目有 34 位贡献者,2,780 个提交和 900 颗 Star。(Github 地址:https://github.com/github/orchestrator)
Orchestrator 为 MySQL 复制和恢复提供了一个窗口
除此之外,还有一个很棒的免费工具——PMM。它整合了许多***开源工具,包括 Orchestrator 的优点,以提供全面的数据库监控和管理功能。它支持 MySQL,MariaDB 和 MongoDB 服务器。
上述每个工具涉及到 MySQL 管理员角色的不同方面。这些工具是免费开源的,如果需要,也可以根据自己的环境需求进行调整,也可以不加修改地直接使用。如果你还没有尝试过,不妨试试。