Kopie zapasowe bazy danych mysql do Amazon S3 (skrypt powłoki)

Kopie zapasowe bazy danych mysql do Amazon S3 (skrypt powłoki)

Skrypt powłoki to zbiór poleceń do wykonania określonego zadania. MySQL to relacyjny system zarządzania bazą danych szeroko stosowany w systemach Linux. Amazon S3 to urządzenie do przechowywania w chmurze dostarczone przez Amazon Web Services. To dobra praktyka dla administratora systemu do tworzenia kopii zapasowych baz danych w regularnych odstępach czasu i przechowywania w zdalnej lokalizacji, takiej jak Amazon S3.

  • Prosty skrypt bash dla kopii zapasowej bazy danych mysql
  • Skrypt z góry do kopii zapasowej bazy danych mysql

Ten samouczek zawiera skrypt powłoki, który tworzy kopię zapasową baz danych MySQL i przesyła je do Amazon S3 Buckets. Możesz także użyć tego skryptu powłoki do tworzenia kopii zapasowych baz danych Mariadb lub Amazon Aurora (kompatybilny MySQL).

Kopie zapasowe bazy danych mysql do S3

Użyj poniższego samouczka krok po kroku, aby utworzyć kopię zapasową baz danych MySQL i prześlij je do wiadra Amazon S3.

1. Zainstaluj AWS CLI

Aby użyć tego skryptu, system musi mieć zainstalowane AWS CLI.

https: // tecadmin.net/instalacja-AWS-CLI-in-linux/

2. Utwórz wiadro S3

Zaloguj się do konsoli zarządzania AWS i utwórz nowe wiadro S3.

Alternatywnie możesz również utworzyć wiadro S3 za pośrednictwem AWS CLI. Polecenie będzie jak:

AWS S3API Create-Bucket-Bucket S3-Bucket-Name-Region US-East-1  

Wystarczy wymienić nazwę i region wiadra.

3. Skrypt powłoki do kopii zapasowej bazy danych mysql do S3

Skopiuj poniższy skrypt powłoki do pliku takiego jak DB-Backup.cii. Ten skrypt używa Mysqldump polecenie tworzenia kopii zapasowych baz danych. Następnie użyj gzip polecenie do archiwizacji plików kopii zapasowych i wreszcie użycie AWS Polecenie do przesłania plików kopii zapasowych do Amazon S3 Bucket.

Utwórz plik taki jak /Backup/Scripts/S3-Backup-Mysql.cii edytuj swój ulubiony edytor tekstu. Następnie dodaj poniższą zawartość:

#!/usr/bin/env bash ##########################################################################. ################################ #################################################. #########################################################. ### ### #### Autor: Rahul Kumar #####.internet #### ############################################# ##################################################################. #########################################################. # # Ustaw sformatowanie nazwy folderu z datą (2022-05-28) date_format = $ (data +"%y-%m-%d") # mysql Server poświadczenia mysql_host = "localhost" mysql_port = "3306" mysql_user = " Użytkownik „mysql_password =" hasło " # ścieżka do lokalnego katalogu kopii zapasowej local_backup_dir ="/backup/dbbackup " # Set S3 Nazwa kubełka i ścieżka katalogu S3_BUCKET_NAME =" S3-BUCKET-NAME " Dni na przechowywanie lokalnych plików kopii zapasowych backup_retain_days = 30#Użyj pojedynczej bazy danych lub przestrzeni nazwy bazy danych bazy danych = "db1 db2 db3" ##### = $ Local_backup_dir/$ date_format remote_dir = s3: // $ s3_bucket_name/$ s3_bucket_path dla db w bazach danych $; Zrób 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 $ remote_dir/ $ date_format/ gotów dbdeldate = "data +" $ date_format " - -date =" $ backup_retain_days kilka dni temu "" if [ ! -Z $ local_backup_dir]; następnie CD $ local_backup_dir jeśli [ ! -Z $ dbdeldate] && [-d $ dbdeldate]; następnie rm -rf $ dbdeldate fi fi ## Skrypt kończy się tutaj
1234567891011121314151617181920212223242526272829303132333435363373839404142434445464748495051525354555657558559606162#!/usr/bin/env bash ##########################################################################. #########################################################. #########################################################. ########## Autor: Rahul Kumar #####.internet################################################# #########################################################. #########################################################. # # Ustaw forman nazwy folderu z datą (2022-05-28) date_format = $ (data +"%y-%m-%d") # mysql Server credentialsmysql_host = "localhost" mysql_port = "3306" mysql_user = "użytkownik użytkownika „Mysql_password =" hasło " # ścieżka do lokalnego kopiitowania kopii zapasowej DirectoryLocal_backup_dir ="/backup/dbbackup " # Set S3 Nazwa kubełka i katalog ścieżki Lokalny kopie zapasowe FilesBackup_retain_Days = 30#Użyj pojedynczej bazy danych lub przestrzeni nazwyodabase bazy danych = "DB1 DB2 DB3" ##### /$ Date_format remote_dir = s3: // $ s3_bucket_name/$ s3_bucket_path dla db w bazach danych $; Zrób 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 $ remote_dir/$ date_format/gotów dbdeldate = 'data +"$ date_format" - -date = "$ backup_retain_days kilka dni temu"' if [ ! -Z $ local_backup_dir]; następnie CD $ local_backup_dir jeśli [ ! -Z $ dbdeldate] && [-d $ dbdeldate]; Następnie rm -rf $ dbdeldate fifi ## Skrypt kończy się tutaj

Zaktualizuj wszystkie niezbędne zmienne zgodnie z środowiskiem systemowym.

4. Jak uruchomić skrypt kopii zapasowej

Ustaw zgodę Execute (x) na skrypcie:

CHMOD +X S3-BACKUP-MYSQL.cii  

Następnie uruchom skrypt kopii zapasowej.

./s3-backup-mysql.cii  

5. Zaplanuj skrypt kopii zapasowej, aby działać codziennie

Zaplanuj skrypt powłoki za pomocą crontab do działania na co dzień.

crontab -e  

Dodaj poniższe ustawienia do końca pliku:

# Uruchom codziennie @ 2AM 0 2 * * */Backup/Scripts/S3-Backup-Mysql.sh> /dev /null 2> i 1 

Zapisz plik i zamknij go.

Wniosek

Ten samouczek zawiera skrypt powłoki do tworzenia kopii zapasowych baz danych MySQL i przesłania do łyżki Amazon S3. To może być pomocne w automatyzacji kopii zapasowych bazy danych i zapisywania kopii w chmurze.