Здравствуйте.
Не работает row-репликация при использования межбазового truncate.
Указана база для репликации 'rep'. Запросы вида:
1) delete from rep.*
2) insert into rep.* values(..)
3) update rep.* set ...
попадают в бинлог.
Единственный запрос который не попадает это "truncate rep.*". Следствием является duplicate key.
Подскажите решение проблемы.
Решения которые вижу - это полная репликация всех бд, или skip-error, но надеюсь до этого не дойдёт.
MySql 5.5.18-55 (Percona Version)
Ubuntu 11.10 (GNU/Linux 3.0.0-16-server x86_64)
Ниже лог запросов, там показано что при truncate позиция бинлога не изменяется.
mysql> SHOW VARIABLES LIKE '%binlog%';
+-----------------------------------------+----------------------+
| Variable_name | Value |
+-----------------------------------------+----------------------+
| binlog_cache_size | 32768 |
| binlog_direct_non_transactional_updates | OFF |
| binlog_format | ROW |
| binlog_stmt_cache_size | 32768 |
| innodb_locks_unsafe_for_binlog | OFF |
| max_binlog_cache_size | 18446744073709547520 |
| max_binlog_size | 1073741824 |
| max_binlog_stmt_cache_size | 18446744073709547520 |
| sync_binlog | 0 |
+-----------------------------------------+----------------------+
9 rows in set (0.00 sec)
mysql> SHOW MASTER STATUS;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mysql.000001 | 421 | rep | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> insert into rep.tt values (1);
Query OK, 1 row affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mysql.000001 | 591 | rep | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> delete from rep.tt;
Query OK, 1 row affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mysql.000001 | 761 | rep | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> insert into rep.tt values (1);
Query OK, 1 row affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mysql.000001 | 931 | rep | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> truncate rep.tt;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW MASTER STATUS;
+--------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+--------------+----------+--------------+------------------+
| mysql.000001 | 931 | rep | |
+--------------+----------+--------------+------------------+
1 row in set (0.00 sec)
Отредактированно dkuser (12.03.2012 15:24:28)