Portál AbcLinuxu, 10. května 2025 10:09

Dotaz: Propojení dvou mysql servrů na jedno úložiště dat

22.3.2011 14:04 neattom
Propojení dvou mysql servrů na jedno úložiště dat
Přečteno: 660×
Odpovědět | Admin
Zdravíčko,

potřeboval bych poradit s jedním problémem.

Na domácím PC mám nainstalovaný balíček EasyPHP (tam provozuji PHP4 a Mysql) a Uniserver (tam provozuji PHP5 a Mysql).

Potřeboval bych nějak nastavit, aby se databáze Mysql na Uniseveru načítala data z úložiště databáze EasyPHP. V konfiguračním souboru my.ini jsem nastavil datadir k úložišti dat mysql pro EasyPHP.

Každopádně když spustím server Uniserver a pokusím se přes webové rozhraní připojit k phpmyadmin hodí mi to tuto chybu: #2002 - The server is not responding (or the local MySQL server's socket is not correctly configured)

Už jsem prošel snad všechny fóra, ale řešení jsem nikde nenašel, můžete mi prosím poradit??

Díky moc za rady.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

22.3.2011 15:31 Sten
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Žádná rozumná databáze nedovolí používat jedno datové úložiště dvěma procesům, protože ty procesy spolu nijak nekomunikují a mění si data pod rukama, což nemůže skončit jinak než velmi rychlou korupcí dat.

Pokud chcete mít dvě SQL databáze s jedněmi daty, použijte master-master replikaci, ale pozor na to, že tato replikace obsahuje mnohá úskalí (třeba auto_increment je potřeba specificky nastavit a nefunguje stejně jako u jedné databáze).

Doporučuji použít jednu databázi nebo, pokud to EasyPHP a Uniserver podporují, master-slave replikace (a tedy tři databáze, jednu na čtení pro každý framework a jednu společnou zapisovací).
22.3.2011 15:33 Sten
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
U té master-slave replikace samozřejmě můžete použít i jenom dvě databáze, záleží, co od toho chcete.
22.3.2011 17:05 a1bert | skóre: 23
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
Žádná rozumná databáze nedovolí používat jedno datové úložiště dvěma procesům, protože ty procesy spolu nijak nekomunikují a mění si data pod rukama, což nemůže skončit jinak než velmi rychlou korupcí dat.
a proto existuji mechanismy jak tu komunikaci umoznit napr. externi zamky, ktere mysql umi (ale pouziti nedoporucuje, kvuli degradaci vykonu)..

takze udelat to jde ale doporuciji nastudovat dokumentaci protoze to ma jista uskali....
22.3.2011 20:28 neattom
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
No jenom bych chtěl upozornit, že oba servery (EasyPHP a Uniserver) nebudou zaplé zároveň, buďto poběží jeden nebo druhý, nikdy oba zároveň. Tudíž vždy bude do databáze přistupovat jen jeden proces.
23.3.2011 00:11 Sten
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
Proč tedy chcete mít dvě ty databáze? Potom vám úplně bude stačit jenom jedna.
24.3.2011 13:14 frr | skóre: 34
Rozbalit Rozbalit vše Re: Propojení dvou mysql servrů na jedno úložiště dat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Aha, to jsou dva různé "prefabrikované webservery typu WAMP". Takže v každém je přibaleno nějaké PHP a nějaké MySQL. Potřebujete testovat svoji práci pod dvěma různými verzemi PHP (4 a 5)?

Obecně je IMO kravina chtít, aby ty dvě instance/instalace MySQL používaly stejná data, i na střídačku. Pokud by to byly obě shodné verze (možná nejlíp shodný build) tak snad ano (pak ovšem střídačka postrádá smysl), ale jinak bude lepší, pokud to opravdu chcete sjednotit, tak si nechat jenom jedno z obou MySQL = tu verzi, která splní požadavky obou WAMP frameworků, tzn. patrně tu novější z obou verzí. Na úrovni SQL resp. MySQL by snad kompatibilita mohla fungovat líp než na úrovni storage backendu - přinejmenším běžící instance MySQL z definice podporuje multi-user provoz a případně i více databázových instancí. Nemám přehled, zda si každý z obou WAMP frameworků sám do databáze něco ukládá (a tedy vyžaduje určitý "datový model" resp. strukturu tabulek, a tedy by to chtělo pro každý framework oddělenou DB instanci), nebo zda DB slouží výhradně pro uživatelská data, a tedy by se dalo koukat shodnými či "databázově kompatibilními" PHP skripty zpod obou frameworků do jediné DB instance...

Ještě mě napadá: každý framework má svoji instalaci PHP. Odhaduji, že interpreter PHP šahá do MySQL pomocí přikompilované knihovny libmysqlclient, která je "pupeční šňůrou verze" do jisté míry spojená s verzí MySQL serveru. Nemám bohužel konkrétní přehled, jak je to s kompatibilitou libmysqlclient vs. MySQL server mezi verzemi navzájem. Taky nemám přehled, jak je knihovna libmysqlclient zakomponovaná do PHP na Windowsech - zda je staticky přilinkovaná, nebo zda je přiložená jako DLL (takže by se případně dalo podstrčit staršímu frameworku novější DLLko). Správným řešením (a v případě problémů jediným) by případně bylo, překompilovat si PHP dodané se "starší" přibalenou verzí libmysqlclient proti novější verzi libmysqlclient.

Pokud tomu správně rozumím, celý WAMP framework se "Startuje a vypíná jedním tlačítkem" (httpd + mysqld). Čili pokud budete chtít nakonfigurovat "křížence", budete muset mysqld spouštět holýma rukama, nebo nějak nafintit, aby jeden WAMP framework spouštěl mysqld ze sousedního WAMP frameworku. Na UNIXu bych zkusil symlink, pod Windows si nejsem jist. Musíte prozkoumat, jak se to přesně spouští. Možná by napověděl Process Explorer od SysInternals/WinInternals. A dále, pokud chcete aby se PHP bavilo s "databází od souseda", tak někde v runtime konfiguraci PHP (v PHP skriptech) musí být parametry pro připojení k databázi (IPčko, port, jméno DB, popř. username a heslo).
[:wq]

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.