加入收藏 | 设为首页 | 会员中心 | 我要投稿 源码网 (https://www.900php.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

Mysql复制实现,读写分离讲解以及安装失败

发布时间:2016-11-24 11:27:32 所属栏目:MySql教程 来源:站长网
导读:副标题#e# 注意:这是安装失败版,所以mysql-proxy安装的过程就没必要看了。 已经讲过了mysql主从同步 Atlas 官方文档:http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy.html mysql-proxy-0.8.1 写主机也提供读 mysql-proxy-0.8.2 写主机单纯写 用MySQ
副标题[/!--empirenews.page--]

注意:这是安装失败版,所以mysql-proxy安装的过程就没必要看了。

已经讲过了mysql主从同步

Atlas

官方文档:http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy.html

mysql-proxy-0.8.1 写主机也提供读

mysql-proxy-0.8.2 写主机单纯写

用MySQL-Proxy实现读写分离

http://www.infoq.com/cn/news/2007/10/mysqlproxyrwsplitting

为了实现读写分离我们需要连接池。我们仅在已打开了到一个后端的一条经过认证的连接的情况下,才切换到该后端。MySQL协议首先进行握手。当进入到查询/返回结果的阶段再认证新连接就太晚了。我们必须保证拥有足够的打开的连接才能保持运作正常。

-- 读写分离
  --
  -- 发送所有的非事务性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

一、什么是MySQL Proxy?

MySQL Proxy 是一个通过网络利用MySQL 的网络协议,并且提供一个或多个MySQL服务器与一个或多个MySQL客户端相互沟通的应用程序。在大多数基本配置情况下, MySQLProxy 只是传递从客户端到MySQL 服务器的查询以及MySQL 服务器到客户端的应答。

之所以能做到这一点,是因为MySQL Proxy 使用MySQL 的网络协议,它兼容任何MySQL的客户端(包括命令行客户端,任何使用MySQL 客户端库所开发的客户端,任何MySQL 的连接器,支持MySQL 的网络协议),都可以连接到代理服务器,并且无需修改。除了基本的传递, MySQL Proxy 也有能力监测和改变客户与服务器之间的会话。MySQL Proxy 使用Lua这种脚本式语言编写相应的脚本,并根据脚本的定义来拦截相应的查询请求。

通过从客户端拦截相应的查询请求,MySQL Proxy可以在查询队列发送到服务器之前插入一些查询请求,也可以服务器返回的应答中将那些对应的应答删除。这个功能使得您可以对每个查询进行跟踪并获取报告。例如,监测其执行时间或其他调试信息,并分别记录结果,同时还能正确的将应答返回给客户端。综上所述,MySQL Proxy 可以让您执行额外的监控,过滤或操纵的查询,而你不需要在客户端做任何修改,因为这一切对于客户端和用户来说是透明的,他们会认为自己连接的是真正的MySQL 服务器。

client --> mysql-proxy -->db
client -->db

mysql:命令选项以及配置文件语法

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-configuration.html

MySQL Proxy Scripting:

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-scripting.html

15.7.4.3. Capturing a Connection with connect_server()
15.7.4.4. Examining the Handshake with read_handshake()
15.7.4.5. Examining the Authentication Credentials with read_auth()
15.7.4.6. Accessing Authentication Information with read_auth_result()
15.7.4.7. Manipulating Queries with read_query()
15.7.4.8. Manipulating Results with read_query_result()

Mysql Proxy 使用:

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-using.html

管理接口:

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-using-admin.html

FAQ:

http://dev.mysql.com/doc/refman/5.1/en/mysql-proxy-faq.ht

(编辑:源码网)

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

热点阅读