当前位置: 首页 > news >正文

定制开发 商城网站 最快seo在线优化平台

定制开发 商城网站 最快,seo在线优化平台,制作公司网站要多少费用呢,律师网站建设模板MySQLRedis实战教程:从Docker安装部署到自动化备份与数据恢复 一、前言 在企业应用中,对MySQL和Redis运维的要求越来越高: 不能仅是启动就算部署运行稳定、隔离、访问控制、备份恢复、安全可靠,才是 企业级的基本功能 本文将手…

MySQL+Redis实战教程:从Docker安装部署到自动化备份与数据恢复


一、前言

在企业应用中,对MySQL和Redis运维的要求越来越高:

  • 不能仅是启动就算部署
  • 运行稳定、隔离、访问控制、备份恢复、安全可靠,才是 企业级的基本功能

本文将手把手教你打造一套 可备份、可恢复、可产用的MySQL+Redis基础设备 ,基于Docker实现全路径开发。

在这里插入图片描述


二、项目目录结构

我们完整的Docker部署目录结构如下:

/opt/docker/
├── mysql_redis_deploy/           # 实际部署代码目录
│   ├── .env                      # 环境变量
│   ├── docker-compose.yml        # docker组合启动文件
│   ├── service_*.sh              # 系列启动、停止、重启、状态脚本
│   ├── backup_mysql.sh           # MySQL备份脚本 (多数据库、自动清理)
│   ├── redis_backup.sh           # Redis备份脚本 (选用)
│   ├── health_check.sh           # 异常自动重启
│   ├── readme.md                 # 项目内部文档
├── backups/                      # 数据备份文件夹
│   ├── mysql/                    # MySQL备份 .sql.gz
│   ├── redis/                    # Redis备份
├── config/
│   ├── mysql/                    # MySQL配置文件 + data挂载目录
│   ├── redis/                    # Redis配置文件 + data
├── iso/
│   ├── mysql_8.0.tar              # 离线Docker镜像
│   ├── redis_7.2-alpine.tar      # 离线Docker镜像

三、关键文件详解

1. .env

# MySQL配置
MYSQL_ROOT_PASSWORD=StrongRootPwd123!
MYSQL_DATABASE=yufudb
MYSQL_USER=mysqluser
MYSQL_PASSWORD=StrongUserPwd123!# Redis配置
REDIS_PASSWORD=StrongRedisPwd123!

2. docker-compose.yml

采用环境变量模式配置,且配置了healthcheck:

services:mysql:image: mysql:8.0container_name: mysql_containerenvironment:MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}MYSQL_DATABASE: ${MYSQL_DATABASE}MYSQL_USER: ${MYSQL_USER}MYSQL_PASSWORD: ${MYSQL_PASSWORD}MYSQL_INITDB_ARGS: "--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci"ports:- "3306:3306"volumes:- /opt/docker/config/mysql/data:/var/lib/mysql- /opt/docker/config/mysql/conf:/etc/mysql/conf.dhealthcheck:test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-p${MYSQL_ROOT_PASSWORD}"]interval: 20sretries: 3start_period: 30stimeout: 10sredis:image: redis:7.2-alpinecontainer_name: redis_containercommand: ["redis-server", "/etc/redis/redis.conf", "--requirepass", "${REDIS_PASSWORD}"]ports:- "6379:6379"volumes:- redis_data:/data- /opt/docker/backups/redis:/backups/redis- /opt/docker/config/redis/redis.conf:/etc/redis/redis.confhealthcheck:test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]interval: 30sretries: 3start_period: 10stimeout: 5s

四、MySQL数据库备份脚本 (multi-db + 自动清理 + 日志)

#!/bin/bash
BACKUP_DIR="/opt/docker/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
CONTAINER_NAME="mysql_container"
MYSQL_USER="root"
MYSQL_PASSWORD="StrongRootPwd123!"
KEEP_DAYS=30
DATABASES=("yufudb" "testdb" "analyticsdb")
LOG_FILE="${BACKUP_DIR}/backup_${DATE}.log"mkdir -p "$BACKUP_DIR"
echo "[${DATE}] Start backup..." | tee -a "$LOG_FILE"for DB in "${DATABASES[@]}"; dodocker exec $CONTAINER_NAME /usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASSWORD $DB > "$BACKUP_DIR/${DB}_$DATE.sql"gzip "$BACKUP_DIR/${DB}_$DATE.sql"echo "[$DB] Done: ${DB}_$DATE.sql.gz" | tee -a "$LOG_FILE"
donefind "$BACKUP_DIR" -type f -name "*.sql.gz" -mtime +$KEEP_DAYS -exec rm {} \;
echo "[$DATE] Cleaned expired backups." | tee -a "$LOG_FILE"

