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:latestcontainer_name: mysql-dbenvironment: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

恢复数据库

从备份文件恢复数据库:

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

更新镜像

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

  1. 停止并移除现有容器:
docker-compose down
  1. 更新镜像:
docker pull mysql:latest
  1. 使用更新后的镜像重新启动服务:
docker-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:latestcontainer_name: redis-serverports:- "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

访问 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 环境的一致性和稳定性。


分享一个有趣的 学习链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/16438.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OceanBase诊断调优】—— 排查 IO 问题的方法

本文主要介绍 OceanBase 数据库 V4.x 版本中排查 IO 问题的方法以及 IO 相关的日志和视图。 IO 相关问题 -4013 内存爆、IoControl 模块内存泄漏 目前 IO 内存爆可能的原因如下&#xff0c;及相应的排查方法。 其他模块使用 IO 内存后未释放导致泄漏。 日志分析。 通过关键词…

【wordpress】网站提示Error establishing a database connection错误代码

Error establishing a database connection错误代码处理方法&#xff1a; 检查数据库连接情况检查数据库账号密码是否正确检查数据库是否开启 总之较大可能是数据库出现了问题

移动云:连接未来的智慧之旅

随着数字化转型的加速&#xff0c;云服务在各行各业中的应用越来越广泛。移动云不仅提供了灵活的计算和存储资源&#xff0c;还通过创新的技术手段&#xff0c;为企业和开发者解决了许多实际问题。在这个变革的大背景下&#xff0c;移动云服务作为中国移动倾力打造的云业务品牌…

​​​【收录 Hello 算法】10.4 哈希优化策略

目录 10.4 哈希优化策略 10.4.1 线性查找&#xff1a;以时间换空间 10.4.2 哈希查找&#xff1a;以空间换时间 10.4 哈希优化策略 在算法题中&#xff0c;我们常通过将线性查找替换为哈希查找来降低算法的时间复杂度。我们借助一个算法题来加深理解。 Question 给…

vscode 插件-01基础

翻译 Chinese (Simplified) (简体中文) Language Pack for Visual Studio Code 适用于 VS Code 的中文&#xff08;简体&#xff09;语言包 远程连接 Remote Development Remote Development是vscode的远程编程与调试的插件&#xff0c;使用这个插件可以在很多情况下代替vim…

centos中安装docker(粘贴执行)

如标题所示&#xff0c;以下命令直接粘贴执行就可以。 sudo yum update -ysudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install -y docker-ce do…

Linux VIM指令

三种模式 命令模式&#xff1a;控制屏幕光标的移动&#xff0c;字符、字或行的删除等输入对文件的一些指令 插入模式&#xff1a;对文件内容进行文字输入 底行摸索&#xff1a;文件保存或退出&#xff0c;也可以进行文件替换&#xff0c;找字符串&#xff0c;列出行号等操作…

icloud 如何高效利用

iCloud 是苹果公司提供的一项云存储服务&#xff0c;旨在帮助用户在各个苹果设备之间同步和备份数据。高效利用 iCloud 可以显著提升你的工作效率和数据管理能力。以下是一些高效利用 iCloud 的方法和技巧。 ### 1. 启用 iCloud 同步 #### iPhone/iPad 上的设置 1. 打开“设置…

Python语言例题集(014)

#!/usr/bin/python3 #建立双向链表。 class Node(): def init(self,dataNone): self.datadata self.nextNone self.previousNone class DoubleLinkedList(): def init(self): self.headNone self.tailNone def addDoubleList(self,newNode):if isinstance(newNode,Node):if…

error LNK2038: 检测到“boost_log_abi”的不匹配项

最近项目上遇到了这个问题&#xff0c;看提示和查阅资料知道是boost版本不匹配的问题&#xff0c;但是项目原因换boost版本不太现实&#xff0c;一时竟然不知道怎么解决。 后来在同事的提示下&#xff0c;对于boost_log相关的代码&#xff0c;引用其头文件时&#xff0c;放到最…

云计算-关系型数据库(Relational Database)

