使用docker-compose搭建mysql主从

这篇具有很好参考价值的文章主要介绍了使用docker-compose搭建mysql主从。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、docker-compose和主从的简介

1、docker-compose

2、mysql主从

3、为什么要使用docke-compose?

二、部署mysql主从集群

1、mysql-master主库

2、mysql-slave从库

三、安装docker-compose

1、上传文件

2、添加可执行权限

3、创建并编辑docker-compose.yml文件

4、运行docker-composeysql.yml

四、配置mysql主从

1、进入主库容器配置远程连接

2、登录mysql主服务器

3、查看主节点关键参数

4、给用户授权并更新

5、进入从服务器

6、登录mysql从服务器

7、配置主从复制

8、开启主从复制

9、查看连接状态

五、测试主从服务

1、在主服务器创建一个数据库

2、在从服务器查看数据库

六、将crm项目的数据库通过命令导入主库

1、创建数据库crm

2、把sql脚本上传到主服务器的的数据目录

3、选择数据库

4、设置数据库编码(可选) 

5、导入数据(注意sql文件的路径)

好啦 文章内容到这里就结束了  你学到了吗  

觉得有用的记得关注点赞加收藏哦  我的Docker专栏还有其他关于Dokcer的技术点哦~


一、docker-compose和主从的简介

1、docker-compose

Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排 通过编写docker-compose文件可对多个服务同时进行启动/停止/更新(可定义依赖,按顺序启动服务)

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

2、mysql主从

以往创建的集群都是做同样的事情,比如说创建了三台服务器,那么客户端发送了一条增加请求,那么就会随机分配到三台服务器其中一台,

那么mysql集群不一样,首先呢我们不叫它mysql集群,我们叫mysql主从,那么就有主服务器和从服务器这样两种概念,主服务器负责写的操作,也就是增删改,从服务器负责读的操作,也就是查询,如果说客户端发送了一条增加的请求,那么就会把这条增加的请求给到主服务器,再由主服务器把数据同步到从服务器

3、为什么要使用docke-compose?

微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多 个实例,如果每个微服务都要手动启停, 那么效率之低,维护量之大可想而知.而使用 Docker Compose 可以轻松、高效的管理容器, 它是一个用于定义和运行多容器 Docker 的应用程序工具,可以用来一键启动所有服务器,一键关闭所有服务器,一键删除所有服务器,非常方便。

二、部署mysql主从集群

1、mysql-master主库

在宿主机中创建相关目录,用于挂载容器的相关数据

mkdir -p /data/mysql-master/{conf,data}

上传主数据库容器的配置文件my.cnf到/data/mysql-master/conf目录下

cd /data/mysql-master/conf

rz 上传

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

文章所需要的文件我会放到结尾

2、mysql-slave从库

 在宿主机中创建相关目录,用于挂载容器的相关数据

mkdir -p /data/mysql-slave/{conf,data}

 上传从数据库容器的配置文件my.cnf到/data/mysql-slave/conf目录下

cd /data/mysql-slave/conf

rz 上传

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

这两个文件里的内容只有id是不一样的

三、安装docker-compose

1、上传文件

安装包刚下载过来是docker-compose-Linux-x86_64

需要将docker-compose-Linux-x86_64重命名为 docker-compose
将 docker-compose 文件上传到虚拟机 的 /usr/local/bin/ 目录下,这个目录下的文件可以被全局使用到,

cd /usr/ocal/bin
docker-compose.yml mysql,docker,mysql,java,数据库,微服务

2、添加可执行权限

chmod +x /usr/local/bin/docker-compose

3、创建并编辑docker-compose.yml文件

可以使用默认的名称docker-compose.yml,因为要做MySQL的主从所以我把名字改成了docker-composemysql.yml

我们编辑yml文件可以在外部的工具先编辑在上传,比如ideadocker-compose.yml mysql,docker,mysql,java,数据库,微服务

 docker-composemysql.yml内容如下:

