Jaki jest zalecany sposób wykonania kopii zapasowej bazy danych MySQL / Amazon RDS na S3?

31

Mam do tego dwa cele:

  1. Aby mieć kopię zapasową poza siedzibą w przypadku problemu regionalnego z usługami Amazon Web Services.
  2. Aby skopiować dane produkcyjne z produkcyjnego konta rozliczeniowego na konto rozliczeniowe w wersji beta.

Obecnie nie wydaje się, aby Amazon obsługiwał jeden z tych dwóch przypadków użycia po wyjęciu z pudełka.

Widziałem wspomniane mysqldump i xtrabackup (patrz formularz post).

Widziałem także bardziej skomplikowany proces ( tutaj udokumentowany )

  1. Nowy serwer RDS na źródłowym koncie rozliczeniowym (prod) został wydzielony z ostatniej kopii zapasowej.
  2. Nowa instancja EC2 jest przetwarzana i ma dostęp do serwera RDS w kroku 1.
  3. mysqldump służy do tworzenia kopii zapasowej tej bazy danych.
  4. Kopia zapasowa jest kopiowana do lokalizacji zewnętrznej (S3?).
  5. Na osobnym koncie i / lub regionie, nowy serwer RDS jest rozpędzany.
  6. Zrzut bazy danych jest importowany.

Wskazówki i sugestie są mile widziane.

Peter Stephens
źródło

Odpowiedzi:

22

Zalecanym sposobem tworzenia kopii zapasowych RDS są automatyczne kopie zapasowe i migawki DB . Migawki DB są zasadniczo takie same jak migawki EBS, które są przechowywane w S3 za kulisami, ale są dostępne tylko w tym samym regionie.

Jeśli potrzebujesz tolerancji na uszkodzenia między regionami (dobry plan!), Nie ma sposobu na przywrócenie danych w innym regionie bez zrobienia tego „na twardo” z mysqldump. Alternatywą jest tworzenie kopii zapasowych za pomocą mysqldump (powolne i okropne dla dowolnego zestawu danych o rozsądnych rozmiarach) lub konfigurowanie własnego urządzenia podrzędnego opartego na EC2 w innym regionie i tworzenie kopii zapasowej za pomocą dowolnej dostępnej metody (xtrabackup, migawki EBS itp.). Jednak wrócisz do zarządzania własnymi instancjami MySQL, więc równie dobrze możesz całkowicie zrezygnować z RDS.

Za moje pieniądze RDS nie zapewnia absolutnie żadnych korzyści w żaden sposób i ma wiele wad w wydajności, elastyczności i niezawodności. Chciałbym zadać sobie pytanie, jaką wartość ma dla Ciebie RDS.

Aaron Brown
źródło
Dla moich obecnych potrzeb mysqldump może działać dobrze. Nie oczekuję ogromnych zbiorów danych i generalnie nie potrzebuję, aby dane były przenoszone zbyt szybko. Mam nadzieję, że RDS będzie obsługiwać funkcję uruchamiania nowego serwera z migawki na innym koncie. Inną przydatną funkcją byłoby importowanie / eksportowanie migawek z Amazon za pomocą S3 lub ich serwera importu / eksportu. W każdym razie dzięki za odpowiedź.
Peter Stephens
4
Migawki RDS można teraz kopiować do innych regionów. Szczegółowe informacje można znaleźć w tym ogłoszeniu i dokumentacji .
Shelley
9

Miałem ten sam problem. Moim rozwiązaniem było napisanie prostego skryptu bash . Jest jednak ograniczony do jednego regionu.

Oto skrypt, o którym mowa:

#!/bin/bash
NOWDATE=`date +%Y-%m-%d`
BACKUPNAME="$NOWDATE.sql.gz"

echo "Creating backup of database finances to $BACKUPNAME"
mysqldump user=user password=password database_name | gzip -9 > $BACKUPNAME

echo "Succesfully created database backup"

echo "Uploading backup to Amazon S3 bucket…"
s3cmd put $BACKUPNAME s3://path/to/file/$BACKUPNAME

echo "Successfully uploaded backup to S3"

echo "Deleting backup file…"
rm $BACKUPNAME

echo "Done"
Jeevan Dongre
źródło
Bardzo polecam - pojedynczą transakcję podczas uruchamiania mysqldump
user1250
7

AWS RDS obsługuje teraz kopiowanie migawek między regionami i kontami, co pozwoli Ci osiągnąć swoje cele za pomocą RDS.

Nadal musisz użyć metody skryptu zrzutu, aby w tym momencie uzyskać kopie zapasowe na S3. Możliwość użycia S3-IA lub Glacier byłaby dobra pod względem oszczędności kosztów, ponieważ koszty tworzenia kopii zapasowych RDS są na poziomie S3 Standard lub wyższym (zależnie od db).

Mike Lapinskas
źródło
1
Istnieje miękki limit 100 ręcznych migawek dla regionu na konto.
Juda