ThinkPHP配置MySQL数据库实现读写分离

alvin
alvin
alvin
532
文章
52
评论
2015年8月18日17:52:02 评论 211次 562字阅读1分52秒

ThinkPHP提供了完善的读写分离功能,不需要手动切换数据库。什么时候读,什么时候写系统会自动判断。读数据时系统会操作从服务器,而写数据时系统会操作主服务器。最终由数据库实现同步,这就是一个最典型的数据库读写分离,下以将配置好的两台主从数据库为例,详细介绍实现读写分离。

首先打开项目下的数据库配置文件,修改其中的数据库连接参数。要实现多数据库连接,只需要使用”,”分隔多台服务器即可,如以下代码所示。

PHP
'配置值'
'URL_CASE INSENSITIVE' =>true,
"DB_DEPLOY_TYPE"=>1, //是否启用分布式
'DB_RW_SEPARATE'=>true, //是否启用智能读写分离
'DB_TYPE' => 'mysql', //数据库类型
'DB_HOST' => '192.168.2.1,192.168.2.10', //服务器地址
'DB_NAME' => 'tp', //数据库名
'DB_USER' => 'root,root', //用户名
'DB_PWD' => 'root , root', //密码
'DB_PREFIX' => 'tpk_', //数据库表前缀
"project_name"=>"项目名称",
'TMPL_L_DELIM' => '',
'LAYOUT_ON'=>true,
);
?>

如上述代码所示,要启用读写分离只需要设置DB_RW_SEPARATE为true即可。然后其他的配置信息和普通的配置信息相差不大。DB_HOST用于配置服务器ip,多个服务器使用“,”隔开,排在第1个位置的表示主服务器(即写入服务器),排在后面的默认都会被分配为从服务器(读服务器); DB_USER用于配置服务登录用户,顺序与DB_HOST相对应,如果分布式数据库所有登录用户都相同,可以只输入一个登录名即可; DB_PWD与DB_HOST配置过程一样。

配置文件配置好后,现在就可以在动作中测试读写分离了,如以下代码所示。

PHP
select();
dump($rows);
}
//写入
public function add() {
  $articleObj=M("Article");
  $data["title"]="读写分离测试"i
  $data["add_user"]="ceiba";
  $data["area"]="shanghai";
  $data["category"]=" 教育新闻";
  $data["content"]="读写分离测试---内容";
  if ($articleObj->add($data)) {
   $this->success("数据添加成功") ;
  }else {
   $this->error("数据添加失败");
  }
}
}
?>

add动作执行后,可以首先查看192.l68.2.1主服务器,然后再观察192.168.2.10从服务器,可以看到这两台服务器的数据是同步更新的。通过读写分离,能够有效地提高数据库的负载能力。

  • 我的微信:18682260315
  • 分享网络营销技巧与广大的网络营销爱好者交流网络营销方案、技巧、策划、案例、SEO、网络推广、社会化媒体营销等网络营销知识。
  • weinxin
  • 我的微信小程序
  • 营销的探讨总是没有止境,事件营销作为一种新的营销方式越来越受到营销人的青睐,但事件不常有,企业营销却常在。
  • weinxin
alvin
  • 本文由 发表于 2015年8月18日17:52:02
  • 转载请注明:https://www.sunhui.me/xuexibiji/903.html - 孙辉博客
    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 hui@36kp.com 举报,一经查实,本站将立刻删除。

您必须才能发表评论!