Przejdź do forum
[HOWTO]Przenosimy b...
 
Powiadomienia
Wyczyść wszystko

[HOWTO]Przenosimy bazę PostgrSQL na inną partycję.

34 Posty
13 Użytkownicy
0 Reakcje
3,747 Wyświetlenia
dragoste
Dołączył: 07.05.2010

Wiele razy padało pytanie, co zrobić, gdy na partycji C:\ ( gdzie zapewne macie zainstalowanego PostgreSQLa) zaczyna brakować miejsca. Też tak miałem i dzisiaj stwierdziłem, że trzeba coś z tym zrobić, więc trochę poszukałem w internecie.
Znalazłem coś takiego. Nie do końca na temat, ale na podstawie tego możemy wykombinować, jak osiągnąć nasz cel. Sprawa tak na prawdę jest prostsza, niż tam opisane.
Tak więc do rzeczy.

Operację wykonywałem na systemie Windows 7 Professional, oraz serwerze PostgreSQL 8.3. Jednak w innych Windowsach/PostgreSQLach powinno wyglądać to tak samo.

1. Znajdujemy nazwę usługi PostgrrSQLa.
W wersji 8.3 usługa nazywa się pgsql-8.3, w innych wersjach zapewne będzie analogicznie, jednak dla pewności sprawdźmy jak to wygląda.
Aby tego dokonać uruchamiamy Wiersz poleceń jako administrator. Nie zamykamy go po tym, gdyż będziemy go używać do końca.
Start->Akcesoria->Wiersz poleceń->PPM->"Uruchom jako administrator".
Następnie wpisujemy:
sc query
I na liście znajdujemy PostgreSQLa. Interesuje nas pole SERVICE_NAME z jego opisu.

2. Zatrzymujemy usługę PostgreSQLa.
Aby zatrzymać usługę wpisujemy:
sc stop pgsql-8.3

Uwaga! Jeśli w poprzednim kroku okazało się, że usługa nazywa się inaczej, tutaj podajemy jej nazwę zamiast pgsql-8.3.

3. Przenosimy dane na inną partycję.
Dane znajdują się domyślnie w folderze
C:\Program Files\PostgreSQL\8.3\data
chyba, że inaczej zainstalowaliście PostgreSQL. Ale jeśli to zrobiliście, to na pewno było to celowe, więc się odnajdziecie.
Kopiujemy cały folder data w miejsce, gdzie mamy zapas miejsca. Na przykład D:\PostgrSQLdata\, tak więc nasza nowa ścieżka do folderu data, to:
D:\PostgreSQLdata\data

Uwaga! Celowo zaznaczyłem słowo kopiujemy. Ostatecznie te dane usuniemy dopiero po upewnieniu się, że migracja na inną partycję zakończyła się powodzeniem.

4. Usuwamy usługę postgresqla.
Teraz usuwamy usługę wpisując ww wcześniej otwartym wierszu poleceń:
pg_ctl unregister -N "pgsql-8.3"

Oczywiście nazwa usługi odpowiednio taka sama, jak w poprzednim kroku.

5. Tworzymy nową usługę.
Pozostało już tylko utworzyć nową usługę z parametrem wskazującym na nową ścieżkę do folderu data.
Aby do zrobić korzystamy znów z wcześniej otworzonego Wiersza poleceń.
Aby utworzyć usługę wpisujemy:
pg_ctl register -N "pgsql-8.3" -U <username> -P <password> -D <path>
Czyli w moim przypadku to będzie:
pg_ctl register -N "pgsql-8.3" -U pgsql -P haslo -D D:\PostgreSQLdata\data

Uwaga! Usługę tworzymy o takiej samej nazwie, jak ta, którą usunęliśmy!

5. Uruchamiamy usługę.
W wierszu poleceń wpisujemy:
sc start pgsql-8.3
Nazwa usługi oczywiście może być inna jeśli wcześniej tak się okazało.

Teraz uruchamiamy PT3 HMa czy Elephanta i sprawdzamy, czy wszystko działa. Jeśli tak, możemy usunąć stary folder data zwalniając miejsce na naszej partycji systemowej.

Nie odpowiadam za zamieszanie w razie niepowodzenia całej operacji!

I tak powstał Chocapic!
Enjoy.


Odpowiedz
Cytat
33 odpowiedzi
avril1991
Dołączył: 20.03.2009

Witam!

Dzięki dragoste za poradnik skonsultuje się i może podwiesimy ten temat.

Pozdrawiam


Odpowiedz
Cytat
kuczenty
Dołączył: 11.12.2009

cześć dragoste,
trochę odświeże, bo nie moge sobie poradzic. Wszystko cacy, skopiowalem juz folder data na wolna partycje, ale utknalem na punkcie 4, bo nie chce rozpoznac 'komendy' pg_ctl.

Mam W7 prof, posgresql 8.3.9, wiersz polecen uruchamiam jako admin/


Odpowiedz
Cytat
kuczenty
Dołączył: 11.12.2009

tilt postawil sprawe jasno - format
wszystko juz cacy :nh


Odpowiedz
Cytat

Tez mi nie chce rozpoznac tej komendy, na xp, any1 help?


Odpowiedz
Cytat
dragoste
Dołączył: 07.05.2010

W takim razie musisz najpierw przejść do katalogu postgesqla w którym są te programy.
Robimy to komendą cd

Pozdrawiam.


Odpowiedz
Cytat

1Tylko data kopiujemy czy wszystkie pliki? 3 krok

