Назад | Перейти на главную страницу

Mysql 5.5: репликация 1 db и нескольких таблиц из другой

все.

Я использую Mysql5.5, и мне нужно полностью реплицировать одну базу данных (db1), а также 6/45 таблиц из другой базы данных (db2). Я заблокировал мастер и сделал дамп как db1, так и db2, а также отметил имя и положение журнала. Затем я импортировал db1 и db2 на подчиненный сервер после настройки my.cnf:

server-id   = 4938
log_bin     = mysql-bin
expire_logs_days   = 10
max_binlog_size    = 100M
replicate_do_db    = db1
replicate_do_table = db2.t1
replicate_do_table = db2.t2
replicate_do_table = db2.t3
replicate_do_table = db2.t4
replicate_do_table = db2.t5
replicate_do_table = db2.t6
sync_binlog        = 1
relay-log          = mysqld-relay-bin
# For consistency and durability in replication when using InnoDB with transactions:
innodb_flush_log_at_trx_commit = 1

После запуска подчиненного процесса на подчиненном сервере, команда show slave status показывает, что поток репликации работает без ошибок. Однако при изменении данных в db2.t3 на ведущем устройстве они никогда не обновляются на ведомом.

mysql> show master status;
+------------------+----------+-----------------+------------------+
| File             | Position | Binlog_Do_DB    | Binlog_Ignore_DB |
+------------------+----------+-----------------+------------------+
| mysql-bin.000037 |      107 | db1,db2         |                  |
+------------------+----------+-----------------+------------------+
1 row in set (0.00 sec)

статус раба:

mysql> show slave status\G
*************************** 1. row ***************************

      Slave_IO_State: Waiting for master to send event
          Master_Host: master.mydomain.com
          Master_User: repl
          Master_Port: 3306
        Connect_Retry: 60
      Master_Log_File: mysql-bin.000037
  Read_Master_Log_Pos: 107
       Relay_Log_File: mysqld-relay-bin.000006
        Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000037
     Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
      Replicate_Do_DB: db1
  Replicate_Ignore_DB: 
   Replicate_Do_Table: db2.t1,db2.t2,db2.t3,db2.t4,db2.t5,db2.t6
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 107

(фактические имена таблиц нелегко использовать подстановочные знаки)

Я заметил, что Exec_Master_Log_Pos всегда остается таким же, как начальная позиция ведущего журнала. Я видел этот прирост в других случаях, когда работала репликация.

Изначально у меня не было binlog_do_db, установленного на master, но я остановил его и на всякий случай добавил db1, db2, но это не имело никакого значения.

Я правильно подхожу к этому? Спасибо.