[pgsql] szybkie podmienienie bazy danych
ethanak - 14-11-2006 00:11
[pgsql] szybkie podmienienie bazy danych
Witam.
Mam sytuację taką:
Maszyna pierwsza - wyszukiwarka. Baza danych tylko do odczytu. Pracuje jak sama nazwa wskazuje jako serwer dla wyszukiwarki.
Maszyna druga - robot. Robot rozpoczyna pracę po południu, indeksuje strony przez całą noc, rano robi sobie swoje magiczne przeliczenia. Wyniki pcha do swojej prywatnej bazy jako że w czasie pracy indeksera wyszukiwarka podłączona do jego bazy potrafi wygenerować bardzo dziwne rezultaty.
Po wykonaniu niezbędnych czynności powinien wykonać się jakiś skrypt, który przerzuci bazę z robota do wyszukiwarki. Problem jest taki, że baza jest dość pokaźna, przerzucenie (pg_restore) trochę trwa, a zależy mi na tym aby czas gdy wyszukiwarka nie działa był jak najkrótszy.
Wymyśliłem sobie coś takiego:
a) na wyszukiwarce tworzę nową bazę danych o innej nazwie i wrzucam do niej świeżego dumpa z robota b) usuwam bazę wyszukiwarki (w tej chwili wyszukiwarka przez chwilę nie działa, ale jest to chwila) c) zmieniam nazwę nowej bazy na wyszukiwarce na właściwą.
Teoretycznie powinno działać gdyby nie fakt, że w chwili gdy chcę usunąć starą bazę mogą być otwarte połączenia i cały misternie uknuty plan pójdzie w diabły, bo baza się nie usunie.
Pytanie więc - jak to zrobić najprościej i najbezpieczniej?
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
herakles - 14-11-2006 00:11
ethanak wrote:
> Witam. > > Mam sytuację taką: > > Maszyna pierwsza - wyszukiwarka. Baza danych tylko do odczytu. Pracuje > jak sama nazwa wskazuje jako serwer dla wyszukiwarki. > > Maszyna druga - robot. Robot rozpoczyna pracę po południu, indeksuje > strony przez całą noc, rano robi sobie swoje magiczne przeliczenia. > Wyniki pcha do swojej prywatnej bazy jako że w czasie pracy indeksera > wyszukiwarka podłączona do jego bazy potrafi wygenerować bardzo dziwne > rezultaty. > > Po wykonaniu niezbędnych czynności powinien wykonać się jakiś skrypt, > który przerzuci bazę z robota do wyszukiwarki. Problem jest taki, że > baza jest dość pokaźna, przerzucenie (pg_restore) trochę trwa, a zależy > mi na tym aby czas gdy wyszukiwarka nie działa był jak najkrótszy. > > Wymyśliłem sobie coś takiego: > > a) na wyszukiwarce tworzę nową bazę danych o innej nazwie i wrzucam do > niej świeżego dumpa z robota > b) usuwam bazę wyszukiwarki (w tej chwili wyszukiwarka przez chwilę nie > działa, ale jest to chwila) > c) zmieniam nazwę nowej bazy na wyszukiwarce na właściwą. > > Teoretycznie powinno działać gdyby nie fakt, że w chwili gdy chcę usunąć > starą bazę mogą być otwarte połączenia i cały misternie uknuty plan > pójdzie w diabły, bo baza się nie usunie. > > Pytanie więc - jak to zrobić najprościej i najbezpieczniej? > > ethanak
Te chasła powinny ci pomóc: 1) Odłączony na chwilę klaster 2) Zmiana definicji viewsa. 3) Przełączenie wyszukiwarki na inne tabele/inną bazę.
Wybór rozwiązania zależy od tego jak bardzo modyfikowana jest baza wyszukiwarki.
WoWaW - 14-11-2006 00:11
A moze tak:
a) tworzysz nowa baze - wrzucasz dumpa b) nie ususuwasz "starej" bazy c) zmieniasz nazwe ale nie bazy - tylko nazwe bazy, do ktorej sie laczysz w wyszukiwarce (config). Mozesz to zautomatyzowac - jakas data w czesci nazwy bazy - albo cos takiego d) po pewnym czasie, gdy klienci lacza sie juz z nowa baza - - wywalasz stara
> Wymyśliłem sobie coś takiego: > > a) na wyszukiwarce tworzę nową bazę danych o innej nazwie i wrzucam do > niej świeżego dumpa z robota > b) usuwam bazę wyszukiwarki (w tej chwili wyszukiwarka przez chwilę nie > działa, ale jest to chwila) > c) zmieniam nazwę nowej bazy na wyszukiwarce na właściwą. > > Teoretycznie powinno działać gdyby nie fakt, że w chwili gdy chcę usunąć > starą bazę mogą być otwarte połączenia i cały misternie uknuty plan > pójdzie w diabły, bo baza się nie usunie. > > Pytanie więc - jak to zrobić najprościej i najbezpieczniej? > > ethanak
ethanak - 14-11-2006 00:56
WoWaW wrote: [...] > c) zmieniasz nazwe ale nie bazy - tylko nazwe bazy, do ktorej sie > laczysz w wyszukiwarce (config). Mozesz to zautomatyzowac - jakas data w > czesci nazwy bazy - albo cos takiego
Myślałem że da się bez operacji na trzeciej maszynie (Apache) - ale ZTCW chyba nie.
I tak zrobię - bez kombinowania.
Dzięki!
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
Mikolaj Rydzewski - 14-11-2006 00:56
ethanak <sweethanak@buziaczek.pl> wrote:
> Myślałem że da się bez operacji na trzeciej maszynie (Apache) - ale ZTCW > chyba nie.
Poczytaj jeszcze o http://pgpool.projects.postgresql.org/
-- Mikolaj Rydzewski <miki@ceti.pl> http://ceti.pl/~miki/ PGP KeyID: 8b12ab02 There are three kinds of people: men, women, and unix.
ethanak - 14-11-2006 00:56
Mikolaj Rydzewski wrote: [...] > Poczytaj jeszcze o http://pgpool.projects.postgresql.org/ > O, mniam! Co prawda nie do tego mojego projektu (bo już napisałem kod do zmiany konfiga) ale do następnego jest po prostu IDEALNY!
ethanak -- mailto=window.atob('ZXRoYW5ha0Bwb2xpcC5jb20='); /* Pisze człowiek ambitnie, a tu przychodzi prostak i wszystko rozumie. To jest ewidentna bezczelność! S. Friedmann/J. Kofta */
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
[laik]Jak =?ISO-8859-2?Q?stworzy=E6/zaczac_tworzyc__ma=B3=B1?==?ISO-8859-2?Q?__baz=EA_danych_na_potrzeby_www=3F?=
[mysql] przenoszenie danych =?ISO-8859-2?Q?mi=EAdzy_tabelami_?==?ISO-8859-2?Q?w_r=F3=BFnych_bazach?=
Ksiazka - "Podstawowy =?ISO-8859-2?Q?wyk=B3ad_z_system=F3w_?==?ISO-8859-2?Q?baz_danych=22?=
Zrywanie =?ISO-8859-2?Q?po=B3aczen_z_baza_danych_-_pos?==?ISO-8859-2?Q?tgresql_=3C-=3E_odbc?=
=?iso-8859-2?Q?=5BSQL_Server_2000=5D_uprawnienienia_do_u=BFyw ania_widoku_?==?iso-8859-2?Q?opartego_na_tabeli_z_innej_bazy?=
Dwie bazy czy dwie tabele?
[PHP i MySQL] Wstawianie =?ISO-8859-2?Q?rekord=F3w_do_bazy_?==?ISO-8859-2?Q?a_z=B3e_kodowanie?=
[mssql] insert do tabeli na podstawie danych z innej tabeli
=?ISO-8859-2?Q?=5Bmysql=5D_synchronizacja_struktury_bazy_?==? ISO-8859-2?Q?lokalnej_ze_zdaln=B1?=
zanotowane.pldoc.pisz.plpdf.pisz.plfantazia.htw.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|