Backup MySQL Bathabases para Amazon S3 (script shell)

Backup MySQL Bathabases para Amazon S3 (script shell)

Um script de shell é uma coleção de comandos para realizar um trabalho específico. O MySQL é um sistema de gerenciamento de banco de dados relacional amplamente usado em sistemas Linux. Amazon S3 é um dispositivo de armazenamento em nuvem fornecido pela Amazon Web Services. É uma boa prática para o administrador do sistema fazer backup de bancos de dados em intervalos regulares e armazená -los em um local remoto como a Amazon S3.

  • Um script simples para o Backup de banco de dados MySQL
  • Um script Bash Advance para Backup de banco de dados MySQL

Este tutorial contém um script de shell que cria bancos de dados MySQL backup e o carrega para os baldes da Amazon S3. Você também pode usar este script de shell para fazer backup de bancos de dados MARIADB ou Amazon Aurora (MySQL Compatible).

Backup MySQL Bathabases para S3

Use o tutorial passo a passo abaixo para fazer backup dos bancos de dados MySQL e enviá-los para o balde Amazon S3.

1. Instale a AWS CLI

Para usar este script, o sistema deve ter a AWS CLI instalada.

https: // Tecadmin.net/instalação-aws-cli-s-linux/

2. Crie o balde S3

Faça login no AWS Management Console e crie um novo balde S3.

Como alternativa, você também pode criar o S3 Bucket via AWS CLI. O comando será como:

AWS S3API CREATE-BUCKET-Bucket S3-Bucket-Name --region US-leste-1  

Basta substituir o nome do balde e a região.

3. Script shell para fazer backup mysql banco de dados para s3

Copie o script do shell abaixo para um arquivo como DB-backup.sh. Este script usa mysqldump comando para criar bancos de dados backups. Então use gzip comando para arquivar arquivos de backup e finalmente usar AWS Comando para fazer upload de arquivos de backup para o Amazon S3 Bucket.

Crie um arquivo como /backup/scripts/s3-backup-mysql.sh Em editar seu editor de texto favorito. Em seguida, adicione o conteúdo abaixo:

#!/usr/bin/Env Bash ############################################### ######Omas ########Omas ### ### #### Autor: Rahul Kumar ##### Site: https: // Tecadmin.líquido #### ############################################# ######Omas ########Omas # # Defina o nome da pasta formato com data (2022-05-28) date_format = $ (data +"%y-%m-%d") # mysql server credenciais mysql_host = "lochost" mysql_port = "3306" mysql_user = " Usuário "mysql_password =" senha " # caminho para o diretório de backup local local_backup_dir ="/backup/dbbackup " # Definir nome do bucket s3 e caminho do diretório dias para armazenar arquivos de backup local backup_retain_days = 30#use um único banco de dados ou bancos de dados de nomes do banco de dados separados pelo espaço = "db1 db2 db3" ##### não mude abaixo desta linha mkdir -p $ local_backup_dir/$ date_format local_dir = $ Local_backup_dir/$ date_format remote_dir = s3: // $ s3_bucket_name/$ s3_bucket_path para db nos bancos de dados $; fazer mysqldump \ -h $ mysql_host \ -p $ mysql_port \ -u $ mysql_user \ -p $ mysql_password \ - -single -transação $ db | gzip -9> $ local_dir/$ db -$ date_format.SQL.gz aws s3 cp $ local_dir/$ db-$ date_format.SQL.gz $ remote_dir/ $ date_format/ done dbdeldate = "date +" $ date_format " - -date =" $ backup_retain_days dias atrás "" se [ ! -z $ local_backup_dir]; Então CD $ local_backup_dir se [ ! -z $ dbdeldate] && [-d $ dbdeldate]; Então rm -rf $ dbdeldate fi fi ## script termina aqui
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#!/usr/bin/Env Bash ############################################### ########Omas ########Omas Autor: Rahul Kumar ##### Site: https: // Tecadmin.líquido################################################# ########Omas ########Omas # # Defina o nome da pasta Formate com a data (2022-05-28) date_format = $ (data +"%y-%m-%d") # mysql server credenciaissmysql_host = "lochost" mysql_port = "3306" mysql_user = "usuário" "Mysql_password =" senha " # caminho para o backup local diretorylocal_backup_dir ="/backup/dbbackup " # Definir nome do bucket s3 e caminhos de diretório3_bucket_name =" s3-bucket-name "s3_bucket_path =" backups/db-backup " # do dia para os dias" para os dias "para os dias" s3_bucket_path = "backups/db-backup" # do dia " local backup filesBACKUP_RETAIN_DAYS=30 # Use a single database or space separated database's namesDATABASES="DB1 DB2 DB3" ##### Do not change below this line mkdir -p $LOCAL_BACKUP_DIR/$DATE_FORMAT LOCAL_DIR=$LOCAL_BACKUP_DIR /$ Date_format remote_dir = s3: // $ s3_bucket_name/$ s3_bucket_path para db nos bancos de dados $; fazer mysqldump \ -h $ mysql_host \ -p $ mysql_port \ -u $ mysql_user \ -p $ mysql_password \ - -single -transação $ db | gzip -9> $ local_dir/$ db -$ date_format.SQL.gz aws s3 cp $ local_dir/$ db-$ date_format.SQL.gz $ remote_dir/$ date_format/feito dbdeldate = 'date +"$ date_format" - -date = "$ backup_retain_days dias atrás"' se [ ! -z $ local_backup_dir]; Então CD $ local_backup_dir se [ ! -z $ dbdeldate] && [-d $ dbdeldate]; Então rm -rf $ dbdeldate fifi ## script termina aqui

Atualize todas as variáveis ​​necessárias conforme o ambiente do seu sistema.

4. Como executar script de backup

Defina a permissão Execute (x) em Script:

CHMOD +X S3-BACKUP-MYSQL.sh  

Em seguida, execute o script de backup.

./s3-backup-mysql.sh  

5. Programe o script de backup para executar diariamente

Programe o script do shell usando Crontab para executar diariamente.

Crontab -e  

Adicione as configurações abaixo ao final do arquivo:

# Execute diariamente @ 2am 0 2 * * */backup/scripts/s3-backup-mysql.sh> /dev /null 2> & 1 

Salve o arquivo e feche-o.

Conclusão

Este tutorial fornece um script de shell para fazer backup de bancos de dados MySQL e enviá -los para o balde Amazon S3. Isso pode ser útil para você automatizar backups de banco de dados e salvar uma cópia no armazenamento em nuvem.