Jaki jest zalecany sposób aktualizacji bazy produkcyjnej Heroku Postgres do wersji 9.2 z minimalnym przestojem? Czy możliwe jest użycie obserwatora, czy też powinniśmy wybrać trasę pgbackups/snapshots?aktualizacja do PostgreS na Heroku
Odpowiedz
Do logical followers in 9.4 będziesz musiał zrzucić i przywrócić (z powodów opisanych przez Craiga). Możesz to uprościć za pomocą pgbackups: transfer. Bezpośredni transfer jest szybszy niż zrzutu i przywracania, ale pamiętaj, że nie będziesz mieć migawki, którą chcesz zachować.
Poniższy scenariusz to w zasadzie Heroku z Using PG Backups to Upgrade Heroku Postgres Databases z modyfikacją dla pgbackups:transfer. (Jeśli istnieje wiele instancji, powiedzmy serwera testowego, należy dodać „-a” lub „--remote” do każdej linii Heroku, aby określić, który serwer.)
# get the pgbackups plugin
heroku plugins:install git://github.com/heroku/heroku-pg-extras.git
# provision new db
heroku addons:add heroku-postgresql:crane --version=9.2
# wait for it to come online, make note of new color
heroku pg:wait
# prevent new data from arriving during dump
heroku ps:scale worker=0 web=0
heroku maintenance:on
# copy over the DB. could take a while.
heroku pgbackups:transfer OLDCOLOR NEWCOLOR
# promote new database as default for DATABASE_URL
heroku pg:promote NEWCOLOR
# start everything back up and test
heroku ps:scale worker=N web=N
heroku maintenance:off
heroku open
# remove old database
heroku addons:remove HEROKU_POSTGRESQL_OLDCOLOR
Zauważ, że jeśli porównać swój rozmiar danych pomiędzy nimi , nowy może być znacznie mniejszy ze względu na wydajność w wersji 9.2. (Moje 9,2 stanowiło około 70% liczby 9.1).
Obserwatorzy Heroku to, AFAIK, serwery replikacji strumieniowej PostgreSQL. Oznacza to, że nie możesz ich używać w różnych wersjach, musisz mieć bazy danych kompatybilne z binarnymi.
Te same techniki powinny być stosowane jako zwykłe PostgreSQL, z tym wyjątkiem, że możesz nie być w stanie używać pg_upgrade
na Heroku. Wymaga to dostępu do powłoki (ssh, itp.) Jako użytkownika postgres
w systemie, który hostuje bazę danych, więc wątpię, czy jest to możliwe na Heroku, chyba że dostarczyłeś narzędzie do uruchomienia dla ciebie pg_upgrade
. Nie mogę znaleźć wielu informacji na ten temat.
Najprawdopodobniej będziesz musiał skorzystać z Slony-I, Bucardo lub innego rozwiązania replikacji opartego na wyzwalaczach, aby dokonać aktualizacji, chyba że możesz znaleźć sposób na uruchomienie pg_upgrade
w instancji bazy danych Heroku. Ogólną ideą jest skonfigurowanie nowej instancji 9.2, użycie Slony do sklonowania danych z instancji 9.1 do niej, a po ich pełnej synchronizacji zatrzymaj instancję 9.1, usuń wyzwalacze Slony i przełącz klientów na 9.2 wystąpienie.
Wyszukaj więcej informacji na temat "sloganu aktualizacji postgresql" itp., Zobacz, jak idziesz.
Craig ma rację, są to repliki strumieniowe: nie możesz użyć tej trasy do aktualizacji. Obecnie najlepszym podejściem byłoby użycie polecenia pgbackups: transfer dostępnego w wtyczce pg-extras (https://github.com/heroku/heroku-pg-extras#pgbackupstransfer) w celu szybkiego transferu danych (gdy jesteś aplikacja jest w trybie konserwacji). W przyszłości planujemy wspierać łatwiejsze opcje aktualizacji. – hgmnz
@ hgmnz Dlaczego nie używać [heroku-pgupgrade] (https://github.com/hgmnz/heroku-pgupgrade)? – thejaz
@thejaz aha! Cóż, ponieważ jest obecnie w wersji beta i zdarza się, że jest zepsuty (po stronie serwera) aż do odwołania. Gdy będzie gotowy na najlepszy czas, dopilnuję, aby był on zapisany na tym repo. – hgmnz
- 1. Ustaw lokalizację na Heroku Postgres
- 2. Połączenie odmówiono z Go + Postgres na Heroku
- 3. Upgrade Heroku Postgres DB plan
- 4. Postgres na Heroku i zrzut pojedynczego stolika do pliku zrzutu
- 5. Aktualizacja PostgreS z lewej strony
- 6. dostęp do pg_largeobject na heroku
- 7. Uzyskiwanie dostępu do instancji Heroku Postgres z EC2
- 8. Programowalny sposób zarządzania samodzielnymi bazami danych na Heroku Postgres
- 9. Jak usunąć bazę danych postgres z heroku
- 10. Heroku/Postgres Błąd: liczba całkowita z zakresu
- 11. Heroku Postgres: To połączenie zostało zamknięte
- 12. Nie można zaimportować do bazy danych postgres heroku z dumpa
- 13. Jak podłączyć PyCharm do bazy danych postgres Heroku
- 14. Czy używanie Heroku Postgres jest bezpieczne przed atakami MITM?
- 15. Heroku Postgres - zakończenie zawieszonego zapytania (bezczynność w transakcji)
- 16. Jak uaktualnić bazę danych postgres z 9.3 na 9.4 na heroku?
- 17. Running Ruby 1.9.2 na Heroku
- 18. Nie można uruchomić testów Ruby on Rails na bazach danych Postgres obsługiwanych przez Heroku.
- 19. Jak używać node-postgres na serwerze?
- 20. Postgres: Konwertuj varchar na tekst
- 21. Aktualizacja Pythona do wersji 2.7 na OSX
- 22. Aktualizacja jq do 1.5 na Ubuntu
- 23. Powolne zapytanie o Postgres na Heroku nie jest przerywane przez timeout-timeout
- 24. Postgres - transponuj wiersze do kolumn
- 25. Używanie Prawn na Heroku
- 26. Akceptowanie Bitcoinów na Heroku
- 27. Zainstaluj FFMPEG na Heroku
- 28. Aktualizacja Pythona na Maca
- 29. Zainstaluj devDependencies na Heroku
- 30. Zainstaluj freetds na Heroku
Ponieważ (najwyżej ocenione) rozwiązanie ma zastosowanie do wersji 9.2 i 9.3, można rozważyć usunięcie numeru wersji z tytułu pytania. –