Replikace databaze – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Replikace databaze – MySQL – Fórum – Programujte.comReplikace databaze – MySQL – Fórum – Programujte.com

 

Remmidemmi
~ Anonymní uživatel
583 příspěvků
2. 1. 2010   #1
-
0
-

Zkousel nekdo napsat program nejlepe v PHP na replikaci MySQL databaze z jednoho serveru na jiny server?
Dodavam, ze servery jsou na Internetu, kazdy na jinem kontinentu Potebuju jen tak 1x denne updatovat databazi na druhem serveru o data zapsana do databaze na 1.serveru.

P.S. pisu to tu jako "neregistrovany" protoze tu zlobi login - po zapsani meho username a passwordu se objevi bila stranka a prd ...
Jinak tu jsem radne registrovany Remmidemmi.

Nahlásit jako SPAM
IP: 84.244.81.–
dannyk0
Věrný člen
2. 1. 2010   #2
-
0
-

Primo psat sem nepsal, ale tak na rychlo me napadlo mit nejaky timestamp u kazdeho radku a pri updatu vybrat vsechny radky, ktere jsou od urciteho timestampu a zapsat je na druhy server. To mi prijde jako nejjednodussi reseni, ale jestli nejlepsi, to momentalne nevim.

Nahlásit jako SPAM
IP: 85.135.97.–
Jedu v c++,c#,assembler,ASP.NET,PHP,databaze,bezpecnost softwaru[br] -----------------------------------------------------------[br] Muj blog o programovani,hudbe a vsem moznem,co najdu na netu :) [br] http://dannyk.aspone.cz[br] -----------------------------------------------------------[br] Na foru mam nejake prispevky pod nickem Master,tak jen pro upresneni :)
Remmidemmi
~ Anonymní uživatel
583 příspěvků
2. 1. 2010   #3
-
0
-

To dannyk :
nejde o to urcit ktera data jsou nova a ktera se maji updatovat na novy server. To je trivialni.
Ale co nevim, jak ta data presunout na ten druhy server. Jak automaticky otevrit relaci a zapis do druhyho serveru....
Prohlizel jsem ruzna PHP fora a googloval po svete, ale vetsinou se do tohoto nikomu moc nechce.

Predstav si to takhle: mas MySQL databazi treba na serveru Tiscali.cz a chces urcita data z ni zapsat do stejne databaze ale na serveru Seznam.cz
Od obou serveru mas k dispozici pristupova prava.

Rucne to udelat umim, tak, ze si stahnu data k sobe a pak je odsunu na druhy server. To je ovsem pitome reseni. Potrebuju aby se to delalo automaticky.

Podobne by se pak dalo resit zalohovani cele databaze z 1. serveru na 2.server.

Ma nekdo napad jak to napsat?

P.S. - stale nefunguje prihlasovani, heslem to neni a WEB prohlizecem take ne...

Nahlásit jako SPAM
IP: 84.244.81.–
marioff0
Expert
2. 1. 2010   #4
-
0
-

To Remmidemmi : tak to zautomatizuj CRONom... na servery 2 sa pripoj na server 1 ktory urobi export db do suboru a ten si nasledne stiahnes...

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
remmidemmi0
Věrný člen
2. 1. 2010   #5
-
0
-

to Marioff: mas nejaky priklad jak to udelat?

Nahlásit jako SPAM
IP: 84.244.81.–
remmidemmi0
Věrný člen
2. 1. 2010   #6
-
0
-

cron jestli to dobre chapu, mi akorat nastavi periodu, kdy delat upgrady. jenze ten kamen urazu je v navazani spojeni mezi temi servery. ty servery nejsou u me v kanclu, ale jeden je v usa a druhy v asii. jde o to, jak otevrit ten druhy server z toho prvniho ... to se mi nedari...

Nahlásit jako SPAM
IP: 84.244.81.–
marioff0
Expert
2. 1. 2010   #7
-
0
-

newiem v com mas stranky... ak v php tak by som pouzil kniznicu cURL http://sk2.php.net/manual/en/book.curl.php

na servery ktory SA BUDE replikovat umiestnis kod ktory bude spustat cron napr. o polnoci. Ten bude obsahovat pripojenie (najlepsie s pomocou hesla, a certifikatu) na server (teda na druhy kod) z ktoreho replikujes databazu. Ten vytvori export databazy napr. v XLS formate (alebo rovno SQL), a posle ho prvemu kodu na replikovanom servery. A nakoniec dany vystup ktory ziskal spracuje a vlozi do db.....

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
remmidemmi0
Věrný člen
2. 1. 2010   #8
-
0
-

