美文网首页
docker mysql主从配置

docker mysql主从配置

作者: 额嗬 | 来源:发表于2018-10-09 12:02 被阅读0次
    平手友梨奈

    环境准备

    云服务器或虚拟机2台或者启动2个容器
    docker安装并启动,获取mysql镜像
    可查考![http://www.runoob.com/docker]

    文件挂载

    挂载配置文件,数据文件,日志文件
    位置自定

    #创建文件夹
    mkdir /usr/local/docker/mysql/conf
    mkdir /usr/local/docker/mysql/data
    mkdir /usr/local/docker/mysql/logs
    

    主数据库my.cnf配置文件

    # 字符集 
    [mysql]
    default-character-set=utf8
    
    [mysql_safe]
    default-character-set = utf8
    
    [client]
    default-character-set=utf8
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    
    # 字符集
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    
    symbolic-links=0
    
    #是否对sql语句大小写敏感,1表示不敏感
    lower_case_table_names = 1
    
    # 开启二进制日志
    log-bin=mysql-bin
    # 设置master,此值不能和从数据库的一样
    server-id = 1
    # 表示哪些库不同步,每个不同步的库写一行
    binlog-ignore-db=mysql
    
    # Custom config should go here
    !includedir /etc/mysql/conf.d/
    
    

    从数据库my.cnf配置文件

    
    
    # 字符集 
    [mysql]
    default-character-set=utf8
    
    [mysql_safe]
    default-character-set = utf8
    
    [client]
    default-character-set=utf8
    
    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    
    # 字符集
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    
    #是否对sql语句大小写敏感,1表示不敏感
    lower_case_table_names = 1
    
    symbolic-links=0
    
    # 设置master,此值不能和从数据库的一样
    server-id = 2
    # 表示哪些库不同步,每个不同步的库写一行
    binlog-ignore-db=mysql
    
    # Custom config should go here
    !includedir /etc/mysql/conf.d/
    
    

    设置时区(可选)

    echo 'Asia/Shanghai' > /etc/timezone

    初始启动容器

    端口自定 命名自定

    docker run -p 3306:3306 --privileged=true --name master-mysql -v /usr/local/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/docker/mysql/logs:/logs -v /usr/local/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    

    -p 3307:3306:将容器的 3306 端口映射到主机的 3307 端口。

    挂载时区
    -e TZ=Asia/Shanghai 或 -v /etc/timezone:/etc/timezone

    --privileged=true:(可移除)container容器内的root拥有真正的root权限

    --name meteor-mysql :容器命名

    -v $PWD/usr/local/docker/mysql/conf/:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

    -v $PWD/usr/docker/local/mysql/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

    -v $PWD/usr/docker/local/mysql/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

    -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

    主数据库创建slave账户

    登录主数据库mysql

    #创建账户
    create user 'slave'@'%' IDENTIFIED BY '123456'; 
    #授予复制权限
    grant replication slave on *.* to 'slave'@'%';
    #刷新权限
    flush privileges;
    

    查询主数据库状态

     show master status;
    

    记录File,Position值


    开启从数据库同步

    执行同步SQL语句

    CHANGE MASTER TO 
    Master_Host='IP地址',
    Master_User='slave',
    Master_Password='123456',
    Master_Port=3307,
    Master_Log_File='mysql-bin.000004',
    Master_Log_POS=155;
    

    启动同步进程

     start slave;
    

    主从同步检查

    show slave status;
    

    清除同步

    reset  slave all;
    

    如果Slave_IO_Running 与 Slave_SQL_Running 的值都必须为YES,表明成功了;如果不是,请自行google


    image.png

    测试

    在Master服务器创建test数据库上创建一个表t_class;是否在Slave从服务器自动创建test数据库中自动创建t_class;

    相关文章

      网友评论

          本文标题:docker mysql主从配置

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