zoukankan      html  css  js  c++  java
  • MySQL优化(四)——读写分离

    1.MySQL高可用
            主从复制      一主多备      多主多备
            读写分离      减少IO开销,防止阻塞等等

    2.主从复制参考

    https://www.cnblogs.com/chx9832/p/12342626.html

    3.MySQL读写分离------Mycat
            1.Mycat暴露给外界访问ip地址,mycat在那一台机器上
            2.ip就是对应机器ip,Mycat会虚拟出一个数据库,供外界连接  如:jdbc:mysql://192.168.xx.xx/dbname
            3.Mycat会指定权限,让从机只能读,让主机能写能读,一般主机只做写
                    
        
    4.Mycat使用:
          
            4.1 解压mycat,不要放在有中文目录的地方
            4.2 修改mycat解压目录下的conf文件夹中server.xml文件,配置账户
                <!-- 添加user -->
               <user name="mycat_master">
                <property name="password">mycat_master</property>
                <property name="schemas">mycat</property>
               </user>
                
                <!-- 添加user -->
               <user name="mycat_slave">
                <property name="password">mycat_slave</property>
                <property name="schemas">mycat</property>
                <property name="readOnly">true</property>
               </user>


            4.3 配置schema.xml文件
                <schema name="mycat" checkSQLschema="true" sqlMaxLimit="100">
                    <table name="t_users" primaryKey="user_id" dataNode="dn1" rule="rule1"/>
                    <table name="t_message" type="global" primaryKey="messages_id" dataNode="dn1" />
                </schema>
                <dataNode name="dn1" dataHost="jdbchost" database="weibo_simple" />
               
                <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="1"
                            writeType="0" dbType="mysql" dbDriver="native" switchType="1"
                            slaveThreshold="100">
                    <heartbeat>select user()</heartbeat>  
                    <writeHost host="hostMaster" url="192.168.7.11:3306" user="root" password="root">
                    </writeHost>
                    <writeHost host="hostSlave" url="192.168.7.22:3306" user="root" password="root"/>
                </dataHost>


            4.4 配置rule.xml
                <tableRule name="rule1">
                    <rule>
                        <columns>user_id</columns>
                        <algorithm>func1</algorithm>
                    </rule>
                </tableRule>
                <function name="func1" class="org.opencloudb.route.function.AutoPartitionByLong">
                <property name="mapFile">autopartition-long.txt</property>
                </function>
            4.5 配置启动日志log4j.xml
                <level value="debug" />
            
            4.6 启动mycat  端口:8066
                启动bin下startup_nowrap.bat

    使用sqlyog模拟jdbc连接

    新建一个主机的虚拟连接

    连接成功后,就出现了配置的俩张表

     

     虚拟主机可以执行读写操作,添加一条数据测试

    回到主机查看,写操作成功

     从机同样也是会同步这条数据

    再新建一个连接,建立一个虚拟从机的连接

    尝试修改之前的数据

     提示只读

    这样也就保证了

    从机只能读不能写

    做到了读写分离

  • 相关阅读:
    base加密解密工具类
    根据银行卡号判断所属银行(部分资源网上抄录)
    input autocomplete属性设计输入框自动联想(php实现)
    XFire+Spring构建Web Service经验总结
    php学习手记(持续更新)
    ios上遇到的坑(持续更新)
    随笔
    HTML5微信长按图片不会弹出菜单的解决方法
    能在编辑器里面写出的字符
    css文本两端对齐,分散对齐
  • 原文地址:https://www.cnblogs.com/chx9832/p/12342819.html
Copyright © 2011-2022 走看看