锟斤拷锟�

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 锟叫硷拷锟斤拷锟矫达拷: 锟斤拷锟斤拷要锟截憋拷锟斤拷锟斤拷锟斤拷锟捷o拷 锟斤拷锟窖撅拷锟斤拷锟斤拷锟斤拷锟斤拷 PHP 锟斤拷锟斤拷; 锟斤拷锟斤拷锟斤拷 PHP 锟斤拷锟叫拷锟�; 锟斤拷锟斤拷锟斤拷锟侥革拷小锟斤拷锟节达拷; 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟杰讹拷锟铰碉拷 锟斤拷锟斤拷锟斤拷锟斤拷 (锟斤拷锟界:锟届步锟斤拷询).

Mysqlnd 锟斤拷锟� (锟斤拷锟斤拷 mysqlnd_ms) 锟斤拷锟角达拷锟矫伙拷锟斤拷使锟斤拷要锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷. mysqlnd_ms 支锟斤拷锟斤拷锟叫碉拷 PHP 应锟斤拷, 锟斤拷锟斤拷锟叫碉拷 MySQL PHP 锟斤拷展. 锟斤拷锟斤拷锟斤拷锟侥憋拷锟斤拷锟叫碉拷 APIs, 锟斤拷锟斤拷锟斤拷锟斤拷锟皆猴拷锟斤拷锟阶碉拷锟斤拷锟斤拷锟叫碉拷 PHP 应锟矫伙拷锟斤拷锟斤拷使锟斤拷.

Key Features

