ďťż
 
mysql - replikacja w ramach tego samego serwera (lub bazy) ďťż
 
mysql - replikacja w ramach tego samego serwera (lub bazy)
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

mysql - replikacja w ramach tego samego serwera (lub bazy)



Plast - 11-11-2006 00:55
mysql - replikacja w ramach tego samego serwera (lub bazy)
  Witam

Problem jest nastepujacy: czy da sie ustawic tak replikacje, zeby w
obrebie tego samego serwera MySQL replikowac tabele X z bazy A do bazy
B?

Moje poszukiwania i wnioski w tym temacie postuje ponizej, gdybys ktos
zechcial rzucic na to okiem i ewentualnie wskazac bledy w
rozumowaniu/skrytykowac/zasugerowac cos innego/etc. to bede wdzieczny.

==
Na podstawie zdobytej wiedzy (stricte podrecznikowej poki co,
niestety) wymyslilem sposob, ktory byc moze umozliwilby takie 'cudo'
:), ale nie mam pojecia czy to zadziala... dodam, ze zakladam, ze
pracuje na Linuxie, jesli ma to jakies znaczenie (raczej nie powinno).

Generalnie wydaje mi sie, ze nie da sie replikowac czegokolwiek w
ramach tego samego serwera mysql. Powodow jest kilka, ponizej dwa
najwazniejsze:

1) Przy korzystaniu z mechanizmu replikacji kazdy serwer, w tym wiec i
master i wszystkie slave'y, musza miec unikalny numer 'server-id'
podany w konfigu. Ten numer jest wykorzystywany przez mechanizm
replikacji i mechanizm ten nie bedzie dzialal, jesli 'server-id'
mastera slave'a beda takie same.

2) Replikacja wykorzystuje 'binary log' master serwera. W 'rules' tego
binary logu ustawia sie, ktore bazy danych/tabele maja byc brane pod
uwage (na slave mozna dodatkowo ustawic co ignorujemy). Tutaj pojawia
sie pierwszy i od razu powazny problem - nie ma takiej 'rule' (czyt.
nie znalazlem), ktora pozwolilaby ustawic jakakolwiek zmiane nazwy
bazy/tabeli przy replikacji. Po prostu tabela X z bazy A przy
replikacji na drugi serwer rowniez trafi do bazy A i bedzie sie
rowniez nazywac X.

Oczywiscie mozna sprobowac obejsc te problemy i na tym opiera sie moje
rozwiazanie teoretyczne:

Ad.1) Tego problemu pozbyc sie mozna chyba tylko uruchamiajac po
prostu drugi serwer mysql, oczywiscie na tej samej maszynie, drugi
proces na osobnym porcie. Jest to opisane w dokumentacji:

http://dev.mysql.com/doc/refman/4.1/...e-servers.html

Jesli sie wczytac w dokumentacje to oni tam odradzaja uruchamianie
wiecej niz jednego serwera operujacego na tym samym katalogu z danymi,
a u mnie tak to wlasnie by musialo niestety wygladac, no bo ma to byc
ta sama baza danych. Oczywiscie opisywane przez nich problemy przy
odpowiednich ustawieniach i zalozeniach wcale nie musialyby wystapic u
mnie, ale nie mozna tego wykluczyc.

Drugi serwer pozwoli na zrobienie jednego serwera masterem, drugiego
slavem i ustawienie dwoch roznych server-id. Nigdzie nie wyczytalem,
ze replikacja nie moze sie odbywac na tej samej fizycznie maszynie,
tzn. ze jest sprawdzany przez ten mechanizm nie tylko server-id, ale i
np. IP maszyn, wiec istnieje duza szansa, ze ten sposob zadziala.

Ad.2) Tutaj z braku rozwiazan 'wbudowanych' wymyslilem posluzenie sie
pewna 'sztuczka'.

Mianowicie mozna sprobowac ustawic dla serwera slave INNY katalog z
danymi niz dla servera master, ale w tym INNYM katalogu z baza, ktorej
tabele chcemy replikowac, wstawic zamiast prawdziwych plikow, symlinki
o tych samych nazwach, ktore beda prowadzic do... jakiejs innej bazy
na masterze! :) W ten sposob osiagniemy cos takiego:
- master bedzie wysylal zmiany do slave'a,
- slave bedzie je zapisywal do 'tej samej bazy/tabeli' w 'swoim'
katalogu z danymi, a tak naprawde, dzieki symlinkom, do innej bazy w
katalogu z danymi... serwera master.

Ma to sens?

--
"...I don't know half of you half as well as I should like
and I like less than half of you half as well as you deserve..."





Filip Rembiałkowski - 12-11-2006 00:36

  Plast wrote:
> Witam
>
> Problem jest nastepujacy: czy da sie ustawic tak replikacje, zeby w
> obrebie tego samego serwera MySQL replikowac tabele X z bazy A do bazy
> B?

jeśli w ramach 1 serwera to zrób po prostu własne triggery do replikacji
(after insert, after update, after delete).

use db1

CREATE TRIGGER repli AFTER INSERT ON X
FOR EACH ROW
INSERT INTO db2.X SELECT * FROM X WHERE id=NEW.id;




Plast - 12-11-2006 00:39

  On Thu, 21 Sep 2006 11:12:22 +0200, Filip Rembiałkowski
<plk.zuber@gmail.com> wrote:

>jeśli w ramach 1 serwera to zrób po prostu własne triggery do replikacji
>(after insert, after update, after delete).
>
>use db1
>
>CREATE TRIGGER repli AFTER INSERT ON X
> FOR EACH ROW
> INSERT INTO db2.X SELECT * FROM X WHERE id=NEW.id;

Dzieki. Niestety na serwerze jest mysql 4.1, a triggery sa dostepne o
5.x o ile sie orientuje :(.

--
"...I don't know half of you half as well as I should like
and I like less than half of you half as well as you deserve..."
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL [mysql 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?= MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com