Bases de données MySQL de sauvegarde vers Amazon S3 (Shell Script)

Bases de données MySQL de sauvegarde vers Amazon S3 (Shell Script)

Un script shell est une collection de commandes pour effectuer un travail spécifique. MySQL est un système de gestion de base de données relationnel largement utilisé sur les systèmes Linux. Amazon S3 est un périphérique de stockage cloud fourni par Amazon Web Services. C'est une bonne pratique pour l'administrateur système de sauvegarder des bases de données à intervalles réguliers et de les stocker dans un endroit éloigné comme Amazon S3.

  • Un simple script bash pour la sauvegarde de la base de données MySQL
  • Un script d'avance bash pour la sauvegarde de la base de données MySQL

Ce tutoriel contient un script shell qui crée une sauvegarde des bases de données MySQL et les télécharge sur les seaux Amazon S3. Vous pouvez également utiliser ce script de shell pour sauvegarder les bases de données MariaDB ou Amazon Aurora (MySQL compatibles).

Bases de données MySQL de sauvegarde vers S3

Utilisez le tutoriel étape par étape ci-dessous pour sauvegarder les bases de données MySQL et les télécharger dans le seau Amazon S3.

1. Installer AWS CLI

Afin d'utiliser ce script, le système doit avoir AWS CLI installé.

https: // tecadmin.net / installation-aws-cli-in-linux /

2. Créer un seau S3

Connectez-vous à la console de gestion AWS et créez un nouveau seau S3.

Alternativement, vous pouvez également créer un seau S3 via AWS CLI. La commande sera comme:

AWS S3API CREATE-BUCKET - Bucket S3-Bucket-Name - Region Us-East-1  

Remplacez simplement le nom et la région du seau.

3. Script Shell pour sauvegarder la base de données MySQL vers S3

Copiez le script shell ci-dessous dans un fichier comme DB-Backup.shot. Ce script utilise mysqltump Commande pour créer des bases de données sauvegardes. Puis utiliser gzip commande pour archiver les fichiers de sauvegarde et enfin utiliser AWS Commande pour télécharger des fichiers de sauvegarde sur Amazon S3 Bucket.

Créer un fichier comme / sauvegarde / scripts / S3-Backup-Mysql.shot Dans Modifier votre éditeur de texte préféré. Puis ajoutez le contenu ci-dessous:

#!/ usr / bin / env bash ########################################### ################################ #################### #################################################### ### ### #### Auteur: Rahul Kumar ##### Site Web: https: // tecadmin.filet #### ############################################# ############################## ###################### #################################################### # # Définissez le formate de nom de dossier avec la date (2022-05-28) DATE_FORMAT = $ (DATE + "% Y-% M-% D") # MySQL Server Indementials MySQL_HOST = "LocalHost" MySQL_PORT = "3306" MySQL_USER = " Utilisateur "mysql_password =" mot de passe "# chemin vers le répertoire de sauvegarde local local_backup_dir =" / backup / dbbackup "# set name de seau et chemin de répertoire S3_Bucket_Name =" S3-Bucket-name "S3_Bucket_Path =" Backups / DB-Backup "# # # # # # # # # nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de nombre de numéro de numéro de nombre de numéro de numéro de numéro de numéro de nombre de numéro de nombre de nombres" S3_BUCKET_PATH = " jours pour stocker les fichiers de sauvegarde locaux Backup_Retain_Days = 30 # Utilisez une seule base de données ou des noms de données de données séparés dans l'espace = "DB1 DB2 DB3" ##### Ne changez pas sous cette ligne mkdir -p $ local_backup_dir / $ date_format local_dir = $ Local_backup_dir / $ date_format rote_dir = s3: // $ s3_bucket_name / $ s3_bucket_path pour db dans $ databases; faire mysqldump \ -h $ mysql_host \ -p $ mysql_port \ -u $ mysql_user \ -p $ mysql_password \ --single-transaction $ db | gzip -9> $ local_dir / $ db - $ date_format.SQL.gz aws s3 cp $ local_dir / $ db - $ date_format.SQL.gz $ reote_dir / $ date_format / fait dbdeldate = "date +" $ date_format "--date =" $ backup_retain_days il y a des jours "si [si [ ! -z $ local_backup_dir]; alors cd $ local_backup_dir si [ ! -z $ dbdeldate] && [-d $ dbDelDate]; puis rm -rf $ dbdeldate fi ## le script se termine ici
1234567891011121314151617181920212223242526272829303132333435363738394041424344546474849505152554556575859606162#!/ usr / bin / env bash ########################################### #################################################### #################################################### ########## Auteur: Rahul Kumar ##### Site Web: https: // tecadmin.filet################################################# #################################################### #################################################### # # Définissez le formate de nom de dossier avec la date (2022-05-28) date_format = $ (date + "% y-% m-% d") # MySQL Server Indementialsmysql_host = "localhost" mysql_port = "3306" MySQL_USER = "User "Mysql_password =" mot de passe "# chemin vers la sauvegarde locale DirectoryLocal_Backup_Dir =" / Backup / DBBackup "# SET S3 Nom du seau et répertoire Paths3_Bucket_Name =" S3-Bucket-Name "S3_Bucket_Path =" Backups / DB-Backup "# # # Nombre de jours à stocker Files-Backup Local FilesbackUp_Retain_Days = 30 # Utilisez une seule base de données ou une seule base de données séparée par Database DatabaseDatabases = "DB1 DB2 DB3" ##### Ne change pas sous cette ligne MkDir -P $ local_backup_dir / $ date_format local_dir = $ local_backup_dir / $ Date_format reote_dir = s3: // $ s3_bucket_name / $ s3_bucket_path pour db dans $ databases; faire mysqldump \ -h $ mysql_host \ -p $ mysql_port \ -u $ mysql_user \ -p $ mysql_password \ --single-transaction $ db | gzip -9> $ local_dir / $ db - $ date_format.SQL.gz aws s3 cp $ local_dir / $ db - $ date_format.SQL.gz $ reote_dir / $ date_format / Done dbDeldate = 'date + "$ date_format" --date = "$ backup_retain_days il y a des jours"' if [ ! -z $ local_backup_dir]; alors cd $ local_backup_dir si [ ! -z $ dbdeldate] && [-d $ dbDelDate]; alors rm -rf $ dbdeldate fiFi ## Le script se termine ici

Mettez à jour toutes les variables nécessaires selon votre environnement système.

4. Comment exécuter le script de sauvegarde

Définissez l'autorisation EXECUTE (x) sur le script:

Chmod + x S3-Backup-Mysql.shot  

Puis exécutez le script de sauvegarde.

./ S3-Backup-Mysql.shot  

5. Planifiez le script de sauvegarde pour s'exécuter quotidiennement

Planifiez le script shell en utilisant Crontab pour fonctionner quotidiennement.

crontab -e  

Ajoutez les paramètres ci-dessous à la fin du fichier:

# Exécutez quotidien.sh> / dev / null 2> & 1 

Enregistrez le fichier et fermez-le.

Conclusion

Ce tutoriel vous fournit un script shell pour sauvegarder les bases de données MySQL et les télécharger dans le seau Amazon S3. Cela pourrait vous être utile d'automatiser les sauvegardes de la base de données et d'enregistrer une copie sur le stockage cloud.