一、MySQL简介
MySQL是使用最广泛的开源关系型数据库管理系统,它是多线程、多用户、C/S架构。分为三个分支MySQL(Oracle 公司)、Percona MySQL(Percona)、MariaDB( MariaDB Foundation)。
Oracle MySQL是Oracle 收购SUN公司后获得的MySQL产品,分为企业版和社区版,是现在主流的MySQL产品。官网为:https://www.mysql.com/
Percona MySQL是原来MySQL运维人员组建的公司,用Oracle MySQL源码重新编译,增加优化、加固等功能,优势是MySQL运维工具比较齐全。官网为:https://www.percona.com/
MariaDB 是原MySQL创始人不满Oracle 对MySQL控制,重新发起的MySQL的项目,现在获得各大厂家的支持(例如Redhat、IBM等)。优势是完全开源、新特性多,缺点是稳定性差。官网为:https://mariadb.org/
二、MySQL社区
1、官方文档:
Oracle MySQL:https://dev.mysql.com/doc/
Percona MySQL:https://www.percona.com/doc/percona-server/LATEST/index.html
MariaDB:https://mariadb.org/documentation/
2、官方博客
Oracle MySQL:https://blogs.oracle.com/mysql/
Percona MySQL:https://www.percona.com/blog/
MariaDB:https://mariadb.org/blog/
3、社区
MySQL团队博客:https://mysqlserverteam.com/
淘宝数据月报:http://mysql.taobao.org/monthly
知乎数据库内核专栏:https://zhuanlan.zhihu.com/c_206071340
awesome-mysql:http://shlomi-noach.github.io/awesome-mysql/
Dbaplus:https://dbaplus.cn/
cndba:https://www.cndba.cn/index.htm
墨天轮:https://www.modb.pro/
爱可胜开源社区:https://opensource.actionsky.com/
沃趣社区:http://www.woqutech.com/docs.php?classid=24
use-the-index:https://use-the-index-luke.com/
4、博客
叶金荣:https://imysql.com/
三、MySQL开发工具
1、Navicat for MySQL
Navicat for MySQL 是管理和开发 MySQL 或 MariaDB 的理想解决方案。它是一套单一的应用程序,能同时连接 MySQL 和 MariaDB 数据库,并与 Amazon RDS、Amazon Aurora、Oracle Cloud、Microsoft Azure、阿里云、腾讯云和华为云等云数据库兼容。这套全面的前端工具为数据库管理、开发和维护提供了一款直观而强大的图形界面。
下载地址为:https://www.navicat.com.cn/products/navicat-for-mysql
2、MySQL Workbench
Oracle 公司开发的MySQL管理平台,分为付费和免费版。
下载地址为:https://dev.mysql.com/downloads/workbench/
3、SQL Developer
Oracle 公司推出的免费数据库管理工具,主要支持Oracle数据库,管理MySQL数据,需要增加MySQL驱动。因为是java 开发的,所有启动比较缓慢,占内存比较大。
4、phpMyAdmin
phpMyAdmin 是以php为基础开发的B/S架构的MySQL数据库管理工具。下载地址:https://www.phpmyadmin.net/
四、MySQL备份恢复工具
1、mysqldump
mysqldump是MySQL自带的逻辑备份工具,可以将数据导出为SQL脚本。在数据量比较小且变更不频繁的时候,可以用此工具备份。
2、mysqlpump
mysqlpump是MySQL新增的逻辑备份工具,和mysqldump主要区别是并行备份。
3、Percona xtrabackup
Percona xtrabackup 是Percona 公司提供的开源、免费、在线、非阻塞的MySQL备份工具,支持热备份【备份时候,MySQL可以正常运行】,主要是支持物理备份全量备份和增量备份。备份速度快,在数据量大的时候,是最好的方案。
下载地址:
https://www.percona.com/downloads/Percona-XtraBackup-LATEST/
3、MySQL Enterprise Backup
MySQL Enterprise Backup是Oracle开发的Oracle 企业版备份恢复工具,属于付费工具。
五、MySQL慢日志工具
1、mysqldumpslow
mysqldumpslow是MySQL自带的慢查询日志解析和统计工具,可以用来对慢查询日志进行简单分析。
2、pt_query_digest
pt_query_digest是Percona公司开发Percona tookit中的一项,主要用来分析慢查询。它可以分析binlog、general log、slowlog,也可以通过show processlist或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。
下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/
六、MySQL监控工具
1、innotop
innotop 编写者Balon Schwartz,《高性能MySQL》的作者之一。innotop的作用为实时地展示服务器正在发生的事情,监控innodb,监控多个MySQL实例,是一款MySQL运维和问题定位分析的工具。
下载地址:https://github.com/innotop/innotop
2、mysqladmin
mysqladmin是MySQL自带数据管理命令行工具,可以通过mysqladmin来监控MySQL。
3、Percona tookit
Percona tookit 是Percona 开发的一组MySQL管理和监控工具,可以用来监控和分析MySQL的性能问题。
下载地址:https://www.percona.com/downloads/percona-toolkit/LATEST/
4、Percona Monitoring and Management
Percona Monitoring and Management (PMM)是一款开源的用于管理和监控MySQL和MongoDB性能的开源平台,通过PMM客户端收集到的DB监控数据用第三方软件Grafana画图展示出来。PMM提供了对MyISAM、InnoDB、TokuDB和PXC/Glarera的监控,另外也提供了Query Analytics的功能,可以检视执行了哪些SQL指令,并对执行效能较差的语法进行优化。另外在新版本还支持了MySQL复制拓扑图结构构造。
下载地址:https://www.percona.com/downloads/pmm2/
5、Zabbix
zabbix 是一个基于 Web 界面提供分布式系统监视及网络监视功能的企业级开源解决方案,采集主机、网络、数据库等信息,集成监控和告警。
下载地址:https://www.zabbix.com/cn/download
6、Prometheus
Prometheus是一个开源系统监控和警报工具。最初是在SoundCloud建立的。自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有一个非常活跃的开发者和用户社区。它现在是一个独立的开放源码项目,并且独立于任何公司。为了强调这一点,为了澄清项目的治理结构,普罗米修斯在2016年加入了云计算基金会,成为继Kubernetes之后的第二个托管项目。
下载地址:https://prometheus.io/download/
7、StatsD
Statsd 最早是 2008 年 Flickr 公司用 Perl 写的针对 Graphite、datadog 等监控数据后端存储开发的前端网络应用,2011 年 Etsy 公司用 node.js 重构。statsd狭义来讲,其实就是一个监听UDP(默认)或者TCP的守护程序,根据简单的协议收集statsd客户端发送来的数据,聚合之后,定时推送给后端,如graphite和influxdb等,再通过grafana等展示。
下载地址:https://github.com/statsd/statsd
8、Nagios
Nagios是一个监视系统运行状态和网络信息的监视系统。Nagios能监视所指定的本地或远程主机以及服务,同时提供异常通知功能等。
下载地址:https://www.nagios.org/downloads/
9、Lepus
Lepus(天兔)数据库企业监控系统是一套由专业DBA个人(目前就职于某互联网公司),针对互联网企业开发的一款专业、强大的企业数据库监控管理系统,企业通过Lepus可以对数据库的实时健康和各种性能指标进行全方位的监控。目前已经支持MySQL、Oracle、MongoDB、Redis数据库的全面监控。
下载地址:http://www.lepus.cc/soft/index
10、开源MySQL监控工具
贺春旸开发的MySQL监控及运维工具。【《MySQL管理之道:性能调优、高可用与监控(第2版)》一书作者,三次获得dbaplus年度MVP】
下载地址:https://github.com/hcymysql
七、MySQL 审计工具
1、MySQL商业版审计插件,社区版不存在审计插件。
2、Percona的审计插件
Percona audit log插件随Percona Server一起提供,默认情况下不会安装,也不会启动。
3、MariaDB的审计插件
下载地址:https://mariadb.com/my_portal/download/audit_plugin
4、Mcafee基于Percona audit log开发的审计插件
下载地址:https://github.com/mcafee/mysql-audit/
#参考地址:
https://www.percona.com/blog/2016/02/15/mysql-mariadb-with-mariadb-auditing-plugin/
https://www.percona.com/blog/2015/09/10/percona-server-audit-log-plugin-best-practices/
八、MySQL 性能测试工具
1、SysBench
SysBench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。
下载地址:https://github.com/akopytov/sysbench?hmsr=aladdin1e5
2、tpcc-mysql
tpcc-mysql用于MySQL基准测试,percona基于TPC-C(下面简写成TPCC)衍生出来的产品。
下载地址:https://github.com/Percona-Lab/tpcc-mysql
3、mysqlslap
mysqlslap是MySQL自带的基准测试工具。
九、MySQL 高可用架构
1、主从
主从复制也是最常用和最简单的高可用的架构。复制是从一个MySQL数据库服务(主)复制数据到另外一个或者多个MySQL数据库服务(从),在复制的时候,可以根据配置复制所有数据库、选择数据库、表。这种复制主要是基于MySQL的二进制日志 (binary log),复制用的二进制的格式通常为Row Based Replication (RBR),可以根据不需求和场景,设置参数实现延迟主从、多级主从、多主一从、多从一主、只读从库等解决方案。
参考网址:https://dev.mysql.com/doc/refman/5.7/en/replication.html
2、MHA
MHA(Master High Availability)目前在 MySQL 高可用方面是一个相对成熟的解决方案,它由日本 DeNA 公司的 youshimaton(现就职于 Facebook 公司)开发,是一套优秀的作为 MySQL 高可用性环境下故障切换和主从提升的高可用软件。
在 MySQL 故障切换过程中,MHA 能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
该软件由两部分组成:MHA Manager(管理节点)和 MHA Node(数据节点)。MHA Manager 可以单独部署在一台独立的机器上管理多个 master-slave 集群,也可以部署在一台 slave 节点上。MHA Node 运行在每台 MySQL 服务器上,MHA Manager 会定时探测集群中的 master 节点,当 master 出现故障时,它可以自动将最新数据的 slave 提升为新的 master,然后将所有其他的 slave 重新指向新的 master。整个故障转移过程对应用程序完全透明。
在 MHA 自动故障切换过程中,MHA 试图从宕机的主服务器上保存二进制日志,最大程度的保证数据的不丢失,但这并不总是可行的。例如,如果主服务器硬件故障或无法通过ssh访问,MHA 没法保存二进制日志,只进行故障转移而丢失了最新的数据。使用 MySQL 5.5 的半同步复制,可以大大降低数据丢失的风险。MHA 可以与半同步复制结合起来。如果只有一个 slave 已经收到了最新的二进制日志,MHA 可以将最新的二进制日志应用于其他所有的 slave 服务器上,因此可以保证所有节点的数据一致性。
目前 MHA 主要支持一主多从的架构,要搭建 MHA,要求一个复制集群中必须最少有三台数据库服务器,一主二从,即一台充当 master,一台充当备用 master,另外一台充当从库,因为至少需要三台服务器,出于机器成本的考虑,淘宝也在该基础上进行了改造,目前淘宝TMHA已经支持一主一从。
下载地址:https://github.com/yoshinorim/mha4mysql-manager/
3、PXC
Percona XtraDB Cluster(PXC)是一个MySQL数据库集群解决方案。它确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可伸缩性。
下载地址:https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/
4、MGR
MGR(MySQL Group Replication)是一个MySQL Server插件,可用于创建弹性,高可用、容错的MySQL集群方案。
参考网址:https://dev.mysql.com/doc/refman/5.7/en/group-replication.html
5、Galera Cluster
Galera Cluster是由Codership开发的MySQL多主集群,包含在MariaDB中,同时支持Percona xtradb、MySQL,是一个易于使用的高可用解决方案,在数据完整性、可扩展性及高性能方面都有可接受的表现。MariaDB Galera Cluster集成Galera复制功能提供一个版本的集群。
下载地址:https://galeracluster.com/downloads/
6、MySQL NDB Cluster
MySQL NDB Cluster其主要功能是在无共享存储的系统中部署基于内存的数据库Cluster,其主要是通过NDB Cluster(简称NDB)存储引擎来实现的。
下载地址:https://dev.mysql.com/downloads/cluster/
参考网址:https://dev.mysql.com/doc/refman/5.7/en/mysql-cluster.html
7、InnoDB Cluster
InnoDB Cluster主要由MySQL Shell、MySQL Router和MySQL服务器集群组成,三者协同工作,共同为MySQL提供完整的高可用性解决方案。MySQL Shell 对管理人员提供管理接口,可以很方便的对集群进行配置和管理(只少三个节点组成的MGR集群)。MySQL Router 可以根据部署的集群状况自动的初始化,是客户端连接实例。如果有节点down机,集群会自动更新配置。集群包含单点写入和多点写入两种模式。在单主模式下,如果主节点down掉,从节点自动替换上来,MySQL Router会自动探测,并将客户端连接到新节点。
下载地址:https://www.mysql.com/downloads/
8、MyCAT
MyCat是目前最流行的基于Java语言编写的数据库中间件,是一个实现了MySql协议的服务器,其核心功能是分库分表。配合数据库的主从模式还可以实现读写分离。
MyCat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。 由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构 成了整个完整的数据库存储。
下载地址:http://www.mycat.org.cn/
9、KingShard
Kingshard 是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。
下载地址:https://github.com/flike/kingshard
10、DBLE
dble是上海爱可生信息技术股份有限公司基于mysql的高可扩展性的分布式中间件,是基于开源项目MyCat开发的。
下载地址:https://github.com/actiontech/dble
11、proxySQL
ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。
下载地址:https://github.com/sysown/proxysql/releases
参考网址:https://proxysql.com/documentation/installing-proxysql/
12、ShardingSphere
Apache ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款相互独立,却又能够混合部署配合使用的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。
Apache ShardingSphere 定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它通过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,未来也难于撼动,我们目前阶段更加关注在原有基础上的增量,而非颠覆。
Apache ShardingSphere 5.x 版本开始致力于可插拔架构,项目的功能组件能够灵活的以可插拔的方式进行扩展。 目前,数据分片、读写分离、多数据副本、数据加密、影子库压测等功能,以及 MySQL、PostgreSQL、SQLServer、Oracle 等 SQL 与协议的支持,均通过插件的方式织入项目。 开发者能够像使用积木一样定制属于自己的独特系统。Apache ShardingSphere 目前已提供数十个 SPI 作为系统的扩展点,仍在不断增加中。
ShardingSphere 已于2020年4月16日成为 Apache 软件基金会的顶级项目。
下载地址:https://github.com/apache/shardingsphere
参考地址:http://shardingsphere.apache.org/index_zh.html