2Sorry, nie umiem korzystac z wiersza polecen. Ogarniam jak sie przechodzi do katalogow, ale nie wiem o jaki chodzi....C:/....../8.4 ?? Tam jest 9 folderow+ uninstal-postgresql i jakis plik wsadowy. Zrobilem to w bin.

3Ten piaty krok to trzeba przejsc do katalogu na innej partycji zeby to uruchomic?

Prosze o wyrozumialosc :f_biggrin:

Edit: Sprobowalem to zrobic i teraz otwierajac Hm mam komunikat "....Failed to establish connection to '...'.
Daje connect i wyskakuje info, ze nie mozna sie polaczyc + zapytanie "would you like to have Hm attempt to start the service?"
-yes
-sorry hm was unable to start service....
...


Odpowiedz
Cytat
dragoste
Dołączył: 07.05.2010

Edit: Sprobowalem to zrobic i teraz otwierajac Hm mam komunikat "....Failed to establish connection to '...'.

Jeśli któregoś kroku nie zrobisz, lub zrobisz nieprawidłowo, to baza nie zadziała. Nie można robić na "mniej więcej".

1Tylko data kopiujemy czy wszystkie pliki? 3 krok

Kopiujemy cały folder data w miejsce, gdzie mamy zapas miejsca.

3Ten piaty krok to trzeba przejsc do katalogu na innej partycji zeby to uruchomic?

z folderu instalacji postgresql/bin, tak samo jak wykonywałeś komendę unregister.

Pozdrawiam.


Odpowiedz
Cytat

Zrobilem teraz poprawnie, ale juz pewnie cos namieszalem, bo dalej blad wyskakuje... Napisalem do supportu Hma, odpowiedz-olewka.

Pewnie format najlatwiejsza opcja, co?


Odpowiedz
Cytat
dragoste
Dołączył: 07.05.2010

Support HMa raczej Ci w tym nie pomoże.

Nie przesadzajmy. Format to nie rozwiązanie na każdy problem.
Masz usługę PostgreSQLa na liście? Działa? Da się ją włączyć?

Pozdrawiam.


Odpowiedz
Cytat

Jak teraz wpisuje sc query nie pojawia mi sie postgresql na liscie.
Jak w punkcie 4tym przechodze do katalogi bin i daje "unregister" to dostaje info ze"pg_ctl: service "postgresql-8.4" not registered". Daje pozniej register tez w tym bin- pg_ctl register -N "postrgesql-8.4" -N xxx -P xxx -D e:\posgresql\8.4\data
Dostaje info pg_ctl: service "postgres" already registered
Daje start tez z bin i dostaje info [SC] StartService: OpenService FAILED 1060: Okre


Odpowiedz
Cytat
Marjed
Dołączył: 26.08.2009

cały dzień się z tym męczę i się poddaję.
Nie wypalił pkt 5. Po usunięciu usługi, nowa na innym dysku nie chciała się stworzyć :facepalm:
Lipa


Odpowiedz
Cytat
musashi87
Dołączył: 14.03.2008

Napisane przez Marjed
cały dzień się z tym męczę i się poddaję.
Nie wypalił pkt 5. Po usunięciu usługi, nowa na innym dysku nie chciała się stworzyć :facepalm:
Lipa

IMO musisz najpierw dać uprawnienia do tego foldera użytkownikowi posgres.
Tego w tym poradniku brakuje a praktycznie w 75% przypadków jest to konieczne.


Odpowiedz
Cytat
Marjed
Dołączył: 26.08.2009

a jak nadać te uprawnienia?


Odpowiedz
Cytat
musashi87
Dołączył: 14.03.2008

Napisane przez Marjed
a jak nadać te uprawnienia?

zalezy jaki system generalnie musisz w opcjach folderow wylaczyc kreatora udostepniania i potem we wlasciwosciach folderu powinienes miec zakladke zabezpieczenia i tam musisz dodać użytkownika posgres i nadać mu pełną kontrolę nad folderem


Odpowiedz
Cytat
musashi87
Dołączył: 14.03.2008

coś takiego:


Odpowiedz
Cytat

Mi to juz wszystko smiga, ale po prostu zrobilem to kilka razy :P Poszukalem cos tam na innych forach i juz hula. Na pewno trzeba dac ostrzezenie, ze nie jest to dla przecietnego uzytkownika komputera, bo mozna sie nameczyc.


Odpowiedz
Cytat
musashi87
Dołączył: 14.03.2008

Napisane przez buejk
Mi to juz wszystko smiga, ale po prostu zrobilem to kilka razy :P Poszukalem cos tam na innych forach i juz hula. Na pewno trzeba dac ostrzezenie, ze nie jest to dla przecietnego uzytkownika komputera, bo mozna sie nameczyc.

Prawda. Ale jeśli ktoś ma jako takie pojęcie o tym co robi to nie jest to operacja strasznie trudna. U mnie przenosiny bazy na dysk SSD zajeły kilkanaście minut i najwiekszy problem miałem właśnie z tym, że nie chciała mi się uruchomić usługa bo użytkownik postgres nie miał uprawnień do modyfikacjipartycji, na którą przeniosłem bazę.


Odpowiedz
Cytat
Marjed
Dołączył: 26.08.2009

Dzięki Musashi,
Teraz udało się bez problemu _thumbsup:


Odpowiedz
Cytat
wantmemoney
Dołączył: 25.11.2010

Napisane przez buejk
Jak teraz wpisuje sc query nie pojawia mi sie postgresql na liscie.

mam to samo
mam viste i postgres8.4


Odpowiedz
Cytat