mysqlnd_ms
PHP Manual

简介

Mysql 主从复制和负载均衡插件 (mysqlnd_ms) 可以帮助我们很简单的支 持所有使用 mysqlnd 的 PHP MySQL 扩展。

自从 PHP 5.3.3 版本,MySQL native driver 以一个 C API 接口的方式存在。这个 C 插件, 可以通过 mysqlnd 完成对 MySQL 主从复制和负载均衡 的相关功能扩展。

从 PHP 5.3.0 以后,MySQL native driver 可以以 C 库的方式工作。它以插入的方式替代 MySQL Client 库 (libmysqlclient) 的作用。使用 mysqlnd 有几个好处: 不需要特别下载内容, 他已经被内置在 PHP 当中; 他基于 PHP 许可协议; 他会消耗更小的内存; 并且他包含很多新的 函数方法 (例如:异步查询).

Mysqlnd 插件 (例如 mysqlnd_ms) 都是从用户的使用要求中提炼出来. mysqlnd_ms 支持所有的 PHP 应用, 和所有的 MySQL PHP 扩展. 他并不改变现有的 APIs, 所以他可以很容易的在现有的 PHP 应用环境中使用.

Key Features

主要功能

限制

内置的读写分离机制非常基础, 任何一个以 SELECT 开头的查询, 都被认为是读操作, 从而发送给 slave 服务器. 所有其他的查询 (包括 SHOW) 都会被认为是写操作, 而被发送给 master 服务器. 内置的操作方法可以通过重写 SQL hints 改变, 或者使用一个用户定义的 callback 实现.

读写分离不能提供对于多查询的结构支持, 多查询结果会被认为是一个单一查询. 通过开头的字符串来决定如何执行这些查询. 例如, 如果使用 mysqli_multi_query() 执行多查询 SELECT id FROM test; INSERT INTO test(id) VALUES (1) 将会被认为是一个查询操作, 而被发送给 slave 服务器, 以为他开头使用了 SELECT. 其中的 INSERT 结构,将不会被发送给 master 服务器.

Note:

应用必须知道连接切换的重要性, 他是负载均衡的墓地. 可以查看相关说明: connection pooling and switching, transaction handling, failover load balancingread-write splitting.

On the name

The shortcut mysqlnd_ms stands for mysqlnd master slave plugin. The name was chosen for a quick-and-dirty proof-of-concept. In the beginning the developers did not expect to continue using the code base.


mysqlnd_ms
PHP Manual