Hi all,
This is my second attempt to get some feedback on our work on the
mysqlnd_ms PECL extension.

My name is Sergio Tabanelli and I work in a LAMP team for  a big Italian
company, the team manages about 100 small LAMP intranet applications. Two
years ago we decide to pass from stand-alone MySQL servers to async MySQL
clusters. Our initial thought was to use the mysqlnd_ms plugin (the
objective was to avoid application changes) but we realize soon that the
mysqlnd_ms missed some functionalities in maintenance and  read and write
consistency fields, specially considering new functionalities added to
latest MySQL versions, like multi-source replication, GTID tracking and
Group Replication, last but not least the plugin appears to be not
maintained by several years. So we port this extension to php 7.x, official
PECL extension works only with php < 5.6, and add new cool functionalities
among witch native MySQL GTID read/write consistency with mutimaster write
consistency included, for this check my gist at
https://gist.github.com/sergiotabanelli/ce992b630d08a0bc7a9cec7c577638f5.
With our new version we have now our applications deployed on MySQL
multimaster group replication clusters, and this without any changes to our
legacy code!
So .... I am asking to PECL developers if it is possible, and if yes what
we should do, to merge  our work to the PECL actual mysqlnd_ms extension,
start maintaining it and make it official with some kind of php imprimatur.
We also start changing the original documentation adding new
functionalities descriptions. The code can be found here
https://github.com/sergiotabanelli/mysqlnd_ms
<https://github.com/sergiotabanelli/mymysqlnd_ms> , a brief description
follows:

* PHP7.x porting
* New QOS session consistency and transaction id injection
* Server side read consistency (mysql >= 5.7.6 with
--session-track-gtids=OWN_GTID)
   - Mysql native built-in read consistency
   - PHP session_id read consistency enforcing
* Server side write consistency (mysql >= 5.7.6 with
--session-track-gtids=OWN_GTID)
   - Multi master write consistency
   - Multi master write consistency logical partitions
* Client side read consistency
   - Distinct master connection for client side read consistency and gtid
injection
   - Client side transaction id injection with memcached mysql plugin
* Simple client side write consistency
   - Multi master write consistency
   - Multi master write consistency logical partitions
* New config_dir ini directive for connection based json config files
* New master_on ini directive for rw splitting
* New inject_on ini directive for transcation id consistency
tracking/injection
* New mysqlnd_ms_set_trx and mysqlnd_ms_unset_trx php functions for
application based transaction tracking

Best regards
Sergio

Reply via email to