配合crontab

0 2 * * * bash /opt/docker/mysql_redis_deploy/backup_mysql.sh >> /opt/docker/backups/mysql/backup_$(date +\%Y\%m\%d).log 2>&1

五、MySQL数据恢复一行命令

gunzip /opt/docker/backups/mysql/yufudb_20240418_020000.sql.gz
docker exec -i mysql_container mysql -uroot -p'StrongRootPwd123!' yufudb < /opt/docker/backups/mysql/yufudb_20240418_020000.sql

建议恢复前确保目标数据库为空


六、遗忘密码处理方案

docker run --name mysql_reset_tmp \-v /opt/docker/config/mysql/data:/var/lib/mysql \-v /opt/docker/config/mysql/conf:/etc/mysql/conf.d \-p 3307:3306 \-e MYSQL_ALLOW_EMPTY_PASSWORD=yes \-d mysql:8.0 --skip-grant-tablesdocker exec -it mysql_reset_tmp bash
mysql -uroot

进入MySQL后:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongRootPwd123!';
ALTER USER 'root'@'%' IDENTIFIED BY 'StrongRootPwd123!';
ALTER USER 'mysqluser'@'%' IDENTIFIED BY 'StrongUserPwd123!';
FLUSH PRIVILEGES;

退出,删除并重启正常安全式MySQL容器


七、健康状态自动检查 + 重启

#!/bin/bash
check_container_health() {container_name=$1health_status=$(docker inspect --format='{{.State.Health.Status}}' ${container_name} 2>/dev/null)if [ "$health_status" != "healthy" ]; thenecho "[$(date +"%F %T")] $container_name unhealthy! Restarting..."docker restart $container_nameelseecho "[$(date +"%F %T")] $container_name healthy."fi
}check_container_health mysql_container
check_container_health redis_container

配合crontab每小时检查一次

0 * * * * bash /opt/docker/mysql_redis_deploy/health_check.sh >> /opt/docker/logs/health_check.log 2>&1

八、总结与实践

该项目展示了如何从零构建一套符合企业级要求的可备份、可恢复、可稳定运行的MySQL+Redis服务体系,覆盖了部署、备份、恢复、密码管理与健康维护的完整链路。

持续完善,可扩展:如一键数据库恢复脚本、灾备切换脚本等。


http://www.dtcms.com/a/421997.html

相关文章:

  • 怎么做网站流量赚钱安徽动漫公司 网站制作 安徽网新
  • 建个人网站要花多少钱营销型网站建设需要多少钱
  • dhru商城网站建设wordpress 主题 制作
  • 平面设计教程网站员工信息管理系统源码
  • 成都定制网站建设稿定设计app下载
  • 合肥网站建设电话为什么投资公司不能注册了
  • 网站维护需要多久时间网站建设费用报价单
  • 2017网站开发主流工具php网站留言板是怎么做的
  • 制作个人网站要多少钱asp 茶叶网站模板
  • 网站建设中合作加盟的作用wordpress pdf 显示不了
  • 网站建设入驻网站关键字没有排名
  • 网站前置审批表搬瓦工一键WordPress
  • 大连做网站哪家便宜医院网站建设 费用
  • 企业内网网站网站建设地址 北京
  • 镇江牛吧企业网站建设与推广公司网站建设咨询公司地址
  • 邯郸做企业网站设计的公司双鱼儿 网站建设
  • 吉林省软环境建设办公室网站wordpress安装显示英文
  • 重庆企业网站推广流程北京网站建设开发
  • 产品介绍网站模板濮阳网站建设
  • wap网站的未来网站开发哪里有培训
  • 网站建设中左对齐wordpress 云储存插件
  • 乌审旗建设局网站网站首页结构布局
  • 做定制网站多少钱动叫建个网站刷排名
  • 论坛类的网站怎么做天创网站
  • 四川省微信网站建设推广关键词排名优化公司哪家强
  • 济南网站制作哪家专业我想创建一个网站自己玩玩
  • 韩都衣舍的网站建设网站后台源代码
  • 网站制作属于什么专业WordPress hitokoto
  • 东莞在线网站制作平台seo网站优化推广怎么样
  • 网站开发什么开发语言好轻松筹 的网站价格做