美文网首页
基于docker搭建mycat读写分离架构

基于docker搭建mycat读写分离架构

作者: hjqjk | 来源:发表于2017-06-19 11:59 被阅读233次

    前言

    最近在学docker,应业务需求,要研究mycat的使用,为了方便学习测试,就想着用docker的镜像和容器来构造所有的组件。

    mysql主从架构搭建

    创建总目录:

    mkidr mycat-ms
    cd mycat-ms
    

    在宿主机创建本地目录,印射为容器的数据目录,方便以后查看数据内容。

    mkdir mysql-ms/data/{master,slave} -p
    

    在宿主机创建配置文件,印射为容器的配置文件。可通过本地修改配置文件,达到修改容器配置文件的效果。

    master配置文件: mysql-ms/etc/master.cnf

    [mysqld]
    # 开启logbin
    log-bin = mysql-bin
    binlog_format = mixed
    
    # 设置唯一服务ID,要跟slave不同
    server-id=1
    
    datadir = /var/lib/mysql
    

    slave 配置文件: mysql-ms/etc/slave.cnf

    [mysqld]
    # 开启log-bin
    log-bin = mysql-bin
    binlog_format = mixed
    
    # 开启relay-log
    relay-log = mysql-relay
    
    # 设置唯一服务ID,要跟master不同
    server-id = 3
    
    datadir = /var/lib/mysql
    

    创建网络mscat,用于各容器之间通信

    docker network create mscat
    

    分别启动master、slave容器(用的是docker官方提供的 mysql5.6.36 的镜像)

    docker run --name mysql-master -v $PWD/mysql-ms/etc/master.cnf:/etc/mysql/my.cnf -v $PWD/mysql-ms/data/master:/var/lib/mysql --net=mscat -e MYSQL_ROOT_PASSWORD='yueioe123' -d mysql:5.6.36
    docker run --name mysql-slave -v $PWD/mysql-ms/etc/slave.cnf:/etc/mysql/my.cnf -v $PWD/mysql-ms/data/slave:/var/lib/mysql --net=mscat -e MYSQL_ROOT_PASSWORD='yueioe123' -d mysql:5.6.36
    

    master上,创建主从复制账号:

    docker exec -ti mysql-master mysql -uroot -p'yueioe123' -e "CREATE USER 'repl'@'%' IDENTIFIED BY 'repl123';GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';"
    

    在master上,获取复制开始的二进制文件和位置(File和Position)

    # docker exec -ti mysql-master mysql -uroot -p'yueioe123' -e "show master status\G" 
    *************************** 1. row ***************************
                 File: mysql-bin.000005
             Position: 441
         Binlog_Do_DB:
     Binlog_Ignore_DB:
    Executed_Gtid_Set:
    

    在slave上,连接master:

    # 连接master
    docker exec -it mysql-slave mysql -uroot -p'' -e "CHANGE MASTER TO MASTER_HOST='mysql-master',MASTER_USER='repl',MASTER_PASSWORD='repl123',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=441;"
    # 启动 slave 线程
    docker exec -it mysql-slave mysql -uroot -pyueioe123 -e "start slave;"
    

    查看主从是否成功:

    # docker exec -it mysql-slave mysql -uroot -pyueioe123 -e "show slave status\G"
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    # docker exec -ti mysql-master mysql -uroot -pyueioe123 -e "create database test;"
    # docker exec -ti mysql-slave mysql -uroot -pyueioe123 -e "show databases;"
    
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | test               |
    +--------------------+
    

    mycat读写分离

    mycat是用java语言编写的,需要jdk的支持,这次将安装mycat1.6,jdk版本需要1.7以上

    相关文章

      网友评论

          本文标题:基于docker搭建mycat读写分离架构

          本文链接:https://www.haomeiwen.com/subject/ooegqxtx.html