• docker 搭建Mycat环境实现Mysql数据库的读写分离


    搭建Mycat环境

    1.2 搭建Mycat环境

    1.2.1 获取资源
    #先获取mycat包(其他版本下载地址:http://dl.mycat.org.cn/1.6.7.1/

    mkdir -p /data/mycat
    cd /data/mycat
    wget http://dl.mycat.org.cn/1.6.7.1/Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

    1.2.2 编写Dockerfile

    FROM java:8
    USER root
    COPY Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz /
    RUN tar -zxf /Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
    ENV MYCAT_HOME=/mycat
    ENV PATH=$PATH:${MYCAT_HOME}/bin
    WORKDIR $MYCAT_HOME/bin
    RUN chmod u+x ./mycat
    EXPOSE 8066 9066
    CMD ["./mycat", "console"]

    1.2.3 获取配置文件

    tar -zxvf Mycat-server-1.6.5-release-20180122220033-linux.tar.gz 
    mv mycat/conf/ conf

     目录结构如下:

    1.2.4 修改mycat配置文件
    真正需要修改的只有三个文件,具体官方文档写的很详细;
    (1):schema.xml ,(2):server.xml,(3):rule.xml;
    现在搭建的是Mysql读写分离,修改schema.xml、server.xm即可。rule.xml用于分表分库配置文件。

    schema.xml文件代码:

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
       <schema name="mycat" checkSQLschema="false" sqlMaxLimit="100">
            <table name="user" primaryKey="ID" dataNode="dn1,dn2"  />
        </schema>
    
        <dataNode name="dn1" dataHost="localhost1" database="demo2" />
        <dataNode name="dn2" dataHost="localhost1" database="demo3" />
    
        <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <writeHost host="hostM1" url="172.18.0.10:3306" user="root" password="root">
                <readHost host="hostM1" url="172.18.0.11:3306" user="root" password="root"> 
            </readHost>
                </writeHost>
        </dataHost>
    
    </mycat:schema>

    server.xm文件代码:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- - - Licensed under the Apache License, Version 2.0 (the "License"); 
        - you may not use this file except in compliance with the License. - You 
        may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 
        - - Unless required by applicable law or agreed to in writing, software - 
        distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT 
        WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the 
        License for the specific language governing permissions and - limitations 
        under the License. -->
    <!DOCTYPE mycat:server SYSTEM "server.dtd">
    <mycat:server xmlns:mycat="http://io.mycat/">
       
    
       <!-- 读写都可用的用户 -->
        <user name="root" defaultAccount="true">
            <property name="password">123456</property>
            <property name="schemas">mycat</property>
    
            <!-- 表级 DML 权限设置 -->
            <!--        
            <privileges check="false">
                <schema name="TESTDB" dml="0110" >
                    <table name="tb01" dml="0000"></table>
                    <table name="tb02" dml="1111"></table>
                </schema>
            </privileges>       
             -->
        </user>
    
        <!-- 只读用户 -->
        <user name="user">
            <property name="password">user</property>
            <property name="schemas">mycat</property>
            <property name="readOnly">true</property>
        </user>
    
    </mycat:server>

    1.2.5 执行Dockerfile生成镜像

    cd /data/mycat/
    docker build -t mycat:1.6 . 

    1.2.6 编写mycat启动脚本($PWD表示当前目录)

    docker run -d  -p:8066:8066 --name mysql-mycat --net docker-network --ip 172.18.0.20 -p 9066:9066 -v $PWD/logs:/mycat/logs -v $PWD/conf:/mycat/conf mycat:1.6

    效果如下:

     有时候 docker run 启动容器失败,需要删除以下自动生成的logs文件夹,再重新docker run

     或使用 docker logs mysql-mycat 查看报错原因

    docker logs mysql-mycat

     1.2.7 验证效果

  • 相关阅读:
    vim常用命令
    Leetcode686.Repeated String Match重复叠加字符串匹配
    Leetcode686.Repeated String Match重复叠加字符串匹配
    (转)Sql server中 如何用sql语句创建视图
    (转)Sql server中 如何用sql语句创建视图
    SQL Sever实验三 视图与数据更新
    SQL Sever实验三 视图与数据更新
    Leetcode653.Two Sum IV
    Leetcode653.Two Sum IV
    Leetcode661.Image Smoother图片平滑器
  • 原文地址:https://www.cnblogs.com/-mrl/p/13269458.html
Copyright © 2020-2023  润新知