• 精创网络
  • 精创网络
  • 首页
  • 产品优势
  • 产品价格
  • 产品功能
  • 关于我们
  • 在线客服
  • 登录
  • DDoS防御和CC防御
  • 精创网络云防护,专注于大流量DDoS防御和CC防御。可防止SQL注入,以及XSS等网站安全漏洞的利用。
  • 免费试用
  • 新闻中心
  • 关于我们
  • 资讯动态
  • 帮助文档
  • 白名单保护
  • 常见问题
  • 政策协议
  • 帮助文档
  • 在Ubuntu中使用Docker搭建MySQL集群环境
  • 来源:www.jcwlyf.com更新时间:2024-12-09
  • 在现代软件开发中,数据库集群已经成为一种提高应用可用性、性能和扩展性的重要架构。MySQL作为一种广泛使用的关系型数据库管理系统,在大规模应用中常常需要通过集群部署来确保高可用性与负载均衡。而Docker作为一款轻量级的容器化技术,能够帮助开发者快速构建、部署和管理应用。在本文中,我们将介绍如何在Ubuntu系统中使用Docker搭建MySQL集群环境,并详细阐述每一步的操作步骤。

    一、准备工作

    在开始搭建MySQL集群环境之前,首先确保系统中安装了以下软件:

    Ubuntu操作系统(本文假设使用的是Ubuntu 20.04及以上版本)

    Docker(安装Docker之前,确保系统是更新的)

    Docker Compose(用于管理多容器Docker应用)

    接下来,我们将逐一介绍如何安装和配置这些软件。

    二、安装Docker和Docker Compose

    首先,更新Ubuntu的包管理器并安装Docker。

    sudo apt update
    sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
    sudo apt update
    sudo apt install -y docker-ce

    安装完成后,使用以下命令确认Docker是否安装成功:

    sudo docker --version

    接下来,我们安装Docker Compose。执行以下命令:

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

    安装完成后,检查Docker Compose版本以确保安装成功:

    docker-compose --version

    三、配置MySQL Docker集群环境

    现在,我们已经安装好了Docker和Docker Compose,接下来我们将通过Docker Compose来搭建MySQL集群。为了确保集群的高可用性,我们将使用MySQL的主从复制架构。

    创建一个新的目录来存放Docker Compose配置文件:

    mkdir mysql-cluster
    cd mysql-cluster

    在该目录下,创建一个名为"docker-compose.yml"的文件,这个文件将包含MySQL集群的所有配置。

    四、编写Docker Compose配置文件

    打开"docker-compose.yml"文件,开始编写配置内容:

    version: '3'
    
    services:
      mysql-master:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword
          MYSQL_DATABASE: testdb
        volumes:
          - mysql-master-data:/var/lib/mysql
        networks:
          - mysql-cluster-network
        ports:
          - "3306:3306"
        restart: always
    
      mysql-slave:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: rootpassword
        volumes:
          - mysql-slave-data:/var/lib/mysql
        networks:
          - mysql-cluster-network
        ports:
          - "3307:3306"
        restart: always
        depends_on:
          - mysql-master
    
    volumes:
      mysql-master-data:
      mysql-slave-data:
    
    networks:
      mysql-cluster-network:
        driver: bridge

    解释一下配置文件中的各个部分:

    version: 定义了Docker Compose文件的版本。

    services: 定义了不同的服务,这里我们有两个服务:mysql-master和mysql-slave,分别代表主库和从库。

    image: 指定使用的Docker镜像,这里我们使用的是官方的MySQL 8.0镜像。

    environment: 配置MySQL容器的环境变量,这里设置了root密码和默认数据库。

    volumes: 将MySQL的数据目录挂载到宿主机的本地存储中,以便数据持久化。

    ports: 将容器的3306端口映射到宿主机的3306端口。

    depends_on: 确保从库在主库启动之后再启动。

    五、启动MySQL集群

    配置文件编写完成后,我们可以使用Docker Compose启动MySQL集群。运行以下命令:

    docker-compose up -d

    该命令会在后台启动MySQL主库和从库容器。运行完成后,可以通过以下命令查看容器的运行状态:

    docker ps

    如果一切顺利,你将看到MySQL主库和从库容器在运行中。

    六、配置MySQL主从复制

    MySQL容器启动后,我们需要配置主从复制。首先,进入MySQL主库容器:

    docker exec -it mysql-cluster_mysql-master_1 bash

    进入容器后,使用MySQL命令行工具登录到MySQL数据库:

    mysql -u root -p

    输入root密码后,执行以下命令启用二进制日志并设置唯一ID:

    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'rootpassword';
    FLUSH PRIVILEGES;

    然后创建一个复制账号:

    CREATE USER 'replica'@'%' IDENTIFIED BY 'replicapassword';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';
    FLUSH PRIVILEGES;

    接下来,我们需要查看当前主库的二进制日志文件及位置,执行以下命令:

    SHOW MASTER STATUS;

    记录下"File"和"Position"的值,接下来进入MySQL从库容器进行配置。

    使用以下命令进入MySQL从库容器:

    docker exec -it mysql-cluster_mysql-slave_1 bash

    进入容器后,使用MySQL命令行工具登录:

    mysql -u root -p

    在MySQL从库中,执行以下命令来配置主从复制:

    CHANGE MASTER TO
      MASTER_HOST='mysql-master',
      MASTER_USER='replica',
      MASTER_PASSWORD='replicapassword',
      MASTER_LOG_FILE='mysql-bin.000001',
      MASTER_LOG_POS= 154;
    START SLAVE;

    其中,"MASTER_LOG_FILE"和"MASTER_LOG_POS"要根据主库的"SHOW MASTER STATUS"命令的结果填写。

    完成后,执行以下命令检查复制状态:

    SHOW SLAVE STATUS\G

    如果"Slave_IO_Running"和"Slave_SQL_Running"都显示为"Yes",则说明主从复制配置成功。

    七、测试MySQL集群

    至此,MySQL集群已经成功搭建并配置完毕。接下来,我们可以通过在主库上执行数据库操作,验证从库是否同步数据。例如,在主库上创建一个数据库:

    mysql -u root -p
    CREATE DATABASE testdb2;

    然后在从库上查询,确认数据是否已同步:

    mysql -u root -p
    SHOW DATABASES;

    如果"testdb2"数据库出现在从库中,则说明主从复制成功。

    八、总结

    通过本文的介绍,我们展示了如何在Ubuntu系统中使用Docker搭建MySQL集群环境。首先,我们安装并配置了Docker和Docker Compose,然后通过编写Docker Compose配置文件来定义MySQL主从架构,最后配置并验证了MySQL的主从复制功能。通过Docker容器化技术,我们能够快速部署和管理MySQL集群,从而提高数据库系统的可扩展性和高可用性。

  • 关于我们
  • 关于我们
  • 服务条款
  • 隐私政策
  • 新闻中心
  • 资讯动态
  • 帮助文档
  • 网站地图
  • 服务指南
  • 购买流程
  • 白名单保护
  • 联系我们
  • QQ咨询:189292897
  • 电话咨询:16725561188
  • 服务时间:7*24小时
  • 电子邮箱:admin@jcwlyf.com
  • 微信咨询
  • Copyright © 2025 All Rights Reserved
  • 精创网络版权所有
  • 皖ICP备2022000252号
  • 皖公网安备34072202000275号