Я реализовал MySQL Sharding с использованием MySQL Fabric следующим образом:
шаги:
1. Установите последнюю версию (утилита mysql-utilities-1.5.2) для MySQL Fabric и включите mysqlnd_ms для php-aware-connector
2. Настройте и управляйте MySQL Fabric
3. Создайте группу (global, shard groups) и добавьте сервер в группы.
4. Определите схему базы данных и таблицы, диапазон всего для шарда базы данных / таблицы
5. Включите GTID всех серверов в соответствии с требованием
5. Проверьте и протестируйте, используя команду (mysqlfabric sharding lookup_servers database_name.table_name 100000), он пропингует нужные серверы по мере необходимости
вопросЯ не могу подключить приложение PHP с MySQL Fabric, но та же настройка MySQL Fabric, если я использую приложение Python (его коннектор), работает нормально.
Я получил эту ошибку при подключении php-приложения к MySQL Fabric:
Warning: mysqlnd_ms_fabric_select_shard(): (mysqlnd_ms) Didn't receive usable servers from MySQL Fabric in /var/www/html/shard.php on line 49
Warning: mysqli::query(): (mysqlnd_ms) Couldn't find the appropriate master connection. 0 masters to choose from. Something is wrong in /var/www/html/shard.php on line 53
Warning: mysqli::query(): (mysqlnd_ms) No connection selected by the last filter in /var/www/html/shard.php on line 53
[2000] (mysqlnd_ms) No connection selected by the last filter
Очевидно, MySQL Router теперь является способом подключения PHP к Fabric:
http://mysqlhighavailability.com/mysql-router-on-labs-the-newest-member-of-the-mysql-family/
Вместо предоставления отдельных функциональных возможностей матрицы в каждом соединителе они превратили его во внешний компонент, который можно прозрачно использовать с любым существующим соединителем.
Других решений пока нет …