锟斤拷要锟斤拷锟斤拷

  • 透锟斤拷使锟斤拷, 锟斤拷锟斤拷锟斤拷锟斤拷使锟斤拷.

    • 支锟斤拷锟斤拷锟叫碉拷 PHP MySQL 锟斤拷展

    • 支锟斤拷 SSL

    • 一锟铰碉拷 API 锟接匡拷

    • 只锟斤拷要锟斤拷小锟侥伙拷锟斤拷使锟斤拷锟斤拷要锟侥凤拷锟斤拷锟借定

    • 锟斤拷锟斤拷锟斤拷锟接o拷只锟斤拷实锟绞碉拷 SQL 执锟斤拷时锟斤拷锟脚伙拷锟斤拷 Master 锟斤拷 Slaver 锟斤拷锟斤拷锟斤拷锟斤拷

    • 锟斤拷选锟斤拷锟斤拷 Web request 锟侥碉拷一锟斤拷写锟皆猴拷锟皆讹拷使锟斤拷 Master, 锟斤拷锟酵匡拷锟杰碉拷锟斤拷锟接革拷锟狡碉拷锟斤拷时影锟斤拷

  • 锟斤拷锟斤拷锟斤拷 MySQL Cluster 锟斤拷使锟斤拷

    • MySQL Replication: 实锟街讹拷写锟斤拷锟斤拷, 锟斤拷锟斤拷锟揭� MySQL Replication 锟斤拷写

    • MySQL Cluster: 锟斤拷锟皆斤拷锟矫讹拷写锟斤拷锟斤拷, 锟斤拷锟斤拷使锟矫讹拷锟� Master

    • 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�: 锟斤拷锟轿� MySQL Replication 锟斤拷锟狡匡拷锟斤拷, 锟斤拷锟斤拷也锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 MySQL Cluster 锟斤拷锟斤拷锟斤拷锟�

  • 锟斤拷写锟斤拷锟斤拷锟斤拷锟�

    • 锟皆讹拷锟斤拷锟� SELECT 锟斤拷锟�

    • Supports SQL hints to overrule automatism.

    • 锟矫伙拷锟皆讹拷锟斤拷

    • 锟斤拷锟皆憋拷锟斤拷锟矫o拷锟斤拷锟斤拷锟斤拷使锟斤拷同锟斤拷 Cluster 时

  • 锟斤拷锟截撅拷锟斤拷锟斤拷锟�

    • Round Robin: 锟斤拷锟矫恳伙拷锟� slave 锟斤拷询锟斤拷使锟矫诧拷同锟斤拷 slave锟斤拷锟斤拷循锟斤拷式

    • Random: 锟斤拷锟窖★拷锟� slave

    • Random once (sticky): 锟斤拷锟窖∪∫伙拷锟� slave, 锟斤拷锟斤拷锟揭筹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟�, 锟斤拷锟斤拷锟斤拷锟斤拷锟� slave

    • User-defined: 应锟矫匡拷锟斤拷锟斤拷 mysqlnd_ms 锟斤拷注锟斤拷一锟斤拷 callback

    • 锟斤拷 PHP 5.4.0 锟皆猴拷姹撅拷锟斤拷锟斤拷锟斤拷锟斤拷通锟斤拷锟斤拷锟斤拷锟斤拷频锟� API 锟斤拷锟矫斤拷锟叫达拷锟斤拷

    • Weighted load balancing: Slave 锟斤拷锟皆憋拷锟斤拷锟戒不同锟斤拷锟斤拷锟饺硷拷, 锟斤拷锟斤拷; 锟斤拷锟斤拷锟矫革拷锟斤拷牟锟窖拷锟揭伙拷锟斤拷锟斤拷玫锟斤拷璞革拷锟街达拷锟�, 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷锟斤拷锟斤拷锟借备锟斤拷询锟皆斤拷锟斤拷锟斤拷时影锟斤拷

  • Global transaction ID

    • Client-side emulation. Makes manual master server failover and slave promotion easier with asynchronous clusters, such as MySQL Replication.

    • 支锟斤拷 MySQL 5.6.5 锟斤拷锟较版本锟斤拷锟矫碉拷 GTID.

    • 锟斤拷 Session 一锟斤拷锟皆诧拷锟斤拷锟铰o拷锟斤拷锟斤拷通锟斤拷 GTID 锟斤拷锟斤拷觳� slave 锟斤拷取锟斤拷锟铰碉拷锟斤拷锟捷★拷

    • Throttling: optionally, the plugin can wait for a slave to become "synchronous" before continuing.

  • 锟斤拷锟斤拷锟揭伙拷锟斤拷约锟斤拷锟�

    • 应锟矫匡拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷选锟斤拷锟斤拷锟秸★拷session 锟斤拷强一锟斤拷锟皆凤拷锟今级憋拷锟斤拷锟斤拷实锟酵ㄑ讹拷诘锟� 锟斤拷锟皆讹拷锟斤拷锟斤拷选锟斤拷

    • 锟斤拷锟斤拷一锟斤拷锟斤拷时锟斤拷MySQL 锟斤拷锟斤拷同锟斤拷锟斤拷 slave 锟斤拷锟皆憋拷锟斤拷锟斤拷 cache 锟芥换锟斤拷锟斤拷锟节斤拷锟酵凤拷锟斤拷锟斤拷锟斤拷锟截★拷

  • 锟斤拷锟斤拷锟酵癸拷锟斤拷

    • 锟斤拷锟捷匡拷群锟斤拷锟叫的凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟皆憋拷锟斤拷锟藉到锟斤拷锟叫o拷锟斤拷锟斤拷 SQL hints 锟斤拷锟斤拷锟街讹拷锟斤拷指锟斤拷锟斤拷锟截讹拷锟斤拷锟斤拷锟叫斤拷锟叫诧拷询锟斤拷 锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟捷凤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷鹊锟侥革拷锟铰★拷

    • MySQL 锟斤拷锟斤拷同锟斤拷锟斤拷锟剿匡拷锟斤拷通锟斤拷锟斤拷锟斤拷锟斤拷锟街э拷帧锟�

锟斤拷锟斤拷

锟斤拷锟矫的讹拷写锟斤拷锟斤拷锟斤拷品浅锟斤拷锟斤拷锟�, 锟轿猴拷一锟斤拷锟斤拷 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 balancing 锟斤拷 read-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.