萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> 實現mysql讀寫分離的mysqlnd的mysqlnd_ms插件使用教程

實現mysql讀寫分離的mysqlnd的mysqlnd_ms插件使用教程

mysqlnd_ms插件主要實現了mysql的連接保持和切換, 負載均衡和讀寫分離等, 也就是說, 這個擴展會去分別PHP發給MySQL的query, 如果是”讀”的query, 就會把query發送給從庫(配置中指明), 並且支持負載均衡; 而如果是”寫”的query, 就會把query發送給主庫.

mysqlnd_ms是mysqlnd的一個插件,該插件實現了連接保存和切換、負載均衡、讀寫分離的功能。要想使用mysqlnd_ms的讀寫分離功能必須在安裝php時使用–with-mysqlnd。mysqlnd實現的功能是可以不需要在php服務器上安裝mysql,在php5.3之前編譯安裝php需要通過–with-mysql=/path/to/mysql指定mysql安裝路徑。

1、安裝mysqlnd_ms模塊


tar -zxvf mysqlnd_ms-1.5.2.tgz
 cd mysqlnd_ms-1.5.2
 /usr/local/php/bin/phpize
 ./configure --with-php-config=/usr/local/php/bin/php-config
 make && make install

出現以下類似提示,記錄下面的路徑需要擁有配置php.ini

Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/
Installing header files: /usr/local/php/include/php/

2、編輯 /usr/local/php/etc/php.ini

extension = /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/mysqlnd_ms.so
mysqlnd_ms.enable = On
mysqlnd_ms.config_file = /usr/local/php/etc/mysqlnd_ms_plugin.ini

3、創建mysqlnd_ms_plugin.ini配置文件


"myapp": {
        "master": {
            "master_0": {
                "host": "192.168.6.135",
                "socket": "\/tmp\/mysql.sock"
            }
        "slave": {
            "slave_0": {
                "host": "192.168.6.136",
                "port": "3306"
            "slave_1": {
                "host": "192.168.6.137",
                "port": "3306"
            "filters": {
                "random": {
                    "sticky": "1"
                }
            }
        }
}

這裡使用到了1主2從的mysql服務器
filters是定義訪問從服務器的策略,random是隨機選擇一台服務器,strick參數設置成1是指將一次請求都指向一台服務器

4、測試

使用wordpress進行測試,編輯配置文件wp-config.php

/** MySQL主機 */
define('DB_HOST', 'myapp'); #這的myapp是在mysqlnd_ms_plugin.ini中定義的

copyright © 萬盛學電腦網 all rights reserved