MYSQL arattábla online másolat egy szerveren.

Sziasztok.
A problémám a következő lenne.
Van egy fórum, aminek az ügyfél adatait szeretném máshol is felhasználni.
Biztonsági okokból (más csapat dolgozik a két projecten), illetve hogy a másik projekt véletlenül se tudja a fórum tábláit lelock-olni arra gondoltam, hogy az lenne a leg jobb megoldás, ha nem a fórum adattábláját olvasnám hanem annak egy másolatát.
A replikációról hallottam és egy helyen a cégnél a rendszergazda használja is két szerver között.
Ő azt mondta, hogy amit én szeretnék az csak trükközésekkel, két mysql futatásával lehet megcsinálni vele.
Nincs valami egyszerű módszer amivel egy szerveren beül lehet online másolatot készíteni az egyes táblákról (pl. egy másik adatbázisba)?

Természetesen a fórum mellett futó külön project csak olvasni szeretné az adatokat, azokat írni nem.

Előre is köszönöm a gyors segítséget.
Üdv:
Zoli

Hozzászólások

view nem jo masolat keszitesere?

SPAMtelenül - MX spamszűrő szolgáltatás, ahogyan még sosem próbálta

Írhatsz neki API-t, amit meghív és akkor az API-n belül te úgy garázdálkodsz, ahogy neked jó. Nem hiszem, hogy akkora nagy dolog lenne. Ha webes a holmi, akkor első körben írhatod php-ban is, de ha nagyobb terhelésre kell felkészülni és van benne pénz, akkor akár valami egyszerűbb szerver applikációt is összedobhatsz rá natív kódban. Persze vannak kész alkalmazások a userek kezelésére, amelyek db backendet használnak.

Itt valami külső API-ra gondolsz, vagy MYSQL valamire. (Nem foglalkoztam ezzel a térrel még). Ha valami olyanra gondolsz, hogy nem maga a mysql-t hanem egy küldő dolgot kellene meghívni a fórumnak, akkor az nem fog menni, mert az egy kész fórum motor, és tuti nem fogják az óceán túloldalán az egészet átírni a kedvemért, hogy minden hívás helyett valami mást hívjon meg.
Ha másra gondolsz, akkor kérlek írd le mire..

mysql slave replikacio read-only(azert hogy ha megis irnanak veletlenul, akkor elszalljon hibaval, es igy kideruljon) modban jo lehet neked.
Mit kellene amugy a masik csapatnak a forum usereivel csinalni?
Kozos userkezeles kellene megoldani, vagy ilyesmi?
Figyelj oda arra, hogy a replikacioban elofordulhat, hogy a slave nem a master aktualis allapotat mutatja, hanem hanem lemaradva egy multbeli kepet.
Ez mondjuk ciki lehet, hogy xy user regisztral, majd megprobal belepni a masik db-t hasznalo oldalon, ami kozli vele, hogy nincs ilyen regisztracio.
Ilyen esetben inkabb valami tavoli eljarashivasos (xml-rpc vagy soap) API-n keresztul adnek hozzaferest a masik csapatnak a felhasznaloi adatbazishoz a mysql replikacio helyett.

Tyrael

A ”mysql slave replikacio read-only” az jó lenne nekem.
Konkrétam:
Egy nemzetközi szerveren egy "Simplemachines Forum" fut.
Ehhez készülne egy térkép, mely a felhasználókat mutatja.
Nem baj és nem ciki ha esetleg picit lassulás lenne a két tábla között emiatt, mivel mint látható nem kritikus adatokról van szó. A lényeg úgy is hogy maga a fórumot nem veszélyeztesse.

Azért nem szeretném a fórum táblájából folyamatosan olvasni az adatokat, mert ha a sok user elkezd térképezni mint az őrült és esetleg az állandó kérések lock-olnák a forum (úgy nézem: MyISAM) tábláit, akkor a térkép mellékes projekt pont az oldalt pukkasztaná meg, mivel a fő csapásirány maga a fórum.

A "mysql slave replikacio read-only" megoldható egyszerűen egy szerveren is, vagy valóban ahhoz két SQL is kell?

Ebből adódott a kérdés.
Mert én azt hittem szerveren belül két adatbázis között is simán lehet csinálni.
Csak ő jelente, hogy nem igazán. Vagyis úgy tudja.
Ezért kerestem alternatívát, mert bízom benne, hogy valahogy meg lehet oldani MYSQL szintjén a tábla folyamatos duplikálását, mivel a fórum motorja zárt, és tuti nem lesz átírva, hogy minden mozdulatot két helyre tegyen le.

1 fizikai vason futhat tobb mysql server instance, csak --defaults-file -lal masik config fajllal kell inditani, ami masik konyvtarban levo datadir/log, egyeb parameterekkel van felconfolva.

illetve erre vannak toolok is, de nekem rossz tapasztalataim voltak valami mysql instance manager nevu formedvennyel, szoval inkabb kezzel allitom be.

Tyrael

nem olvastam végig a hozzászólásokat, de egy új csak olvasással rendelkező felhasználó nem jobb a tábla másolásnál?

attol fel a kerdezo, hogy SELECT joggal is beborithatja a forumot a masik alkalmazas, pusztan azzal hogy pl:
Lock priorities. By default MySQL treats updates as higher priority operations. You can use SELECT HIGH_PRIORITY or UPDATE LOW_PRIORITY to adjust that or you can simply set low_priority_updates option. Anyway default behavior means any UPDATE statement which is blocked by long running select will also block further selects from this table – they will have to wait until UPDATE is executing which is waiting on SELECT to complete. This is often not accounted for and people think – “OK. I write my script so it does short updates so it will not block anything” – it still may cause total block if there are long selects running.

forras:
http://www.mysqlperformanceblog.com/2006/06/17/using-myisam-in-producti…

Szoval ha vannak update-ek a tablara a forumbol, es a terkepes szolgaltatasban vannak hosszu ideig futo selectek, akkor myisam eseteben ezek feltarthatjak az UPDATE-et, amik feltartjak a tobbi SELECT-et, es TADA: csak SELECT joggal szetlockoltak a forum db-t.

Tyrael

Hülye kérdés: myisam-ről nem lehet átteni innodb-re? Az annyira nem lock érzékeny...

Illetve ha sehogy se megy (külön user csak olvasgatni, stb.), akkor csinálnék egy másik adatbázist vagy táblát ugyanazon szerveren, és valami (pár) percenként futó script-tel szinkronizálnám a dolgokat.
Ha A tábla az eredeti, B tábla a readonly másolat, akkor a megoldás
insert into B
select * from A
where id > (select max(id) from B)

már feltéve, hogy van rajta normális autoincrement PK, ami azért logikusnak tűnik.

"myisam-ről nem lehet átteni innodb-re?"
A felállás az a jelen esetben, hogy a fórumot a tengeren túlról üzemeltetik.
Azt sem tudom mennyire vannak otthon a témában odaát.
Én jönnék a külsős projecttel be ami tetszett nekik és abban a fázisban vagyunk, hogy írjam meg, hogy mire lenne szükség az integrációhoz. Írtam több lehetőséget, de a legjobb lenne ha náluk futna ugye a script.
Viszont nem hiszem, hogy ha az elő kérésem az lenne, hogy „cseréljék le a táblákat innodb-re” (azt is el tudom képzelni, hogy azt sem tudják mi az) akkor örömtelien ugrani fognak. Lehet csak alapban annyit értenek hozzá, hogy a varázslóval felrakták és konfigurálták. Erről egyenlőre nincs információm.
Annyit megnéztem, hogy letöltöttem a fórumot és abban a varázsló myisam táblákat használ.