Use crond para ejecutar scripts regularmente para hacer una copia de seguridad de la base de datos

Prefacio:

entorno de desarrollo

Servidor: centos 7 (servidor ligero Tencent Cloud)

Base de datos: mysql 5.7

1. ¿Qué es crond?

        crond es un proceso daemon utilizado en Linux para realizar periódicamente ciertas tareas o esperar a que se procesen ciertos eventos. Es similar a las tareas programadas en Windows. Después de instalar el sistema operativo, esta herramienta de servicio se instalará de forma predeterminada y se iniciará automáticamente. El proceso crond, el proceso crond verifica regularmente si hay una tarea para ejecutar cada minuto, y si hay una tarea para ejecutar, la tarea se ejecuta automáticamente.

2. Usar pasos

1. crond comandos de uso común

  •  Detectar si el servicio crond está instalado en el sistema
  • descripción del comando de servicio crond
  • service crond start //Iniciar el servicio
  • service crond stop //Cerrar el servicio
  • service crond restart //reinicia el servicio
  • service crond reload //Recargar configuración
  • service crond status //Ver el estado del servicio crontab
  • crontab -e #Editar tarea de temporización crontab
  • crontab -l #Consultar tareas crontab
  • crontab -r #Eliminar todas las tareas crontab del usuario actual
  • systemctl status crond.service #Ver el estado del servicio del sistema crond 

1.1 Iniciar el servicio

inicio de crono de servicio

1.2 Añadir tarea

crontab -e

1.3 Comprobar si la tarea se ha añadido correctamente

crontab-l

2. formato de tarea programada crond

En el archivo crontab creado por el usuario, cada línea representa una tarea, y cada campo en cada línea representa una configuración. Su formato se divide en seis campos. Las primeras cinco secciones son secciones de configuración de tiempo, y la sexta sección es el segmento de comando. para ser ejecutado, el formato es el siguiente:

00 02 * * * /atrás.sh
minuto hora día mes semana dominio
#定时脚本 下面的意思就是  每天的凌晨2点执行一次脚本 (根据自己的需求执行脚本)
00 02 * * * /usr/local/mysql/mysqlzip/back.sh

en:

  • minuto: Indica el minuto, que puede ser cualquier número entero del 0 al 59.
  • hora: Indica la hora, que puede ser cualquier número entero del 0 al 23.
  • día: Indica la fecha, que puede ser cualquier número entero del 1 al 31.
  • mes: Indica el mes, que puede ser cualquier número entero del 1 al 12.
  • semana: Indica el día de la semana, que puede ser cualquier número entero del 0 al 7, donde 0 o 7 representa el domingo.
  • comando: el comando a ejecutar, que puede ser un comando del sistema o un archivo de script escrito por usted mismo.

Nota: La ruta del script debe ser la ruta completa del script (ruta completa: la ruta obtenida a través del comando pwd)

3. Escribir guiones

  1. Modificación 1: nombre de usuario de la base de datos
  2. Modificación 2: contraseña de la base de datos
  3. Modificación 3: nombre de la base de datos
  4. Modificación 4: ubicación de almacenamiento de archivos de copia de seguridad
  5. Modificación 5: la dirección del archivo de mysqldump (puede usar whereis mysqldump para consultar la ubicación de mysqldump)
  6. Modificación 6: más de 7 archivos eliminan los primeros archivos respaldados y cambian de acuerdo con sus necesidades reales; el propósito de agregar es evitar que demasiadas copias de seguridad ocupen demasiado espacio de almacenamiento.
#!/bin/bash
echo '##########################################'
echo '###### The database is automatically backed up at 01:00 am every day ######'
echo '##########################################'
# Setting environment variables
DATE=$(date +%Y_%m_%d_%H_%M_%S)
# $(date +%Y%m%d)
# 数据库用户名
USERNAME=修改1
# 密码
PASSWORD=修改2
# 要备份的数据库
DB=修改3


# Docker容器ID
#DOCKERID=********

# ubuntu 系统非 root 用户,要将备份产生的文件放到 xxx 用户所在的目录下,否则必须使用 sudo 输入管理员密码执行此脚本。
# Linux服务器上备份文件目录  修改4
DIR=/usr/local/mysql/mysqlzip 
echo 'Get system date: ' $DATE

if [ ! -d "$DIR" ]; then
mkdir $DIR
fi
cd $DIR

echo 'backup started...' $(date "+%Y-%m-%d %H:%M:%S")

# 使用docker进入mysql容器,执行mysqldump备份数据库文件
# docker exec -it 容器名称 mysqldump -u用户名 -p密码 要备份的数据库名称 | gzip > 要打包到的文件名称
#docker exec $DOCKERID /usr/bin/mysqldump -u $USERNAME --password=$PASSWORD  $DB | gzip > $DIR/$DB_$DATE.sql.gz

# 备份 直接安装在 linux 系统中的数据库 修改5
/usr/local/mysql/bin/mysqldump -u$USERNAME -p$PASSWORD $DB | gzip > $DIR/$DB_$DATE.sql.gz
# just backup the latest 7 days

#保留最近文件数7,删除其它多余的文件  修改6 (也可以去掉 主要为了防止备份太多占用太多存储)
ReservedNum=7
date=$(date "+%Y%m%d-%H%M%S")

FileNum=$(ls -l $DIR|grep ^- |wc -l)

while(( $FileNum > $ReservedNum))
do
    OldFile=$(ls -rt $DIR| head -1)
    echo  $date "Delete File:"$OldFile
    rm -rf $DIR/$OldFile
    let "FileNum--"
done 

echo 'backup completed!' $(date "+%Y-%m-%d %H:%M:%S")

3.1 Detectar y ejecutar el script sh recién escrito

otorgar permisos, ejecutar

chmod 777 back.sh

Luego prueba ejecutar el script sh

./back.sh


Resumir

 Con crontab, no hay necesidad de preocuparse por olvidarse de hacer una copia de seguridad de la base de datos.

Supongo que te gusta

Origin blog.csdn.net/weixin_41620505/article/details/130581186
Recomendado
Clasificación