Kopie zapasowe bazy danych mysql do Amazon S3 (skrypt powłoki)
- 4803
- 399
- Laura Zygmunt
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ę tutaj1234567891011121314151617181920212223242526272829303132333435363373839404142434445464748495051525354555657558559606162 | #!/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.