pg_chameleon is a MySQL to PostgreSQL replica system written in Python 3. The tool can connect to the mysql replication protocol and replicate the data changes in PostgreSQL. Whether the user needs to setup a permanent replica between MySQL and PostgreSQL or perform an engine migration, pg_chamaleon is the perfect tool for the job.
Архив рубрики: Базы данных
[mysql] pt-table-sync: проверяем и устраняем рассинхрон между базами/таблицами
Для тех, кто не знает, есть замечательный набор утилит для администрирования баз данных mysql — percona tools . В данной статье хотелось бы рассказать не обо всех утилитах, а только о pt-table-sync. Если кратко — то она позволяет узнать рассинхрон между базами/таблицами и, если есть, то устранить его.
Для своей работы, она потребует отдельного юзера с очень расширенными правами (CREATE, DROP, ALTER,…). Если какое-то право не дали — то pt-table-sync об этом скажет.
[postgresql] Monitoring tools
Для себя — сторонние extension’ы для диагностики:
[mysql] Fast shutdown
Если нужно быстро перезагрузить базу, можно воспользоваться хаком: сбросить грязный кешь (на самом деле мы просто выставляем лимит грязного кеша в 0) и потом просто restart. И так:
mysql>set global innodb_max_dirty_pages_pct=0;
Теперь дожидаемся, пока весь кеш сбросится (раз в 10 секунд проверяем размер грязного кеша):
[mysql] Multi source replication
И так, представим себе ситуацию: есть GTID репликация и нужно подключить ещё один канал с другого мастера. Вроде бы и тривиальная задача: change master to … channel master2, но при запуске репликации на новом канале master2 она свалится с ошибкой:
The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.', Error_code: 1236
Как же быть? Опишу по шагам, как это исправить.
[mysql] skip replication with GTID
Смотрим в
mysql>show slave status\G;
...
Executed_Gtid_Set: 1136d9c4-0ecf-11e5-be7e-28d2445d8ed0:1-373587249,
53d58b0f-eb6f-11e6-9215-392e3ca483a1:1-1081544,
bcdd5c11-9d7b-11e2-8070-49715e847bda:1-40596661
...
В данном случае ID-шник непосредственного мастера bcdd5c11-9d7b-11e2-8070-49715e847bda. Значит увеличим его счётчик транзакций на 1 (40596661, стало 40596662, обратите внимание, что gtid_next задаётся в формате ID:position, а в executed_gtid_set оно выглядит как ID:1-position, то есть отличаются на ‘-1’):
[postgresql] pglogical — логическая репликация
pglogical — это логическая репликация, реализованная в виде дополнения к PostgreSQL (доступна начиная с 9.4). Это альтернатива физической репликации, в которой, например, есть ограничения (в pglogical такого ограничения нет) репликации только в пределах одной минорной ветки.
Официальный сайт https://2ndquadrant.com/en/resources/pglogical/
[mysql] Got fatal error 1236 from master when reading data from binary log
Got fatal error 1236 from master when reading data from binary log: 'Cannot replicate anonymous transaction when AUTO_POSITION = 1, at file /database/mysql/mysql-bin.030053, position 154.; the first event '' at 4, the last event read from 'mysql-bin.030053' at 219, the last byte read from '/database/mysql/mysql-bin.030053' at 219.'
Такую ошибку получили при попытке переключиться по инструкции online migration to GTID replication. Решение не очевидное и нашлось методом гугления, проб.
[mysql] Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used
Такая ошибка появляется, когда вы пытаетесь дать права на объект, на который права не могут распространяться. К примеру, нельзя дать права execute, create temporary table на конкретную таблицу. То есть, сначала сверяемся с мануалом , и, если всё правильно, пробуем по одному удалять «гранты» в надежде найти проблемный.
[mysql] Некоторые особенности работы и установки MEM
MEM — mysql enterprice monitor. Это такая веб-админка, где можно посмотреть за работой базы mysql и понять, почему она тормозит или посмотреть другую статистику. По большому счёту это приложение на java, которое выгребает статистику из баз perfomance scheme и information scheme и предоставляют её в удобном виде. Так же, время от времени парсится и вывод show engine innodb status на предмет полезной информации.