|
ru.unix.bsd- RU.UNIX.BSD ------------------------------------------------------------------ From : sergey belov 2:5015/214 05 Jun 2006 16:59:56 To : All Subject : mysql replication -------------------------------------------------------------------------------- настроил тестовую mysql репликацию в джайлах. мастер: 4.0.26, слейв: 4.1.18 всё отлично работает по доке с dev.mysql.com пытаюсь репликацию осуществить уже на рабочих базах, правда версии немного плачевнее :) мастер: 4.0.15a, слейв: 4.1.19 реплицировать нужно только одну базу, с именем mycompany. добавляем аргументы в строку запуска: на головном: --binlog-do-db=mycompany на подчиненном: --replicate-do-db=mycompany в mysql-консоле делаю "change master to" с указанием всех необходимых данных о головном сервере и позиции. стартую слейв: start slave; в итоге имеем следующие грабли: после того как слейв стартует без каких-либо проблем(в логах никаких ругательств) тем не менее синхронизация данных происходит всего несколько минут после старта слейва. что ясно видно из логов при включенном --log-warnings=5. после этого, примерно, спустя минуту всё засыпает, несмотря на то что данные на головном сервере поступают в базу чуть ли не ежесекундно, подчиненный их уже почему-то не видит. из show slave status ясно видно, что позиция, с который должны были обновляться данные на слейве постоянно увеличивается. а еще увеличивается Seconds_Behind_Master. из доки я так и не понял за что отвечает этот параметр. может ктонибудь в двух словах перевести что это ? =) http://dev.mysql.com/doc/refman/5.0/en/show-slave-status.html не знаю насколько информативны будут нижеследующие данные, но ничего больше у меня нету. mysql собран без дебага. подземный стук: mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: XX.XX.XX.XX Master_User: repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: x-bin.001 Read_Master_Log_Pos: 494486645 Relay_Log_File: bar-relay-bin.000001 Relay_Log_Pos: 1657620 Relay_Master_Log_File: x-bin.001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: mycompany Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 422188647 Relay_Log_Space: 73955618 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 9753 1 row in set (0.00 sec) bar.err: 060605 15:56:53 [Note] Slave SQL thread initialized, starting replication in log 'x-bin.001' at position 420531067, relay log './bar-relay-bin.000001' position: 4 060605 15:56:53 [Note] Slave I/O thread: connected to master 'repluser@212.92.136.35:3306', replication started in log 'x-bin.001' at position 420531067 mysql> show processlist; одна единственная строчка, касательно слейва. | 174 | system user | | NULL | Connect | 4714 | Waiting for master to send event | NULL вот видим(кусок лога из my.log), что данные приходит в течение нескольких секунд после запуска слейва: 60 Query insert into dialup_users_history select * from dialup_users where fl=2 and tp=1 60 Query update dialup_users set fl=2, stime='20060603083519', etime=NOW() where id=32809 60 Query update dialup_users set fl=2, stime='20060603083619', etime=NOW() where id=32810 60 Query insert into dialup_tmp_bytes (balance, ip, ipto, bytes) values (80007, '192.168.0.114', '2 13.192.168.0.1', '667') 60 Query delete from dialup_users where card_number='00000000 60 Query insert into web_sess (id,user_id,timest,sid) values (84712536,37,now(),'664f7826d40db8bb0bfa 83d4d067fd23') после этого тишина. подземный стук с головного сервера: mysql> show master status; +-----------+-----------+--------------+------------------+ | File | Position | Binlog_do_db | Binlog_ignore_db | +-----------+-----------+--------------+------------------+ | x-bin.001 | 498147732 | mycompany | | +-----------+-----------+--------------+------------------+ 1 row in set (0.00 sec) mysql> show processlist; | 110140 | repluser | mail.mycompany.com:50903 | NULL | Binlog Dump | 5376 | Has sent all binlog to slave; waiting for binlog to be updated | NULL | вот только мало правды в том, что all binlog has sent to slave, ибо на слейве они так и не появились. и еще ужасно долго выполняется команда stop slave. примерно 10 минут. хотя может быть это из-за базы, ибо она весит 7 гигов :) касательно подвоха с replicate-do-db=sales, когда update sales.table не будет подпадать под replicate-do-db мне известно. запросов с подобным синтаксисом на головной сервер не поступает. --- powered by цололо.ком * Origin: роман олегович (2:5015/214) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix.bsd/2261448432a9.html, оценка из 5, голосов 10
|