Hi Liang,
Although proxysql is configurable through config file, my goal is to make it configurable completely from its admin interface. Among other reasons, it should be possible to configure and re-configure proxysql dynamically without ever logging into the box where it is installed (this is indeed already possible) and use relation between tables to create complex configuration.
With regards on how to configure it, please have a look at
https://github.com/sysown/proxysql/tree/master/doc .
If there is anything that isn't clear enough I will be happy to assist with any question.
"mysql_share_connections" and "mysql_connection_pool_enabled" : these are configuration that do not exist anymore. They were used in "proxysql-old" , the old/prototype version of ProxySQL .
Now the current global variables are described here :
https://github.com/sysown/proxysql/blob/master/doc/global_variables.md Although the documentation is not in sync with the development , and I will have to soon update the documentation .
With regards to "some edge cases not supported" : at the time of the presentation, ProxySQL had only 1 criteria to determine if multiplexing had to be disabled: if a transaction was running, multiplexing was disabled until the transaction would rollback or commit.
The edge cases that were not supported but now are supported are LOCK TABLES , SELECT GET_LOCK() , TEMPORARY TABLE , and the use of session variables. Now these edge cases are all supported.
Connections multiplexing is now always enabled, and the current version doesn't allow to disable it, at all!!
Although, a user of ProxySQL had a specific need to disable connections multiplexing because it hit a bug in Galera/MariaDB :
https://mariadb.atlassian.net/browse/MDEV-8338In ProxySQL this is tracked in
https://github.com/sysown/proxysql/issues/468 .
This enhancement (and others) are available on branch v1.1.1 :
https://github.com/sysown/proxysql/tree/v1.1.1 .
If you are running testing, I recommend to use branch v1.1.1
To disable multiplexing is as easy as:
UPDATE global_variables SET variable_value='false' WHERE variable_name='mysql-multiplexing';
LOAD MYSQL VARIABLES TO RUNTIME;
SAVE MYSQL VARIABLES TO DISK;
Regards,
René