关系数据库服务&#xff08;RDS&#xff09;&#xff08;Relational Database Service (RDS)&#xff09; Amazon RDS 可用于在云中设置和运行关系数据库。它支持多种数据库实例类型以及多个数据库引擎&#xff0c;如 Amazon Aurora、PostgreSQL、MySQL、MariaDB、Oracle 数据库…

若依实现路由跳转功能 动态路由获取参数

若依实现路由跳转功能 动态路由 若依前端中的动态路由参考代码 动态路由设置&#xff1a;router文件 {path: /system/dict-data,component: Layout,hidden: true,permissions: [system:dict:list],children: [{path: index/:dictId(\\d),component: () > import(/views/sy…

Unity环绕物体的摄像机,添加了遮挡的适应

第三人人称摄像机 支持的功能 设定目标后使用鼠标可以环绕目标点旋转&#xff0c;且会进行遮挡的适配&#xff0c;当有遮挡的时候会移动差值移动到没有遮挡的位置。 使用方式 将vThirdPersonCamera 挂在与摄像机上然后为target赋值。 如果有需要检测遮挡的层级可以修改&…

早餐店燃气安全岂能马虎?探头选择与年检必须到位

在现代都市生活中&#xff0c;早餐店作为人们日常生活中的重要一环&#xff0c;其安全性问题日益受到人们的关注。其中&#xff0c;燃气泄漏引发的火灾和爆炸事故尤为令人担忧。 因此&#xff0c;点式可燃气体报警器在早餐店中的应用显得尤为重要。 在这篇文章中&#xff0c;…

Unity图片(高度图)转法线贴图

项目中有需求动态生成法线贴图&#xff0c;研究了下从高度图生成法线贴图的方法&#xff0c;代码放在文末&#xff0c;可依据具体情况进行修改&#xff0c;理论上也可以通过其他数据源转换到法线贴图。 我的例子是取的灰度值作为了高度值。 参考连接 private void HeightMapToN…

nodejs 解决高并发

在Node.js中解决高并发的问题&#xff0c;可以采取以下几种策略&#xff1a; 1. 异步非阻塞I/O&#xff1a; Node.js的异步非阻塞I/O模型让其在处理高并发请求时具有优势。在接收到请求后&#xff0c;Node.js可以立即接受其他请求&#xff0c;而不需要等待当前请求的I/O操作完…

AIGC产业链上下游解析及常见名词

文章目录 AIGC上游产业链 - 基础层AIGC中游产业链 - 大模型层与工具层AIGC下游产业链 - 应用层AIGC产业链常见的名词表 在上一章节为大家介绍了 “大模型的不足与解决方案” &#xff0c;这一小节呢为大家针对AIGC的相关产业进行一个拆解&#xff0c;以及相关的一些专业名词做出…

【编程题-错题集】奇数位丢弃(模拟 - 规律)

牛客对应题目链接&#xff1a;奇数位丢弃_牛客题霸_牛客网 (nowcoder.com) 一、分析题目 通过⼀两个例子的模拟&#xff0c;可以发现&#xff1a;每次起始删除的下标都是 2 的次方。根据这个规律&#xff0c;找到最后⼀次删除的起始位置的下标即可。 二、代码 #include <io…

什么是渗透测试

什么是渗透测试渗透测试就是模拟真实黑客的攻击手法对目标网站或主机进行全面的安全评估&#xff0c;与黑客攻击不一样的是&#xff0c;渗透测试的目的是尽可能多地发现安全漏洞&#xff0c;而真实黑客攻击只要发现一处入侵点即可以进入目标系统。 一名优秀的渗透测试工程师也…

感知觉训练:解锁独立生活的钥匙

在日新月异的科技时代&#xff0c;一款名为“蝙蝠避障”的辅助软件以其独到之处&#xff0c;为盲人朋友的日常生活平添了诸多便利&#xff0c;不仅实现了实时避障&#xff0c;还通过拍照识别功能扩展了信息获取的边界。然而&#xff0c;科技辅助之外&#xff0c;提升盲人朋友的…