Amazon RDS - MySQL DB Export Import
Amazon RDS MySQL zapewnia łatwe sposoby importowania danych do bazy danych i eksportowania danych z bazy danych. Po pomyślnym połączeniu się z bazą danych MySQL możemy użyć narzędzi CLI, aby uruchomić polecenia importu i eksportu, aby uzyskać dane z innych źródeł do i z bazy danych RDS. Poniżej przedstawiamy scenariusze do rozważenia przy podejmowaniu decyzji o podejściu do importu danych do bazy danych Amazon RDS - MySQL.
Istniejąca baza danych MySQL może być obecna lokalnie lub w innej instancji EC2. Poniżej przedstawiono schematycznie to, co robimy.
Tworzenie kopii zapasowej z lokalnej bazy danych
Pierwszym krokiem jest utworzenie kopii zapasowej lokalnej bazy danych za pomocą poniższego polecenia.
mysqldump -u user -p[user_password] [database_name] > backupfile.sql
Tworzony jest plik o nazwie backupfile.sql zawierający strukturę tabeli wraz z danymi do wykorzystania.
Przechowywanie pliku kopii zapasowej w S3.
Prześlij plik kopii zapasowej utworzony powyżej do wstępnie określonego zasobnika Amazon S3 w tym samym regionie, w którym znajduje się docelowa baza danych RDS MySQL DB. Możesz skorzystać z tego linku, aby dowiedzieć się, jak przesyłać.
Importuj dane z Amazon S3 do bazy danych RDS-MySQL
Możesz użyć następującego polecenia Amazon CLI, aby zaimportować dane z S3 do MySQL DB.
aws rds restore-db-instance-from-s3 \
--allocated-storage 125 \
--db-instance-identifier tddbidentifier \
--db-instance-class db.m4.small \
--engine mysql \
--master-user-name masterawsuser \
--master-user-password masteruserpassword \
--s3-bucket-name tpbucket \
--s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \
--s3-prefix bucketprefix \
--source-engine mysql \
--source-engine-version 5.6.27
Mogą istnieć scenariusze, w których chcesz, aby dane z istniejącej bazy danych RDS MYSQL zostały przeniesione do innej bazy danych RDS MYSQL. Na przykład, aby utworzyć bazę danych odzyskiwania po awarii lub utworzyć bazę danych tylko do raportowania biznesowego itp. W takim scenariuszu tworzymy repliki do odczytu, które są kopią ich źródłowej bazy danych, a następnie promujemy tę replikę odczytu do nowej instancji bazy danych. Są używane, aby zapobiec bezpośredniemu ciężkiemu odczytowi z oryginalnej źródłowej bazy danych, kiedy chcemy skopiować dane.
utwórz replikę do odczytu
aws rds create-db-instance-read-replica \
--db-instance-identifier myreadreplica \
--source-db-instance-identifier mydbinstance
Promuj replikę do odczytu do instancji DB
Teraz, gdy mamy replikę, możemy ją promować do samodzielnej instancji bazy danych. Będzie to służyć naszej końcowej potrzebie importowania danych z RDS - Mysql DB do nowej. Poniższa komenda służy do zakończenia promocji repliki do odczytu do instancji bazy danych.
aws rds create-db-instance-read-replica \
--db-instance-identifier readreplica_name \
--region target_region_name
--db-subnet-group-name subnet_name
--source-db-instance-identifier arn:aws:rds:region_name:11323467889012:db:mysql_instance1
Aby zaimportować dane z dowolnej innej bazy danych do Amazon RDS - MySQL, musimy skorzystać z usługi migracji danych amazon zwanej również Amazon DMS. Wykorzystuje narzędzie do konwersji schematów, aby przetłumaczyć istniejącą bazę danych na platformę MYSQL. Poniższy diagram wyjaśnia cały proces. Działa również na podobnej zasadzie replikacji, jak opisano w poprzedniej sekcji.
Eksportowanie danych z Amazon RDS Mysql DB jest prostym procesem, w którym działa na tej samej zasadzie replikacji, którą widzieliśmy powyżej. Poniżej znajdują się kroki, aby przeprowadzić proces eksportu.
- Uruchom instancję MySQL działającą poza Amazon RDS.
- Wyznacz instancję MySQL DB jako źródło replikacji.
- Użyj mysqldump, aby przenieść bazę danych z instancji Amazon RDS do instancji zewnętrznej względem Amazon RDS.
Poniżej znajduje się kod polecenia mysqldum
mysqldump -h RDS instance endpoint \
-u user \
-p password \
--port=3306 \
--single-transaction \
--routines \
--triggers \
--databases database database2 \
--compress \
--compact | mysql \
-h MySQL host \
-u master user \
-p password \
--port 3306