# 版本号
version: '3'
# 定义服务
services:
  # 服务名
  mysql-master:
    # 容器名称
    container_name: mysql-master
    # 镜像
    image: mysql/mysql-server:5.7
    # 重启
    restart: always
    # 提供伪终端
    tty: true
    # root具备管理员权限
    privileged: true
    # 环境变量
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    # 数据卷(目录映射)
    volumes:
      - /data/mysql-master/conf/my.cnf:/etc/my.cnf
      - /data/mysql-master/data:/var/lib/mysql
    # 网络
    networks:
      mynetwork:
        ipv4_address: 172.19.0.3
  # 服务名
  mysql-slave:
    # 容器名称
    container_name: mysql-slave
    # 镜像
    image: mysql/mysql-server:5.7
    # 重启
    restart: always
    # 提供伪终端
    tty: true
    # root具备管理员权限
    privileged: true
    # 环境变量
    environment:
      MYSQL_ROOT_PASSWORD: 123456
    # 数据卷(目录映射)
    volumes:
      - /data/mysql-slave/conf/my.cnf:/etc/my.cnf
      - /data/mysql-slave/data:/var/lib/mysql
    # 网络
    networks:
      mynetwork:
        ipv4_address: 172.19.0.4
# 定义所需要的网络
networks:
  mynetwork:
    driver: bridge
    ipam:
      config:
        - subnet: 172.19.0.0/16

创建文件夹mysql把编辑号的yml文件上传进去

mkdir mysql

4、运行docker-composeysql.yml

检查

docker-compose -f docker-composemysql.yml config -q
检查一下yml文件有没有错误的地方,没报错就是没有

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

运行

 docker-compose -f docker-composemysql.yml up -d

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

四、配置mysql主从

1、进入主库容器配置远程连接

 docker exec -it mysql-master /bin/sh

 docker-compose.yml mysql,docker,mysql,java,数据库,微服务

2、登录mysql主服务器

mysql -u root -p

输入mysql密码:123456  

3、查看主节点关键参数

记住 File 的值和 Position 的值(此值重启后会变化),等会配置 slave 服务器的时候要用

 show master status;

 docker-compose.yml mysql,docker,mysql,java,数据库,微服务

4、给用户授权并更新

    grant all privileges on *.* to root@'%' identified by '123456';
    flush privileges;

另外开一个窗口进入从服务器

5、进入从服务器

docker exec -it mysql-slave /bin/bash

6、登录mysql从服务器

mysql -u root -p

输入mysql密码:123456  

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

7、配置主从复制

CHANGE MASTER TO MASTER_HOST='172.19.0.3', MASTER_PORT=3306, MASTER_USER='root',
MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=154;

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

各参数说明:
master_host='172.19.0.3' // 这里填master主机ip,除了填写住宿主机IP,还可以填写bridge网络中的IP
master_log_file='mysql-bin.000005', // 这里填写 File 的值就是前面我们show master status;命令的执行结果
master_log_pos=154;// 这里填写 Position 的值就是前面我们show master status;命令的执行结果

8、开启主从复制

start slave;

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

9、查看连接状态

show slave status\G

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

注1:这里只要看到两个参数Slave_IO_Running和Slave_SQL_Running都为true,则表示复制是正常进行的,到这里我们的主从结构也就搭建完成了
注2:集群成功后,在mysql-master容器重启后虽然File的值和Position的值会变化,但在mysql-slave可以进行跟踪,所以不需要重新进行配置

五、测试主从服务

1、在主服务器创建一个数据库

create databse test;

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

在使用 show databases;查看一下所以库

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

2、在从服务器查看数据库

show databases;

 docker-compose.yml mysql,docker,mysql,java,数据库,微服务

ok,已经完成了数据的同步

六、将crm项目的数据库通过命令导入主库

在主服务器执行

1、创建数据库crm

create database crm;

2、把sql脚本上传到主服务器的的数据目录

 cd /data/mysql-master/data

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

文章所需要的文件我会放到结尾

3、选择数据库

use crm;

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

4、设置数据库编码(可选) 

set names utf8;

5、导入数据(注意sql文件的路径)

 source /var/lib/mysql/crm.sql;

已提前将crm.sql文件上传到了宿主机/data/mysql-master/data目录

docker-compose.yml mysql,docker,mysql,java,数据库,微服务

 使用show tables;查看刚刚导入的数据

        docker-compose.yml mysql,docker,mysql,java,数据库,微服务 

 在从数据库也查询一下,也是有数据的,完成了数据同步

        docker-compose.yml mysql,docker,mysql,java,数据库,微服务


好啦 文章内容到这里就结束了  你学到了吗  

觉得有用的记得关注点赞加收藏哦  我的Docker专栏还有其他关于Dokcer的技术点哦~

我敲BUG的Docker专栏:http://t.csdn.cn/ypXDz

  docker-compose.yml mysql,docker,mysql,java,数据库,微服务docker-compose.yml mysql,docker,mysql,java,数据库,微服务docker-compose.yml mysql,docker,mysql,java,数据库,微服务文章来源地址https://www.toymoban.com/news/detail-725597.html

