mysql 读写分离(基础篇)

2016-02-19 10:14 8 1 收藏

下面请跟着图老师小编一起来了解下mysql 读写分离(基础篇),精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

【 tulaoshi.com - 编程语言 】

基本的原理是让主数据库处理事务性查询,而从数据库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从数据库。

  Jan Kneschke在《MySQL Proxy learns R/W Splitting》中详细的介绍了这种技巧以及连接池问题:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

  为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当进入到查询/返回结果的阶段再认证新连接就太晚了。我们必须保证拥有足够的打开的连接才能保持运作正常。
实现读写分离的LUA脚本:
  -- 读写分离
  --
  -- 发送所有的非事务性Select到一个从数据库
  代码如下:

if is_in_transaction == 0 and
  packet:byte() == proxy.COM_QUERY and
  packet:sub(2, 7) == "SELECT" then
  local max_conns = -1
  local max_conns_ndx = 0
  for i = 1, #proxy.servers do
  local s = proxy.servers[i]
  -- 需要选择一个拥有空闲连接的从数据库
  if s.type == proxy.BACKEND_TYPE_RO and
  s.idling_connections 0 then
  if max_conns == -1 or
  s.connected_clients max_conns then
  max_conns = s.connected_clients
  max_conns_ndx = i
  end
  end
  end
  -- 至此,我们找到了一个拥有空闲连接的从数据库
  if max_conns_ndx 0 then
  proxy.connection.backend_ndx = max_conns_ndx
  end
  else
  -- 发送到主数据库
  end
  return proxy.PROXY_SEND_QUERY

注释:此技巧还可以用来实现其他的数据分布策略,例如分片(Sharding)。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

来源:http://www.tulaoshi.com/n/20160219/1593900.html

延伸阅读
标签: 拼布
如图所示: 1、疏缝线 (蓝色的那一盒):新手可以不买,打算长期玩的最好买 缺点:贵,貌似18-20块钱两束,可以用一年多,也可以用大市场棉线替代 优点:容易扯断,方便,节约疏缝和拆线时间 2、针 我不建议买可乐针组,买了也就算了 最好这样单包买针,算下来便宜点 A、贴布针:细、软、...
一、连接MYSQL。 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql 2、例2:连接到远程主机上的MYSQL。...
学习篇 了解了一些最基本的操作命令后,我们再来学习如何创建一个数据库和数据库表。 1、使用SHOW语句找出在服务器上当前存在什么数据库: mysql SHOW DATABASES; +----------+ | Database | +----------+ | mysql| | test | +----------+ 3 rows in set (0.00 sec) 2、创建一个数据库abccs mysql CREATE DATABASE abc...
安装篇 PHP+MySQL+Linux目前已逐渐成为小型web服务器的一种经典组合。在indows环境下构筑和调试MySQL数据库是许多网站开发者的一种首选。本人在Windows98环境下初学MySQL,现将学习过程与经验总结出来供大家参考。 1、下载mysql-3.23.35-win.zip并解压; 2、运行setup.exe;选择d:mysql,"tyical install" 3、启动my...
Java的IO操作都是基于流进行操作的,为了提高读写效率一般需要进行缓冲。     简单的示例程序如下:         /**  * 读出1.txt中的内容,写入2.txt中  *  */ import java.io.*; public class ReadWriteFile{  public static void main(String[] args){   try{ &nbs...

经验教程

175

收藏

5
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部