mysqlnd_ms: partitioning support for 1.x and a wiki page
| From: | Ulf Wendel | Date: | Thu, 12 May 2011 21:12:14 +0000 |
| Subject: | mysqlnd_ms: partitioning support for 1.x and a wiki page | ||
| Groups: | php.pecl.dev | ||
| Request: | Send a blank email to pecl-dev+get-8252@lists.php.net to get a copy of this message | ||
Hi,
a couple of weeks after the initial 1.0.1 alpha release of the mysqlnd replication and load balancing plugin [1], the addition of documentation to the manual [2] and only one bug report so far, its time for 1.x brainstorming.
A wiki page: useful?
I've set up a simple wiki page [3] for anybody interested in either following the development more closely or even joining it. For example, by proposing features. If you don't have any concrete feature proposals but a list of (client side, PHP related) pain points with MySQL replication, please, add your worries to the wiki page. Someone else may have a solution that one could incorporate into mysqlnd_ms.
The wiki page is - to some degree - still a stub. If it gets positive feedback, if it turns out to be a valuable too, I'm happy to fix that.
1.1 - main goal: partitioning support?
Today, I blogged about "partitioning support" [4]. That's something Andrey had nagged me about already for a while. And, I think, it is worth to propose as the main goal for a 1.1 release.
MySQL replication allows you to define which databases and tables a slave shall replicate. Some slaves may replicate all databases, some
may replicate only selected ones or even only some tables [5]. In a way, when looking at the whole cluster of master and slave servers, it can be called partitioning. It is the old story of divide and conquer, break up a big problem into smaller ones, for example, to gain more flexibility with load balancing.
PECL/mysqlnd_ms 1.1 should support such MySQL replication setups.
It should learn the topology of the setup from its own configuration file. The configuration file tells the plugin which slave serves which databases and tables. The plugin shall analyze statements and run them on those servers which hold the necessary tables according to the rules from the config file.
1.1 - other goals: what?
I see the "paritioning support" goal as a big task (better SQL parser, new config format and handling). Much more time consuming than, for example, a little hack to improve transaction awareness based on the connection wire status.
However, "partitioning support" may not be the most desired improvement.
This is where it drives me back to wiki page [3]. Of course, you may also hit the reply button in you mail client and I do the wiki page editing ...
Ulf
[1] http://pecl.php.net/package/mysqlnd_ms
[2] http://php.net/mysqlnd_ms
[3] https://wiki.php.net/pecl/mysqlnd_ms
[4] http://blog.ulf-wendel.de/?p=310
[5] http://dev.mysql.com/doc/refman/5.6/en/replication-solutions-partitioning.html