# awesome-mysql

A curated list of awesome MySQL free and opensource software, libraries and resources.

This list accepts and encourages pull requests. See CONTRIBUTING

### Contents

- Awesome MySQL
  - Analysis
  - Backup
  - Benchmarking
  - Binlog Replication
  - ChatOps
  - Configuration
  - Connectors
  - Deployment
  - Development
  - GUI
  - HA
  - Proxy
  - Replication
  - Schema
  - Security
  - Server
  - Sharding
  - Toolkits
- Resources
  - Conferences
  - E-Books
  - Media
  - Newsletters

## Analysis

Performance, structure & data analysis tools

- Anemometer - Box SQL slow query monitor.
- innodb-ruby - A parser for InnoDB file formats, in Ruby.
- innotop - a ‘top’ clone for MySQL with many features and flexibility.
- MySQL Explain Analyzer - A web-based analyzer of `EXPLAIN FORMAT=JSON` output, providing comments, scalability analysis and permalinks for saved samples.
- mysql-statsd - A Python daemon to collect information from MySQL and send it via StatsD to Graphite.
- MySQLTuner-perl - A script that allows you to review a MySQL installation quickly and make adjustments to increase performance and stability.
- Percona Monitoring and Management - An open-source platform for managing and monitoring MySQL performance.
- Prometheus/mysqld_exporter - Time series database for real-time monitoring and alerting.
- pstop - a top-like program for MySQL, collecting, aggregating and displaying information from performance_schema. ## Backup

Backup/restore/recovery tools

- Dumpling - Logical, parallel backup/dumper tool for MySQL/TiDB written in GoLang - support csv format output and integrated as library
- MyDumper - Logical, parallel backup/dumper tool for MySQL
- MySQLDumper - open-source web based backup tool - useful for shared webhosting
- Percona Xtrabackup - an open-source hot backup utility for MySQL - based servers that doesn’t lock your database during the backup.

## Benchmarking

Tools to stress your servers

- iibench-mysql - Java based version of the Index Insertion Benchmark for MySQL/Percona/MariaDB.
- go-tpc - A golang port of TPCC and TPCH benchmark for MySQL.
- Sysbench - a modular, cross-platform and multi-threaded benchmark tool.
- TPCC-MySQL - A port of the popular TPCC benchmark for MySQL.

## Binlog-Replication

- DM - A High-Availability data migration platform which supports migrating data from MySQL/MariaDB to TiDB and merging shard tables
- Kingbus - A distributed MySQL binlog storage system built on Raft
- mysql-ripple - Ripple, a server that can serve as a middleman in MySQL replication

## ChatOps

Scripts integrated into chat rooms

- Hubot MySQL ChatOps

## Configuration

MySQL sample configuration and advisors

- mysql-compatibility-config - make MySQL configuration behave more like newer (or older) releases of MySQL.

## Connectors

MySQL connectors for various programming languages

- Connector/C - Official C driver for MySQL.
- Connector/CPP - Official C++ driver for MySQL.
- Connector/J - a standardized database driver for the Java platforms and development.
- Connector/Net - a standardized database driver for .Net platforms and development.
- Connector/Node.js - Official Node.js driver for MySQL.
- Connector/Python - a standardized database driver for Python platforms and development.
- DBD::mysql - MySQL driver for the Perl5 Database Interface.
- go-sql-driver - a lightweight and fast MySQL-Driver for Go’s (golang) database/sql package.
- libAttachSQL - libAttachSQL is a lightweight, non-blocking C API for MySQL servers.
- MariaDB Java Client - LGPL-licensed MariaDB Client Library for Java Applications.
- mex-mariadb - MIT licensed MariaDB/MySQL Client Library for GNU Octave and Matlab.
- mysqlclient-python - (Old) MySQL database connector for Python.
- node-mysql - A pure Nodejs Javascript client implementing the MySQL protocol.
- PHP mysqlnd - MySQL native driver for MySQL, deprecating older libmysql based driver.
- PyMySQL - MySQL database connector for Python.
- Ruby Mysql2 gem - MySQL driver for Ruby and Rails projects.

## Deployment

MySQL deployment tools

- MySQL Docker - Official Docker images.
- dbdeployer - A tool that installs one or more MySQL servers within seconds, easily, securely, and with full control.

## Development

Tools to support MySQL-related development

- Flywaydb - Database migrations; Evolve your database schema easily and reliably across all your instances
- Liquibase - Source control for your database
- Shift - An application that helps you run schema migrations on MySQL databases
- Skeema - Declarative pure-SQL schema management system for MySQL and MariaDB, with support for sharding and external online schema change tools
- Test database - A sample MySQL database with an integrated test suite, used to test applications and servers

## GUI

GUI frontends & applications

