设为首页 收藏本站
查看: 754|回复: 0

[经验分享] mysql读写分离

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-8-18 09:33:03 | 显示全部楼层 |阅读模式
mysql读写分离
  静态分离:直接将服务器地址写入程序
  动态分离:通过代理服务器对数据进行读写操作,由代理服务器判定读写操作,在主服务器上写数据,在
          从服务器上读数据。

  
  1、使用mysql-proxy实现读写分离
  # ./mysql-proxy --proxy-backend-addresses=10.0.5.150:3306 --proxy-read-only-backend-addresses=10.0.5.151:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=mysql --log-level=warning --log-file=/var/log/mysql-proxy.log --max-open-files=2048 --event-threads=4 --proxy-address=10.0.5.152:3306
  
  --proxy-backend-addresses            指定主服务器地址(写数据)
  --proxy-read-only-backend-addresses  指定从服务器地址(读数据)
  --proxy-lua-script                   指定用于读写分离的脚本程序
  --daemon                             指定以守护进程的方式运行
  --user=mysql                         指定运行的用户
  --log-level                          指定日志记录级别
  --log-file                           指定日志文件位置
  --max-open-files                     指定最大课打开的文件数,受操作系统限制
  --event-threads                      设置工作线程数
  --proxy-address                      设置监听的本机地址和端口
  
   
  获取mysql-proxy帮助
  # ./mysql-proxy --help         \\基本选项帮助
  # ./mysql-proxy --help-proxy   \\代理选项帮助
  
  
  在所有服务器上进行授权
  mysql> grant replication slave on *.* to 'repuser'@'10.0.5.151' identified by 'aixocm';
  mysql> flush privileges;
  (2)使用amoeba实现读写分离
   安装jdk
     # tar xf jdk-7u51-linux-x64.tar.gz -C /usr/local/
     # mv jdk1.7.0_51 java
     
   编辑/etc/profile文件,设置java环境变量
     # vim /etc/profile
       JAVA_HOME="/usr/local/java"
       CLASS_PATH="/usr/local/java/jre:/usr/local/java/lib"
       export JAVA_HOME CLASS_PATH
       PATH="$PATH:/usr/local/mysql/bin:/usr/local/java/bin"
     # source /etc/profile
     
   查看和调整java的默认版本
     # java -version
     # alternatives --install /usr/local/java/bin/java java /usr/local/java/bin/java 100  \\在系统中登记java版本和设置优先级
     # alternatives --display java   \\显示java信息
     # alternatives --config java    \\设置java的默认版本
  安装和配置amoeba实现读写分离
     # unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/
     # mv amoeba-mysql-3.0.5-RC amoeba
     
     # vim dbServers.xml    \\定义后端服务器信息
      <property name="sendBufferSize">256</property>    \\设置发送缓冲区大小
      <property name="receiveBufferSize">256</property> \\设置接收缓冲区大小
      <property name="port">3306</property>       \\设置后端服务器端口
      <property name="schema">sxjy</property>     \\设置代理默认连接的数据库
      <property name="user">root</property>
      <property name="password">aixocm</property>  \\设置连接后端服务器的密码
      
      <dbServer name="master1"  parent="abstractServer">  \\定义后端服务器
        <factoryConfig>
           <property name="ipAddress">10.0.5.150</property>
        </factoryConfig>
      </dbServer>

      <dbServer name="slave1"  parent="abstractServer">  \\定义后端服务器
        <factoryConfig>
           <property name="ipAddress">10.0.5.151</property>
        </factoryConfig>
      </dbServer>

      <dbServer name="master" virtual="true">   \\定义服务器池
       <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
        <property name="loadbalance">1</property>  \\定义负载均衡算法
       <property name="poolNames">master1</property> \\添加服务器,多个用逗号隔开
       </poolConfig>
      </dbServer>

     <dbServer name="slave" virtual="true">  \\定义服务器池
        <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
           <property name="loadbalance">1</property>
           <property name="poolNames">slave1</property>
        </poolConfig>
     </dbServer>
     # vim amoeba.xml       \\定义代理信息
     <property name="port">3306</property>   \\设置代理服务器监听的端口
     <property name="ipAddress">10.0.5.152</property> \\设置代理监听的地址
     <property name="user">root</property>  \\设置代理服务器使用的用户名
     <property name="password">aixocm</property>  \\设置代理服务器使用的密码
     <property name="defaultPool">master</property>  \\设置默认的服务器池,一般除
        select,insert,update,delete等的其它操作都在默认的服务器进行

     <property name="writePool">master</property>  \\执行写操作的服务器池
     <property name="readPool">slave</property>    \\执行读操作的服务器池
     <property name="needParse">true</property>
     
     # vim jvm.properties   \\设置java内存分配信息
     JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss512k -XX:PermSize=32m -XX:MaxPermSize=128m"
  
     # vim access_list.conf  \\定义访问控制列表
     10.0.5.100:no
     10.0.*.*:yes
     
     # vim dbServers.xml    \\定义后端服务器信息
     # vim amoeba.xml       \\定义代理信息
     # vim jvm.properties   \\设置java内存分配信息
     JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss512k -XX:PermSize=32m -XX:MaxPermSize=128m"
  
     # vim access_list.conf
     10.0.5.100:no
     10.0.*.*:yes
(5)实现数据分割
  # vim rule.xml
    <tableRule name="stu" schema="sxjy" defaultPools="master1,master2">
                <rule name="rule1">
                        <parameters>id</parameters>
                        <expression><![CDATA[ id % 2 == 0 ]]></expression>
                        <defaultPools>master1</defaultPools>
                        <readPools>slave1</readPools>
                        <writePools>master1</writePools>
                </rule>
               
                <rule name="rule2">
                        <parameters>id</parameters>
                        <expression><![CDATA[ id % 2 == 1 ]]></expression>
                        <defaultPools>master2</defaultPools>
                        <writePools>master2</writePools>
                        <readPools>slave2</readPools>
                </rule>
   
     </tableRule>
  
   
    垂直分割
  <tableRUle name="user_info" schema="blog" defaultPools="master1" />
  <tableRUle name="user_info" schema="webchat" defaultPools="master2" />

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-259590-1-1.html 上篇帖子: 用yum安装mariadb 下篇帖子: mysql主从复制 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表