подчиненное устройство репликации имеет меньше места

Мне нужно настроить репликацию

поэтому для этого я взял резервную копию с мастера и импортировал в подчиненный, и теперь у подчиненного есть 20 ГБ свободного места, в то время, когда я восстанавливаю резервное копирование, мастер получил 5+ ГБ данных.

после этого я включил репликацию

Теперь проблема в том, что когда данные из журнала реле записываются на ведомое устройство, создается много новых журналов реле, и у меня не остается места на ведомом устройстве....

relay-log-purge включен, но процесс записи из журнала ретрансляции в базу данных очень медленный...


person vidyadhar    schedule 05.04.2013    source источник
comment
Какой тип бинлогов вы используете? Оператор или строка?   -  person Károly Nagy    schedule 05.04.2013


Ответы (3)


Вы можете повысить производительность, переключив формат binlog на «ROW». В смешанном формате mysql записывает оператор binlog (подчиненное устройство должно повторно анализировать и планировать стратегию снова) и переключается на формат строки только в определенных случаях (http://dev.mysql.com/doc/refman/).5.1/en/binary-log-mixed.html).

Это можно сделать на лету:

SET GLOBAL binlog_format = 'ROW';

С репликацией на основе ROW вы можете разгрузить ведомые устройства, что упрощает их взаимодействие с ведущим. Единственным недостатком этого является то, что у вас могут быть файлы журналов большего размера, однако из этого «получено 5+ ГБ данных», я предполагаю, что вы в основном делаете вставки, поэтому разницы не будет.

Лучше всего попробовать и посмотреть, как он себя поведет.

Другой вариант, пока репликация не догонит, изменить innodb_flush_log_at_trx_commit на 2 на подчиненном устройстве. Только делайте это временно.

SET GLOBAL innodb_flush_log_at_trx_commit = 2;
person Károly Nagy    schedule 05.04.2013
comment
проблема с подчиненным, я думаю, что нет никакого отношения к формату основного бинлога, проверьте его один раз - person vidyadhar; 05.04.2013

просто отключите подчиненный поток ввода-вывода, когда вы получите предупреждение о меньшем количестве места на диске (достигнуто 90%), как

mysql> stop slave io_thread;

и запустите его снова через некоторое время, как

mysql> start slave io_thread;

на производстве это единственный наилучший вариант......

person vidyadhar    schedule 05.04.2013

Попробуйте добавить это в свой конфиг

реле-лог-пробел-лимит = 5G

person ConfusedLemon    schedule 16.05.2013