- Adminer - Database management in a single PHP file.
- HeidiSQL - MySQL GUI frontend for Windows.
- ILLA Cloud - Low-code internal tool builder integrated with Mysql, can be used as GUI for Mysql.
- mycli - A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.
- MySQL Shell - Advanced client and code editor for MySQL that supports development and administration for the MySQL Server and MySQL InnoDB cluster (AdminAPI) with an interactive JavaScript, Python, or SQL interface.
- MySQL Workbench - provides DBAs and developers an integrated tools environment for database design & modeling; SQL devleopment; database administration.
- Ocelot GUI - GUI client for MySQL or MariaDB, including debugger.
- Percona Monitoring and Management - An open-source platform for managing and monitoring MySQL performance.
- phpMyAdmin - a free software tool written in PHP, intended to handle the administration of MySQL over the Web.
- pspg - provides a pager with enhanced visualization and navigation for tabular data. Originally implemented for PostgreSQL, but also supports MySQL.
- Sequel Ace - a Mac database management application for working with MySQL databases.
- SQLyog Community edition - SQLyog Community edition. For Windows, works fine under wine in Mac and Linux
- DBeaver - A cross-platform SQL and NoSQL database client.
- OmniDB/OmniDB: Web tool for database management

## HA

High availability solutions

- Galera Cluster - a true Multimaster Cluster based on synchronous replication.
- MHA - Master High Availability Manager and tools for MySQL.
- orchestrator - MySQL replication topology management and High Availability solution.
- Percona Replication Manager - Asynchronous MySQL replication manager agent for Pacemaker. Supports file and GTID based replication, geo-distributed clusters using booth.
- replication-manager - a high availability solution to manage MariaDB 10.x and MySQL & Percona Server 5.7 GTID replication topologies.

## Proxy

Proxies to MySQL

- MaxScale - open-source, database-centric proxy.
- Mixer - a MySQL proxy powered by Go which aims to supply a simple solution for MySQL sharding.
- MySQL Proxy - A simple program that sits between your client and MySQL server(s) that can monitor, analyze or transform their communication.
- ProxySQL - High performance proxy for MySQL.
- MySQL Router - MySQL Router is part of InnoDB cluster, and is a lightweight middleware that provides transparent routing between your application and back-end MySQL Servers.

## Replication

Replication related software

- data-diff - Command-line tool and Python library to efficiently diff rows across two different databases.

## Schema

Add-on schemas

- common_schema - DBA’s framework for MySQL, providing a function library, views library and QueryScript interpreter.
- sys - A collection of views, functions and procedures to help MySQL administrators get insight in to MySQL Database usage.

## Security

Tools that prevents leaking of sensitive data from database (encryption, masking and tokenization, honey-pots, etc)

- Acra - SQL database protection suite: strong selective encryption, SQL injections prevention, intrusion detection system.

## Server

MySQL server flavors

- MariaDB - Community developed fork of MySQL server.
- MySQL Server & MySQL Cluster - Official Oracle’s MySQL server & MySQL Cluster distribution.
- Percona Server - An enhanced, drop-in MySQL replacement.
- TiDB - A distributed HTAP database compatible with the MySQL protocol.

## Sharding

Sharding solutions/frameworks

- jetpants - An automation suite for managing large range sharding clusters, by Tumblr.
- vitess - vitess provides servers and tools which facilitate scaling of MySQL databases for large scale web services.

## Toolkits

Toolkits, general purpose scripts

- gh-ost - GitHub’s online schema migration for MySQL.
- go-mysql - A pure go library to handle MySQL network protocol and replication.
- MySQL Utilities - a collection of command-line utilities, written in Python, that are used for maintaining and administering MySQL servers, either individually, or within Replication hierarchies.
- openark kit - a set of utilities that solve everyday maintenance tasks, which may be complicated or time consuming to do by hand, written in Python.
- Percona Toolkit - a collection of advanced command-line tools to perform a variety of MySQL server and system tasks that are too difficult or complex to perform manually.
- UnDROP - a tool to recover data from dropped or corrupted InnoDB tables.

# Resources

At this stage “resources” will not include websites, blogs, slides, presentation videos, etc. in fear of list size

## Conferences

Public, recurring conferences on and around MySQL

- FOSDEM - a free event for software developers to meet, share ideas and collaborate. Annually, in Brussels. Offers “MySQL & friends” room.
- MySQL Central - Oracle’s annual MySQL conference, as part of Oracle Open World.
- Percona Live - MySQL & Openstack focused conference.
- SCALE - A community organized Linux and Open Source conference held annually in Southern California. The local MySQL community runs a track under the name MySQL Community Day.

## e-books

e-books as well as relevant materials on and around MySQL

- Database Systems Lecture Notes - lecture notes on Database Systems (available in pdf, html, odt and markdown) including a Chapter on SQL that covers basic set-up, exercises and problems.
- SQL-exercise - contains several SQL exercises, including the schema description figure, SQL code to build schema, questions and solutions in SQL. Based on wikibook SQL Exercises.

## Media

Public, ongoing video & audio casts. This excludes conference presentations in fear of list size

## Newsletters

Newsletters require an email address, by definition. List below are newsletters that require nothing but an email address