neco zkusim napsat a pripadne se ozvu... dik

Nahlásit jako SPAM
IP: 84.244.81.–
remmidemmi0
Věrný člen
3. 1. 2010   #9
-
0
-

To Marioff: mrkni na tenhle link

http://www.phppro.jp/school/pear/vol8/2

co ty na to? :)

Nahlásit jako SPAM
IP: 84.244.81.–
hrach
~ Redaktor
+1
Boss
3. 1. 2010   #10
-
0
-

uplne nejzasadnejsi otazka je, jestli mas k dane db pristup jen pres php, nebo muzes "pracovat" s celym danym strojem/serverem...
pokud muzes pracovat se serverem, obsahuje mysql nastroj pro replikaci [1]
pokud ovsem ne, pak nezbyva nez pomoci cronu si nechat volat php, ktere pres nejaky http request, tunel, ci ja nevim co protlaci data... a to uz mi silne zavani prasarnama... takze tomu se vyhni...
jinak ten link co si ted posla, to je trochu mimo, hlave japonsky, ci co.. na to kasli. staci se normalne podivat na google [2], a naprogrmaovat si to spojeni a poslat treba v postu par dat. samozrejme, ne vsechno na jednou, ale treba vybirat sqlkem ty data pomoci limitu a kdyz limit bude naplne, tak to stale cyklit, dokud ty data postupne vsechny neodesles. doporucuji to provadet tak po 1000 radcich, vic uz asi radej ne.

[1] = http://www.google.com/search?q=php+mysql+replication
[2] = http://www.google.com/search?q=php+curl+post+ssl

Nahlásit jako SPAM
IP: 90.179.27.–
http://jan.skrasek.com@hrachcz – webdeveloper
marioff0
Expert
3. 1. 2010   #11
-
0
-

To hrach :

Server 1: pomocou cURL (s POST-om hesla) sa pripojis na Server 2 protokolom https, s pouzitim slusneho certifikatu, a budes cakat na odpoved, teda cisty vystup....

Server 2: tu bude kod ktory vyexportuje data z db napr. rovno v SQL formate... a zobrazi ich klasicky "do prehliadaca" tak aby si ich prvy server zobral ako vystup... (samozrejme len s pouzitim spravneho hesla)

Server 1: spojenie zavrie, prijaty vystup skontroluje a vlozi do db....

nepripada mi to prasacke, s ohladom nato ze si nemyslim ze ma pristup k ssh...

toto riesenie by bolo asi najjednoduchsie si myslim

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
marioff0
Expert
3. 1. 2010   #12
-
0
-

To remmidemmi : to je len nejaka funkcia na http_request... to ti kludne a jednoduchsie (a aj lepsie) nahradi cURL.....

