The Proxy Wars

随着代理(和数据库路由器)的使用,我使用过的第一个代理是现在已被弃用的MySQL代理。从那以后,我已经使用了相当多的mariadb-maxscale(包括它的fork-airbnb-maxscale),最近使用了proxysql,并且开始查看mysql路由器。在这20分钟的简短概述中,我们将讨论这三个问题的存在原因、功能比较以及何时使用正确的工具来完成工作的原因。

展开查看详情

1.The Proxy Wars: MySQL Router, ProxySQL, MariaDB MaxScale Colin Charles, Chief Evangelist, Percona Inc. colin.charles@percona.com / byte@bytebot.net http://bytebot.net/blog/ | @bytebot on Twitter Percona Webminar 15 November 2017

2.whoami • Chief Evangelist, Percona Inc • Focusing on the MySQL ecosystem (MySQL, Percona Server, MariaDB Server), as well as the MongoDB ecosystem (Percona Server for MongoDB) + 100% open source tools from Percona like Percona Monitoring & Management, Percona xtrabackup, Percona Toolkit, etc. • Founding team of MariaDB Server (2009-2016), previously at Monty Program Ab, merged with SkySQL Ab, now MariaDB Corporation • Formerly MySQL AB (exit: Sun Microsystems) • Past lives include Fedora Project (FESCO), OpenOffice.org • MySQL Community Contributor of the Year Award winner 2014

3.License • Creative Commons BY-NC-SA 4.0 • https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode

4.What is a proxy? • Lightweight application between the MySQL clients and the server • Man-in-the-middle between client/server • Communicate with one or more clients/ servers

5.Image via Giuseppe Maxia

6.MySQL Proxy - ten years ago! • The first proxy, which had an embedded Lua interpreter • It is used in MySQL Enterprise Monitor • Lua was flexible to allow you to rewrite queries, add statements, filter, etc. • 2007-2014

7.MariaDB MaxScale 1.0…1.4.x • GA January 2015 • The “Swiss Army Knife” - pluggable router with an extensible architecture • Logging, writing to other backends (besides MySQL), firewall filter, routing via hints, query rewriting • Binlog Server - popularised by booking.com to not have intermediate masters • Popular use case: sitting in front of a 3-node Galera Cluster

8.MariaDB MaxScale ecosystem • First known plugin: Kafka backend written by Yves Trudeau • https://www.percona.com/blog/2015/06/08/maxscale-a-new-tool-to-solve-your- mysql-scalability-problems/ • First known credible fork: AirBnB MaxScale 1.3 • connection pooling (not 1:1, multiplexed N:M, N>M connections), requests throttling, denylist query rejection, monitoring

9.MariaDB MaxScale 2.0 • Same Github repository, unlinked against MySQL client libraries (replaced with SQLite), CDC to Kafka, binlog events to Avro/JSON • License change from GPLv2 to Business Source License (BSL)

10.

11.

12.MariaDB MaxScale 2.1 • Dynamic (re)configuration • Performance

13.MySQL Router - GPLv2 • GA October 2015 • Transparent routing between applications and any backend MySQL servers • Pluggable architecture via the MySQL Harness • Failover, load balancing • This is how you manage MySQL InnoDB Cluster with mysqlsh - https://www.youtube.com/watch? v=JWy7ZLXxtZ4

14.ProxySQL - GPLv3 • Stable December 2015 • Seamless failover (including query • ProxySQL - included with Percona rerouting), load balancing XtraDB Cluster 5.7, proxysql- • Query caching admin tool available for PXC • Query rewriting configurations • Query blocking (database aware • Improve database operations, firewall) understand and solve performance • Query mirroring (cache warming) issues, HA to DB topology • Query throttling and timeouts • Connection Pooling & Multiplexing • Runtime reconfigurable • Read/Write Split and Sharding • Monitoring built-in

15.Comparison • http://www.proxysql.com/compare

16.ProxySQL missing features from MariaDB MaxScale • Front-end SSL encryption (client -> SSL -> proxy -> application) - issue#891 • Binlog router • Streaming binlogs to Kafka • use Maxwell’s Daemon: http://maxwells- daemon.io/ • Binlogs to Avro

17.ProxySQL Resources • Marco Tusa: https://tusacentral.net/joomla/ index.php/mysql-blogs • SeveralNines: https://severalnines.com/blog? keywords=%23proxysql • Pythian: https://www.pythian.com/blog/tag/proxysql/ • Percona: https://www.percona.com/blog/category/ proxysql/

18.Health of these projects • MariaDB MaxScale: 142 watchers, 670 stars, 199 forks, 19 contributors • MySQL Router: 25 watchers, 47 stars, 30 forks, 8 contributors • ProxySQL: 119 watchers, 951 stars, 145 forks, 25 contributors

19.Punch cards

20.

21.Google Trends

22.What do you use? • MySQL Router is clearly very interesting going forward, especially with the advent of the MySQL InnoDB Cluster • ProxySQL is a great choice today, has wide use, also has Percona Monitoring & Management (PMM) integration • MariaDB MaxScale pre-2.0 if you really need a binlog router • Server you’re using?

23.Resources • ProxySQL: https://groups.google.com/forum/#!forum/ proxysql • MariaDB MaxScale: https://groups.google.com/forum/ #!forum/maxscale • MySQL Router: https://forums.mysql.com/list.php? 146 • Vitess: https://groups.google.com/forum/#!forum/ vitess

24.Percona Live Santa Clara 2018 • https://www.percona.com/live/18/ • April 23-25 2018, Santa Clara, California, USA • Call for Papers/Presentations are now open!

25.Thank you! Colin Charles colin.charles@percona.com / byte@bytebot.net http://bytebot.net/blog | @bytebot on twitter slides: slideshare.net/bytebot