美文网首页
docker部署mysql8.0(一主一从)

docker部署mysql8.0(一主一从)

作者: 我我我不是明 | 来源:发表于2022-10-27 15:00 被阅读0次
    前期准备好docker环境,因为最近自己在学shardingsphere-jdbc的分库分表+读写分离。
    搭建主从复制就是为了读写分离做准备

    第一步:安装Mysql 8.0

    我这里使用的是mysql8.0版本, 命令:docker pull mysql:8.0

    image.png

    在第二步之前可以随便启动Mysql,然后将my.cnf配置文件拉取到服务器位置

    docker cp [容器id]:/etc/mysql/my.cnf /home/mysql/master/
    

    第二步:启动mysql(2个 3306和3307端口)

    3306:master
    3307: slaver

    这里-v 映射位置提前自己创建好(我自己的/home/mysql)

    先启动master数据库
    docker run -d --name mysql8-master -p 3306:3306 -v /home/mysql/master/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=xiaowan mysql:8.0
    再启动slave数据库
    docker run -d --name mysql8-slave -p 3307:3306 -v /home/mysql/slaver/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=xiaowan mysql:8.0

    第三步: 配置下my.cnf文件(/home/mysql/下面的master和slaver)

    这里为什么要配置呢?因为后面启动slave的时候如果server-id不区分会报错

    master
    log-bin=mysql-bin
    server-id=1
    
    image.png
    slave
    log-bin=mysql-bin
    server-id=2
    
    image.png

    第四步:开始配置主从关系

    配置之前可以自己用电脑工具测试是否能远程链接服务器的数据库
    如果链接补上的话,可以进入容器的mysql里面按照下面配置一下(密码啥的自己改)
    ALTER USER 'root'@'%' IDENTIFIED BY 'xiaowan' PASSWORD EXPIRE NEVER;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xiaowan';
    FLUSH PRIVILEGES;
    
    接下来开始配置主从关系

    4.1、进入主容器(主数据库mysql8-master)
    docker exec -it mysql8-master /bin/bash
    进入容器之后进入mysql
    mysql -u root -p
    进入mysql以后,执行以下命令
    设置log
    set session binlog_format=STATEMENT;

    重点这里通过以下命令去查看File和Postition(配置从数据库要用到)

    show master status;
    我的File:mysql-bin.000003
    我的Position:156

    image.png

    4.2、配置从容器(从数据库mysql8-slave)

    注意点: 在配置之前通过下面可以先去查看数据库的验证方式
    use mysql;
    select user,host,plugin from user;
    
    image.png

    先进入到从数据库里面,然后将上面的File和Position放入以下配置并执行

    CHANGE MASTER TO 
    MASTER_HOST='xxxx',// 这里需要填写你自己的服务器地址
    MASTER_PORT=3306,
    MASTER_USER='root',
    MASTER_PASSWORD='xiaowan',
    master_log_file='mysql-bin.000003',
    master_log_pos=156,
    master_connect_retry=60;
    
    如果数据库的验证方式是上图的:caching_sha2_password,则需要指定GET_MASTER_PUBLIC_KEY=1;
    CHANGE MASTER TO 
    MASTER_HOST='xxxx',
    MASTER_PORT=3306,
    MASTER_USER='root',
    MASTER_PASSWORD='xiaowan',
    master_log_file='mysql-bin.000003',
    master_log_pos=156,
    master_connect_retry=60,
    GET_MASTER_PUBLIC_KEY=1;
    
    然后启动从数据库 START SLAVE;
    image.png
    最后通过show slave status\G;命令查看是否成功
    image.png

    如果显示都是yes就是成功了

    最后,自己测试验证

    手动创建了ds0数据库 slaver从库里面也有了。说明配置成功了
    image.png

    相关文章

      网友评论

          本文标题:docker部署mysql8.0(一主一从)

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