加入收藏 | 设为首页 | 会员中心 | 我要投稿 南昌站长网 (https://www.0791zz.cn/)- 终端安全、安全管理、数据治理、图像分析、大数据!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

实现mysql读写分离的mysqlnd的mysqlnd_ms插件使用教程

发布时间:2022-07-01 10:37:32 所属栏目:MySql教程 来源:互联网
导读:mysqlnd_ms插件主要实现了mysql的连接保持和切换,负载均衡和读写分离等,也就是说, 这个扩展会去分别PHP发给MySQL的query,如果是读的query,就会把query发送给从库(配置中指明),并且支持负载均衡; 而如果是写的query,就会把query发送给主库. mysqlnd_ms是mysql
  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"
              }  --phpfensi.com
          "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中定义的.

(编辑:南昌站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读