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连接

    新建一个主机的虚拟连接

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

     

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

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

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

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

    尝试修改之前的数据

     提示只读

    这样也就保证了

    从机只能读不能写

    做到了读写分离

  • 相关阅读:
    说一下 JSP 的 4 种作用域?
    CSS jquery 以动画方式显示投票结果图表
    Python动画【偶尔玩玩,挺好】
    关于Python【社区版】爬取网站图片
    Java 发送短信验证码【网建平台】
    Android发送接收短信
    如何在Java面试中介绍项目经验?
    Java面试之项目介绍
    IntelliJ IDEA 如何清理缓存和重启
    java实现支付宝接口-支付流程
  • 原文地址:https://www.cnblogs.com/chx9832/p/12342819.html
Copyright © 2011-2022 走看看