Use crond para executar scripts regularmente para fazer backup do banco de dados

Prefácio:

ambiente de desenvolvimento

Servidor: centos 7 (Tencent Cloud Lightweight Server)

Banco de dados: mysql 5.7

1. O que é crond?

        crond é um processo daemon usado no linux para executar periodicamente determinadas tarefas ou aguardar o processamento de determinados eventos. É semelhante às tarefas agendadas no Windows. Após a instalação do sistema operacional, esta ferramenta de serviço será instalada por padrão e iniciará automaticamente O processo crond, o processo crond verifica regularmente se há uma tarefa a ser executada a cada minuto e, se houver uma tarefa a ser executada, a tarefa é executada automaticamente.

2. Use as etapas

1. crond comandos comumente usados

  •  Detectar se o serviço crond está instalado no sistema
  • descrição do comando do serviço crond
  • service crond start //Inicia o serviço
  • crond stop do serviço //Fecha o serviço
  • service crond restart //reinicie o serviço
  • service crond reload //Recarrega configuração
  • status crond do serviço //Ver status do serviço crontab
  • crontab -e #Editar tarefa de tempo crontab
  • crontab -l #Consulta tarefas do crontab
  • crontab -r #Excluir todas as tarefas do crontab do usuário atual
  • systemctl status crond.service #Ver o status do serviço do sistema crond 

1.1 Inicie o serviço

início do crond do serviço

1.2 Adicionar tarefa

crontab -e

1.3 Verifique se a tarefa foi adicionada com sucesso

crontab -l

2. formato de tarefa agendada do crond

No arquivo crontab criado pelo usuário, cada linha representa uma tarefa e cada campo em cada linha representa uma configuração. Seu formato é dividido em seis campos. As primeiras cinco seções são seções de configuração de tempo e a sexta seção é o segmento de comando para ser executado, o formato é o seguinte:

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

em:

  • minuto: Indica o minuto, que pode ser qualquer número inteiro de 0 a 59.
  • hora: Indica a hora, que pode ser qualquer número inteiro de 0 a 23.
  • day: Indica a data, que pode ser qualquer número inteiro de 1 a 31.
  • mês: Indica o mês, que pode ser qualquer número inteiro de 1 a 12.
  • semana: Indica o dia da semana, que pode ser qualquer número inteiro de 0 a 7, onde 0 ou 7 representa o domingo.
  • comando: O comando a ser executado, que pode ser um comando do sistema ou um arquivo de script escrito por você.

Nota: O caminho do script deve ser o caminho completo do script (full path: o caminho obtido através do comando pwd)

3. Escreva roteiros

  1. Modificação 1: nome de usuário do banco de dados
  2. Modificação 2: senha do banco de dados
  3. Modificação 3: nome do banco de dados
  4. Modificação 4: Local de armazenamento dos arquivos de backup
  5. Modificação 5: O endereço do arquivo mysqldump (você pode usar whereis mysqldump para consultar a localização do mysqldump)
  6. Modificação 6: Mais de 7 arquivos excluem os arquivos de backup mais antigos e mudam de acordo com suas necessidades reais; o objetivo de adicionar é evitar que muitos backups ocupem muito espaço de armazenamento.
#!/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 e executar o script sh recém-escrito

conceder permissões, executar

chmod 777 back.sh

Em seguida, teste o script sh de execução

./back.sh


Resumir

 Com crontab, não há necessidade de se preocupar em esquecer de fazer backup do banco de dados.

Acho que você gosta

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