docker部署主从数据库

前言:在毕设项目所运用到数据库读写分离,主数据库负责写,从数据库负责读,由于云服务器配置问题,就引入一主一从数据库。

一、拉取mysql

docker pull mysql
docker images

在这里插入图片描述

二、运行主从数据库

#主数据库 master
docker run -d -p 3301:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 mysql
#从数据库 slave
docker run -d -p 3302:3306 --name mysql-slave -e MYSQL_ROOT_PASSWORD=123456 mysql
#查看运行情况
docker ps

在这里插入图片描述

IDEA测试连接

在这里插入图片描述

在这里插入图片描述

三、配置主从数据库

  1. master数据库

    #进入master
    docker exec -it mysql-master /bin/bash
    #切换到/etc/mysql目录下
    cd /etc/mysql
    #先安装vim
    apt-get update
    apt-get install vim
    #使用vim命令修改my.cnf
    vim my.cnf
    

    在这里插入图片描述

    编辑my.cnf

    [mysqld]
    #设置server-id,注意要唯一
    server-id=1
    #开启二进制日志功能
    log_bin=mysql-bin
    #二级制日志格式,有三种 row,statement,mixed
    binlog-format=ROW
    #控制binlog日志文件保留时间,超过保留时间的binlog日志会被自动删除
    expire_logs_days=7
    #同步的数据库,不配的话就是同步所有库
    binlog-do-db=test
    #不同步的数据库
    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    binlog-ignore-db=performation_schema
    binlog-ignore-db=sys
    
    #退出容器
    exit
    #重启容器
    docker restart mysql-master
    
  2. slave

    #进入slave
    docker exec -it mysql-slave /bin/bash
    #切换到/etc/mysql目录下
    cd /etc/mysql
    #先安装vim
    apt-get update
    apt-get install vim
    #使用vim命令修改my.cnf
    vim my.cnf
    

    编辑my.cnf

    [mysqld]
    #设置server-id,注意要唯一
    server-id=2
    #relay_log配置中继日志
    relay_log=mysql-relay-bin
    #设置为只读
    read_only=1
    
    #退出容器
    exit
    #重启容器
    docker restart mysql-slave
    

四、开启master-slave主从复制

  1. master

    docker exec -it mysql-master /bin/bash
    mysql -uroot -p123456
    
    #创建用户
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    #给用户授权
    GRANT ALL PRIVILEGES ON *.* TO 'slave'@'%' WITH GRANT OPTION;
    #修改加密方式
    ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    #刷新配置
    FLUSH PRIVILEGES;
    #查看Master状态
    show master status;
    

    在这里插入图片描述

    #退出mysql
    exit
    #退出容器
    exit
    #查看本容器的ip
    docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master
    172.17.0.4
    
  2. slave

    docker exec -it mysql-slave /bin/bash
    mysql -uroot -p123456
    
    change master to 
    #主数据库ip
    master_host='172.17.0.4',
    #主数据库用户名
    master_user='slave', 
    #主数据库密码
    master_password='123456', 
    #主数据库端口号
    master_port=3306,
    #日志文件开始复制数据
    master_log_file='mysql-bin.000004',
    #从哪个 Position 开始读,即上文中提到的 Position 字段的值
    master_log_pos=708, 
    #如果连接失败,重试的时间间隔
    master_connect_retry=30;
    
    #启动slave
    start slave;
    #查看slave
    show slave status \G;
    

    在这里插入图片描述

  3. 如果失败的话,可以从容器IP、端口,用户和密码,Position值

五、测试主从数据库

  1. master

    在这里插入图片描述

  2. slave

    在这里插入图片描述

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叁Mar.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值