Nahlásit jako SPAM
IP: 195.78.44.–
Škoda, že život sa nedá "sejvovať", tak že by som po zlom životnom rozhodnutí mohol začať odznova :([br] Lenivosť je matka pokroku.[br][br] http://cut.sk/ - odstrihni si dlhý link
remmidemmi0
Věrný člen
3. 1. 2010   #13
-
0
-

je to divne, ted jsem sem vepsal dlouhou odpoved, pozralo ji to, ale nic tu neni ...
tak tedy znovu:

bohuzel s celym strojem pracovat nemohu, jen s casti.
Ta japonstina mi zase az tak nevadi, je to celkem kulturni jazyk.
Ale k veci - cely prodlem se zda byt v tom, jak napsat cestu na druhy(vzdaleny) server.

Napsal jsem toto:

require_once('/u/web/local_path/mysql_conf.inc.php'); // access right for remote access


$link = mysql_connect(REMOTE_HOST, REMOTE_USER, REMOTE_PASSWORD)
or die("Could not connect : " . mysql_error());
mysql_select_db(REMOTE_DATABASE) or die("Could not select database");

az sem to chodi. Potom je problem v tomto:

require_once(/u/web/user/remote_server_path/my_file.php);

Otazka je jak sem zapsat celou cestu na web ( http://www.... )

Nebo zda lze do radky prohledavajici databazi napsat cestu na tabulku vcetne web adresy

$query = 'SELECT * FROM '. my_table .'
WHERE ........

To jest '. my_table .' mit vcetne adresy na vzdaleny web ...

Ale myslim, ze urcite nad celym strojem, serverem existuje neco na replikaci databaze... jen se k tomu umet dostat. Bych to nemusel takhle mastit.


Nahlásit jako SPAM
IP: 84.244.81.–
remmidemmi0
Věrný člen
3. 1. 2010   #14
-
0
-

To marioff :
O neco takoveho se snazim, ze otevru databazi, tabulku na vzdalenymserveru, prectu si potrebna data a zobrazim je na prohlizeci a ulozim na lokalnim serveru. Bohuzel to vazne na napsani cest do tech prikazu.
Samozrejme uplne lepsi by bylo, kdyby vzdaleny server jednou denne v predem dany cas updatoval tabulku na 1. server.

Ono to je tak, ze uzivatele maji pristup k zapisu jen na vzdalenem serveru, zatimco na mistim se tabulka jen prohlizi a slouzi jako backup. Jenze nevyhoda je v tom, ze po jistem case se na mistnim serveru prohlizeji stara data, protoze se ze vzdaleneho serveru na lokalni nijak nedostanou.

Kdyz budou uzivatele zapisovat data na lokalni server, budou zase chybet na tom vzdalenem, kde je jina skupina uzivatelu nejen zapisuje, ale take prohlizi.

Nahlásit jako SPAM
IP: 84.244.81.–
Honza77
~ Anonymní uživatel
6 příspěvků
4. 1. 2010   #15
-
0
-

Pokud nemas kontrolu nad stroji a tedy nemuzes pouzit replikaci integrovanou v MySQL, tak si muzes pomoci jinak. Moznosti je vice:

Pokud ma jeden stroj povolene pripojeni do MySQL zvenku (coz moc nebyva), tak se muzes z toho druheho pripojit promo na oba stroje napr. z PHP a pak tam data pretahovat dle potreby.

BTW: Tohle je blbost ... prihlasovaci informace do vzdalene DB tezko budes mit nekde verejne vystavane, takze si je rucne uloz na ten stroj, kde je potrebujes.

require_once(/u/web/user/remote_server_path/my_file.php); 


Dalsi moznosti je na jednom serveru si udelat skript, kterymu das na vstupu SQL dotaz a on ti vrati vysledek dotazu. Tento skript potom budes volat (pomoci file_get_contents() nebo CURL apod.) a stahovat si tak potrebne informace. Pripadne skript muzes udelat na miru a neumoznoval posilani libovolnych dotazu. Kazdopadne jej musis nejak zabezpecit ... idelane pres HTTPs a volat s nejakym tajnym heslem, ktery skript overi.

Otazka je, jak provadet synchronizaci, tedy jaka data prenaset.
- jedna moznost je udelat vzdy uplny DUMP DB a ten prenest na naimportovat. Pokud je DB trochu vetsi, tak je to pomerne pomale reseni.

- druha moznost je oznacovani si zaznamu, ktere se zmenily (pridaly, editovaly, smazaly) a prenaset jen tyto zmeny ... pokud se meni i struktura DB, tak musis prenaset cele tabulky

- dalsi moznost je logovat (klidne na urovni aplikace ... tedy napr. PHP) vsechny dotazy do DB krome SELECTu a tyto dotazy potom prenest a provest na druhem serveru. Pokud je zmen pomerne malo a DB velka, muze to byt vhodne reseni. Mohou se ale vyskytnout problemy. Zaprve napr. INSERT INTO ... neco=NOW(), kdyz se provede na druhem serveru, tak ulozi jiny cas. To lze obejit tak, ze cas budes generovat primo ve aplikaci (PHP skriptu). Zadruhe se dotazy mohou zalogovat v jinem poradi, nez ve kterem se provedou. Pokud dotaz aktualizoval stejne zaznamy, vysledek nemusi dopadnou stejne. Ale zase to muzes provadet prubezne a tedy druhou DB udrzovat aktualni prakticky porad.

Replikace na urovni MySQL oba problemy eliminuje automaticky (misto NOW() primo do logu uklada jiz konkretni cas a porad vykonani zna, takze loguje ve spravnem poradi).

Nahlásit jako SPAM
IP: 85.207.157.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

MSSQL - obnovení replikace — založil Robert

Databáze — založil Tomáš

C++ a databáze — založil miguel

Databáze — založil Jacob

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý