docker-compose 自动管理 数据库

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: docker-compose 自动管理 数据库

前言

在现代应用开发中,数据库是核心组件之一。容器化技术可以帮助我们简化部署流程,确保环境一致性,并提高开发和生产的效率。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Docker Compose,我们可以轻松地管理数据库容器的生命周期,实现自动化部署和维护。

MySQL 镜像

准备镜像

在开始之前,请确保您已经安装了 Docker 和 Docker Compose,并且拉取了所需的数据库镜像。可以通过以下命令拉取官方 MySQL 镜像:

docker pull mysql:latest

编写 docker-compose.yml 文件

创建一个 docker-compose.yml 文件,用于定义 MySQL 服务的配置。以下是一个基本的示例:

version: '3.8'  # 使用最新版本的 Docker Compose 文件格式

services:
  mysql:
    image: mysql:latest
    container_name: mysql-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword  # 设置 root 用户的密码
      MYSQL_DATABASE: mydatabase        # 创建并初始化一个数据库
    ports:
      - "3306:3306"  # 映射容器的 3306 端口到宿主机的 3306 端口
    volumes:
      - mysql-data:/var/lib/mysql  # 持久化 MySQL 数据
    restart: unless-stopped  # 指定重启策略

volumes:
  mysql-data:  # 定义一个名为 mysql-data 的持久化存储卷
    driver: local

启动管理

使用以下命令在后台启动 MySQL 服务:

docker-compose up -d

维护和管理

检查状态

检查服务状态:

docker-compose ps

停止服务

停止服务:

docker-compose down

问数据库

要进入 MySQL 容器并使用命令行工具,可以使用以下命令:

docker-compose exec mysql mysql -uroot -prootpassword


备份数据库

可以使用 docker exec 命令结合 mysqldump 工具进行备份:

docker exec mysql-db mysqldump -uroot -prootpassword mydatabase > backup.sql
• 1

恢复数据库

从备份文件恢复数据库:

docker exec -i mysql-db mysql -uroot -prootpassword mydatabase < backup.sql

更新镜像

当需要更新 MySQL 镜像时,可以使用以下命令:

  1. 停止并移除现有容器:
docker-compose down
  1. 更新镜像:
docker pull mysql:latest
• 1
  1. 使用更新后的镜像重新启动服务:
ocker-compose up -d

Redis 容器化管理

介绍

Redis 是一个开源的内存数据结构存储系统,用作数据库、缓存和消息代理。容器化 Redis 可以简化部署和管理过程,提高开发和生产的效率。Docker Compose 可以帮助我们轻松地定义和管理 Redis 容器。

准备镜像

在开始之前,请确保您已经安装了 Docker 和 Docker Compose。拉取 Redis 官方镜像:

docker pull redis:latest

编写 docker-compose.yml 文件

创建一个 docker-compose.yml 文件,定义 Redis 服务的配置:

version: '3.8'

services:
  redis:
    image: redis:latest
    container_name: redis-server
    ports:
      - "6379:6379"  # 映射容器的 6379 端口到宿主机的 6379 端口
    volumes:
      - redis-data:/data  # 持久化 Redis 数据
    restart: unless-stopped  # 指定重启策略

volumes:
  redis-data:  # 定义一个名为 redis-data 的持久化存储卷
    driver: local

启动管理

使用以下命令在后台启动 Redis 服务:

docker-compose up -d

维护和管理

检查状态

检查服务状态:

docker-compose ps

停止服务

停止服务:

docker-compose down
• 1

访问 Redis

要使用 Redis 命令行工具连接到 Redis 服务器,可以使用以下命令:

docker-compose exec redis redis-cli

备份 Redis 数据

Redis 没有像 MySQL 那样的 dump 命令,但可以使用 redis-cli 导出数据到文件:

docker exec redis-server redis-cli -p 6379 --rdb < dump.rdb

恢复 Redis 数据

使用 redis-cli 将数据从文件导入到 Redis:

docker exec -i redis-server redis-cli -p 6379 --rdb > /data/dump.rdb
docker exec redis-server redis-cli -p 6379 CONFIG SET appendonly yes
docker exec redis-server redis-cli -p 6379 BGSAVE

更新镜像

更新 Redis 镜像并重新启动服务:

  1. 停止并移除现有容器:
docker-compose down
  1. 更新镜像:
docker pull redis:latest
  1. 使用更新后的镜像重新启动服务:
docker-compose up -d

结语

通过 Docker Compose,您可以轻松地管理数据库容器,实现自动化部署、维护和备份。。这不仅提高了运维效率,还确保了数据库环境的一致性和稳定性。始终记得定期备份您的数据,并根据需要调整 docker-compose.yml 文件中的配置。

而通过 Docker Compose 管理 Redis,您可以轻松地部署、维护和备份 Redis 数据。确保定期备份您的数据,并根据需要调整 docker-compose.yml 文件中的配置。这将帮助您保持 Redis 环境的一致性和稳定性。


分享一个有趣的 学习链接

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
17天前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
56 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
【10月更文挑战第1天】使用Docker部署的MySQL数据库,数据表里的中文读取之后变成问号,如何处理?
59 3
|
1月前
|
关系型数据库 MySQL 数据库
使用Docker部署的MySQL数据库如何设置忽略表名大小写?
【10月更文挑战第1天】使用Docker部署的MySQL数据库如何设置忽略表名大小写?
133 1
|
1月前
|
关系型数据库 MySQL 数据库
如何使用Docker部署MySQL数据库?
【10月更文挑战第1天】如何使用Docker部署MySQL数据库?
162 0
|
1月前
|
关系型数据库 MySQL 数据库
docker mysql表名和数据库名不区分大小写
docker mysql表名和数据库名不区分大小写
18 0
|
3月前
|
Linux 数据库 数据安全/隐私保护
|
2月前
|
关系型数据库 数据库 网络虚拟化
Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例
由于时间和空间限制,我将在后续的回答中分别涉及到“Python中采用lasso、SCAD、LARS技术分析棒球运动员薪资的案例集锦”以及“Docker环境下重启PostgreSQL数据库服务的全面指南与代码示例”。如果你有任何一个问题的优先顺序或需要立即回答的,请告知。
69 0
|
3月前
|
关系型数据库 MySQL 数据库
成功解决:Navicat 连接虚拟机Docker中的mysql数据库失败(仅限某些特殊情况)
这篇文章介绍了在Ubuntu环境中使用Docker部署Flask项目的方法,包括创建测试项目、设置数据库、构建Flask和Nginx镜像以及容器编排,其中使用了MySQL 5.7作为数据库,Flask 2.0.2作为Web框架,Gunicorn 20.1.0作为应用服务器,Nginx 1.21.4作为反向代理,并解决了Navicat连接Docker中的MySQL数据库失败的问题。
|
3月前
|
消息中间件 关系型数据库 数据库
[docker]安装常见数据库
[docker]安装常见数据库
|
4月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
190 1