美文网首页
基于Docker的MySQL主从数据库搭建

基于Docker的MySQL主从数据库搭建

作者: Raphael_Zhang | 来源:发表于2017-08-17 00:40 被阅读0次

    master主数据库

    新增mysql配置文件mysql-master.cnf

    [mysqld]
    log-bin=mysql-bin
    server-id=161
    

    注:server-id一般为ip最后一段

    编写Dockerfile

    FROM mysql:latest
    MAINTAINER Raphael Zhang
    COPY mysql-master.cnf /etc/mysql/conf.d/
    EXPOSE 3306
    CMD ["mysqld"]
    

    docker.io的mysql镜像配置文件结构与nginx类似,通过以上脚本导入配置即可。

    构建docker镜像

    docker build -t mysql-master:latest .
    

    创建容器

    docker run --name mysql-master -p 3306:3306 -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD={your passwd} -d mysql-master:latest
    

    登陆到主数据库容器,查看master状态

    docker exec -it mysql-master bash
    
    image

    主数据库创建用户

    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'mysql_master';
    

    slave从数据库

    创建方式与master方式类似

    新增mysql配置文件mysql-slave.cnf

    [mysqld]
    log-bin=mysql-bin
    server-id=163
    

    注:server-id一般为ip最后一段

    编写Dockerfile

    FROM mysql:latest
    MAINTAINER Raphael Zhang
    COPY mysql-slave.cnf /etc/mysql/conf.d/
    EXPOSE 3306
    CMD ["mysqld"]
    

    镜像构建过程类似,不再赘述

    登陆从数据库,设置相关参数

    SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
    change master to master_host='172.31.196.161',master_user='backup',master_password='mysql_master',master_log_file='mysql-bin.000002',master_log_pos=439;
    

    master_host为docker的地址不能写127.0.0.1
    master_user是在主库创建的用户
    master_log_pos是主库show master status;查询出的Position

    启动服务

    start slave;
    

    查看服务状态

    show slave status;
    

    显示

    Waiting for master to send event
    

    即是成功了。

    相关文章

      网友评论

          本文标题:基于Docker的MySQL主从数据库搭建

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