![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 24.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Juz za kilka dni bede wdrazal replikacje mysql'a bo otrzymamy nowy serwer.
Zalozmy kilka rzeczy, replikacja jest juz ustawiona, mam MASTER'a i SLAVE'a. Czy musze teraz dostosowac skrypt ktory korzysta z tej bazy danych do replikacji? Zalozmy ze uzywamy darmowego skryptu for dyskusyjnych phpbb. Jest tam warstwa abstrakcji do operacji na bazie danych przykladowo $db->sql_query. Teraz najwazniejsze, slyszalem ze trzeba dostosowac w tym przypadku ta warstwe (w innym przypadku poprostu zapytania) do SLAVE'a i osobno do MASTER'a. 1. Chodzi o to ze tylko czesc zapytan moze dzialac na SLAVE'ie prawda? Do tego musze wybrac ktore, czyli wiekszosc selectow ale nie wszystkie, czemu? Jesli uzytkownik o nazwie "Janek" zarejestruje sie na MASTRZE a sekunde po tym bedzie sie chcial zarejestrowac uzytkownik rowniez o nazwie "Janek" na SLAVE'ie to wywali blad bo SLAVE zrobi SELECT nazwe usera z bazy i nieznajdzie bo jest opoznienie miedzy MASTER'em a SLAVE'em wiec przepusci dalej do INSERTA i bum blad... Czyli musze przewidziec takie sytuacje i zmodyfikowac skrypt na SLAVE'ie do korzystania z tych zapytan tylko, ktore moga pozwolic sobie na opoznienie? Przekierowac to zapytanie SELECT przy rejestracji ze SLAVE'a do MASTER'a? 2. Co musze jeszcze wiedziec o dostosowaniu skryptu do replikacji? Pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
Cytat 1. Chodzi o to ze tylko czesc zapytan moze dzialac na SLAVE'ie prawda? Możesz np. przekierować wszystkie operacje odczytu na slava a zapisu na mastera W funkcji $db->sql_query na samym początku wstaw kod podobny do
Cytat 2. Co musze jeszcze wiedziec o dostosowaniu skryptu do replikacji? Przeszukaj mysqlperformanceblog.com i http://dev.mysql.com/doc/refman/5.1/en/replication.html Warto zainteresować się też silnikiem czarnej dziury Ten post edytował artega 12.10.2008, 19:31:45 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 24.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Możesz np. przekierować wszystkie operacje odczytu na slava a zapisu na mastera A nie będzie problemu wtedy z przykładem przedstawionym wyżej (rejestracja) to jest pytanie. ten dev z mysqla przeczytałem już jakiś czas temu cały, tak jak i kilka innych stron ale nie wszystkie swoje wątpliwości rozwiałem domyślam się że kilka rzeczy wyjdzie w praktyce dopiero ten blackhole zbadam jeszcze ale raczej nie będzie to zastosowanie przydatne w moim przypadku // Pisz poprawnie, bo zamknę temat. I nie wykręcaj się problemem z klawiaturą, ponieważ zmiana z i y zajmuje 30 sek. ~batman Ten post edytował batman 14.10.2008, 10:11:18
Powód edycji: poprawiłem prawie każde słowo w poście ~batman
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chcesz mieć pewność, że czytasz "najbardziej aktualne" dane, odczytaj je z master'a. Ten wpis powinien wyjaśnić więcej.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 24.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzieki artega ten wpis pomogl mi sie upewnic.
batman sory za to ale niedalo sie tego poprawic poprzez shift + ctrl jak zazwyczaj sie da co do: Cytat if (preg_match("/^s*(select) /i", $query)) { mysql_query($query, $this->slave_connection) } else { mysql_query($query, $this->master_connection) } Zdecydowanie szybciej bedzie dzialal w ten sposob: Cytat $count = 0; ireplace( 'select', 'select', $query, $count); if ( $count == 1) { mysql_query($query, $this->slave_connection) } else { mysql_query($query, $this->master_connection) } a jeszcze szybciej: Cytat if ( (substr_count( strtolower($query), 'select', 0, 6)) == 1) { mysql_query($query, $this->slave_connection) } else { mysql_query($query, $this->master_connection) } Przy wykonywaniu tego kodu miliony razy dziennie bedzie roznica (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) . Optymalizacja rox. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 01:38 |