到了这里,关于使用docker-compose搭建mysql主从的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker-compose.yml

    cat docker-compose.yml  version: \\\'2\\\' services: #  docker run -tid --name baota -p 80:80 -p 443:443 -p 8888:8888 -p 888:888  # --privileged=true --shm-size=1g  # --restart always  # -v ~/wwwroot:/www/wwwroot pch18/baota   coinbank_baota:     image: pch18/baota     container_name: coinbank_baota     restart: always     environment:       - pri

    2024年02月05日
    浏览(28)
  • 【docker】docker-compose.yml 语法详解

    前面讲过Docker Compose的概念,如何安装、以及常用指令等。 这里重点介绍Docker Compose的语法,如何写一个正确的docker-compose.yml文件。 我们知道 docker-compose 指令(比如 docker-compose up 等)是运行它的脚本文件docker-compose.yml,那么docker-compose.yml内部到底有哪些语法要求呢! 【doc

    2024年01月21日
    浏览(43)
  • docker-compose.yml配置文件参数

    1. image 在 services 标签下的第二级标签是 web,这个名字是用户自己自定义,它就是服务名称。 image 则是 指定服务的镜像名称或镜像 ID 。如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。 2. environment 环境变量 ,这个标签的作用是 设置镜像变量 ,它可以保存变量到镜像

    2024年02月10日
    浏览(26)
  • docker-compose.yml报错问题

    ERROR: The Compose file \\\'./docker-compose.yml\\\' is invalid because: Invalid top-level property \\\"True\\\". Valid top-level sections for this Compose file are: version, services, networks, volumes, secrets, configs, and extensions starting with \\\"x-\\\". You might be seeing this error because you\\\'re using the wrong Compose file version. Either specify a supported vers

    2024年02月14日
    浏览(32)
  • Docker Compose的常用命令与docker-compose.yml脚本属性配置

    注意:需要在docker-compose配置文件同目录下执行命令 不然提示如下: 下面命令可以输出 web服务 5000 端口所绑定的公共端口 会优雅地停止服务,即发送 SIGTERM 信号给容器,等待一段时间(默认为 10 秒)让容器执行清理操作,然后再发送 SIGKILL 信号强制关闭容器。这样可以确保

    2024年02月15日
    浏览(33)
  • 对象存储, 开源MinIO docker-compose.yml 文件

    https://min.io/docs/minio/linux/developers/python/API.html 经过验证,可以启动。 访问http://127.0.0.1:9001/ 登录一下(用户名和密码在 docker-compose 文件中已经配置) 配置 bucket 再配置 bucket 的accessKey, secretKey, 配置完后之后,可以下载这些配置文件为 json 文件到本地这个文件很重要, 在业

    2024年01月19日
    浏览(40)
  • 在docker编排文件docker-compose.yml中,指定容器的ip地址

    在docker-compose的yaml文件中,可以使用networks来指定容器的ip地址。具体来说,可以在services下面的某个service中添加networks字段,然后在该字段下面添加ipv4_address字段来指定该容器的ip地址。例如: 以上我们定义了一个名为back-tier的网络,然后在web服务中使用了该网络,并指定了

    2024年02月08日
    浏览(35)
  • ERROR: Version in “./docker-compose.yml“ is unsupported

    错误原因:------              docker-compose版本过低 解决方式: 直接改成3.3  或者你保存信息中提到的版本号 首先要查看docker-compose的路径 根据上一步的 whereis 找到了docker-compose的路径为: /usr/bin/docker-compose ,所以下面的脚本,路径也替换为这个就可以了。 下载 授权 版本号

    2024年02月16日
    浏览(30)
  • 使用docker-compose搭建gitlab

    使用Docker搭建GitLab带来的好处。它简化了部署过程,将安装和配置整合为一个容器,并通过简单的命令即可启动和运行GitLab实例。Docker的隔离和容器化特性确保了GitLab与其依赖的软件环境的隔离,避免了冲突问题。此外,Docker的可移植性使得GitLab可以在不同平台和环境中运行

    2024年01月18日
    浏览(36)
  • 使用Docker Compose搭建Redis主从复制

    在Docker中搭建 Redis主从架构 非常方便,下面是一个示例,演示一下如何使用 Docker Compose搭建一个 Redis主从复制 环境。首先,确保我们本地环境已经安装了Docker和 Docker Compose 。 我这里使用 OrbStack 替代了 Docker desktop 。 1. 创建一个名为 redis 的文件夹,并在其中创建一个 docke

    2024年02月20日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包