Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地

Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地

      • 创建目录,创建配置文件
      • 启动容器
      • 命令
      • 定时备份
        • MySQL执行脚本
        • Linux每日定时任务
          • 命令
          • 文件内参数
          • 其他时间参数
        • AT一次性定时任务

创建目录,创建配置文件

  • $ mkdir -p /opt/mysql/conf

  • $ vim /opt/mysql/conf/my.cnf

    [mysql]
    #设置mysql客户端默认字符集
    default-character-set=UTF8MB4
    [mysqld]
    #设置3306端口
    port=3306
    #允许最大连接数
    max_connections=500
    #允许连接失败的次数
    max_connect_errors=10
    #服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=UTF8MB4
    #开启查询缓存
    explicit_defaults_for_timestamp=true
    #创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    #等待超时时间秒
    wait_timeout=600
    #交互式连接超时时间秒
    interactive-timeout=600

启动容器

$ docker run -d \
-p 25379:3306 \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/mysql/logs:/var/log/mysql \
-v /opt/mysql/data:/var/lib/mysql \
-v /opt/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD="wyj@1234qwer" \
--restart=always \
--privileged=true \
--name mysql \
mysql:8.4.0

命令

#进入容器内
$ docker exec -it mysql bash

#外部执行命令
docker exec {容器} {命令}

定时备份

MySQL执行脚本
  • 建目录、建脚本,修改内部参数
  • $ mkdir -p /opt/mysql_backup/sql
  • $ vim /opt/mysql_backup/sql-backup.sh
sh 复制代码
#!/bin/bash

DATE=$(date +%Y%m%d%H%M%S)
CONTAINER_NAME="mysql"
BACKUP_DIR="/opt/mysql_backup/sql"
DATABASE_HOST="127.0.0.1"
#--all-databases
DATABASE_NAME="aaa"
ACCOUNT="root"
PASSWORD="wyj@1234qwer"

docker exec $CONTAINER_NAME mysqldump -h $DATABASE_HOST -u $ACCOUNT -p${PASSWORD} $DATABASE_NAME > $BACKUP_DIR/"$DATABASE_NAME"_"$DATE".sql
  • 赋权

    $ chmod 777 /opt/mysql_backup/sql-backup.sh

    $ docker exec mysql mysqldump -h 127.0.0.1 -u root -p"wyj@1234qwer" aaa > /opt/mysql_backup/aaaa.sql

Linux每日定时任务
命令
  • crontab 一个文件形式保存的定时任务,每天自动执行

  • 每日定时任务,修改文件内容,保存后,到点自动执行

  • 被执行的文件,需要先赋权,具备执行权限

  • 命令

    #是否正在运行
    $ service crond status

    #当前用户是否存在crontab文件,如果不存在,crontab -e 直接创建即可
    $ crontab -l

    #直接编辑当前用户crontab 文件
    $ crontab -e

    #删除当前用户的定时任务,不要使用,太危险
    $ crontab -r

文件内参数
  • 直接编辑当前用户crontab 文件

  • $ crontab -e

  • 文件内参数

    #每天0点1分
    1 0 * * * /opt/mysql_backup/sql-backup.sh

    #每天23.50
    30 20 * * * /opt/mysql_backup/sql-backup.sh

其他时间参数
  • 其他时间参数

    #文件格式
    #文件格式:分钟 小时 日 月 星期 {命令}
    #时间取值:分钟(0-59) 、小时(0-23) 、日(1-31)、 月(1-12) 、星期(0-7,0和7都是星期日)
    #特殊符号取值:
    *:表示任何时间。
    ,:用于分隔多个值,例如 1,3,5 表示分钟的第 1、3、5 分钟。
    -:表示一个范围,例如 1-5 表示从第 1 分到第 5 分。
    /:表示步长,例如 */5 表示每 5 分钟执行一次。

    #每1分钟执行一次

            • echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" >> /opt/test.txt

    #周六和周日 12:30
    30 12 * * 6-7 echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" >> /opt/test.txt

    #每天12.31-12.59 每分钟一次
    31-59 12 * * * echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" >> /opt/test.txt

    #周六和周日,每隔五分钟,就进行一次
    */5 12 * * 6-7 echo "时间: $(date '+%Y-%m-%d %H:%M:%S')" >> /opt/test.txt

AT一次性定时任务
  • At命令是一次性定时计划任务,必须确保守护进程已经启动

  • 默认情况下,atd守护进程每60秒检查作业队列,执行完一个任务后不再执行此任务了。

    #检查是否启动
    $ ps -ef | grep atd

    #安装定时任务,开机自启
    $ dnf -y install at
    $ sudo systemctl start atd
    $ sudo systemctl enable atd
    $ sudo systemctl status atd

    #授权
    $ chmod 777 /opt/mysql_backup/sql-backup.sh

    #指定执行文件和时间
    $ echo "/opt/mysql_backup/sql-backup.sh" | at 12:55 2025-01-12

    #查询定时任务,已经执行过的任务,自动消失
    $ at -l

    #删除定时任务
    $ at -d {序号}

相关推荐
sszdzq2 小时前
Docker
运维·docker·容器
dmy2 小时前
docker 快速构建开发环境
后端·docker·容器
2401_897930065 小时前
linux系统如何配置host.docker.internal
linux·docker·eureka
亲持红叶10 小时前
open-webui安装
docker·open-webui
伪装成塔的小兵10 小时前
Windows使用docker部署fastgpt出现的一些问题
windows·docker·容器·oneapi·fastgpt
转身後 默落13 小时前
11.Docker 之分布式仓库 Harbor
分布式·docker·容器
菩提云14 小时前
Deepseek存算分离安全部署手册
人工智能·深度学习·安全·docker·容器
c无序20 小时前
Docker-技术架构演进之路
docker
努力的小T1 天前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
东风微鸣1 天前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性