Категорії
DataBases Misc, staff, other

[mysql] skip/stop replication by condition

Нещодавно дізнався, що у mysql є функціонал зупинки реплікації за умови. Правда, ця умова досить обмежена, але все ж таки, її можна застосувати з хистрістю. Наприклад, у вас є сервер, який трохи відстає і ви знаєте, що є проблемний запит, який треба пропустити. Це можна автоматизувати.

mysql>START SLAVE UNTIL MASTER_LOG_FILE = 'mysql-bin.0000028', MASTER_LOG_POS = 3846213;set gtid_next="XXX";begin; commit;set gtid_next = "AUTOMATIC";start slave;

Ми знаємо заздалегідь позицію проблемного запиту (mysql-bin.0000028, position=3846213) і саму транзакцію (ХХХ). Реплікація доходить до цього запиту, зупиняється, а далі класично виконується skip для GTID-реплікації.

Категорії
DataBases Misc, staff, other

Деякі хитрі методи видалення/очистки файлів

Тут будуть описані деякі методи, які краще використовувати у HighLoad, замість класичних, оскільки вони менше навантажують ПЗ.

  • truncate

Дозволяє обрізати файл до розміру, який вказано, наприклад, до 5Gb (зараз файл займає, наприклад, 10Gb):

$ truncate -s 5G file

Зауваження.

Чим цей метод краще, ніж, echo > file. Тим, що echo це робить дуже агресивно і дуже навантажує диски, а також блокує файловий дескриптор. truncate можна виконувати, наприклад, поєтапно, за 1 раз “обрізаючи” по 1Gb, або менше.

Категорії
DataBases

[mysql] You are not allowed to create a user with GRANT

Сразу скажу, что пишу эту заметку не про стандартное поведение, а про не совсем явное. На всякий случай, уточню, что речь идёт о mysql 8, и, если права позволяют это делать, то проблема в том, что данного пользователя может не существовать, для которого пытаются дать права.

Всё дело в том, что в 8-ой версии процесс создания пользователя и наделения его правами разделили. Теперь нельзя одновременно создать пользователя и дать права. Обязательно как минимум 2 операции.

Категорії
DataBases Misc, staff, other

[postgresql] PG_CHAMELEON: replication from mysql to postgresql

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.

Категорії
DataBases

[mysql] pt-table-sync: проверяем и устраняем рассинхрон между базами/таблицами

Для тех, кто не знает, есть замечательный набор утилит для администрирования баз данных mysqlpercona tools . В данной статье хотелось бы рассказать не обо всех утилитах, а только о pt-table-sync. Если кратко – то она позволяет узнать рассинхрон между базами/таблицами и, если есть, то устранить его.

Для своей работы, она потребует отдельного юзера с очень расширенными правами (CREATE, DROP, ALTER,…). Если какое-то право не дали – то pt-table-sync об этом скажет.

Категорії
DataBases

[postgresql] Monitoring tools

Для себя – сторонние extension’ы для диагностики:

pg_stat_statements
pg_stat_kcache
pg_qualstats

Категорії
DataBases

[mysql] Fast shutdown

Если нужно быстро перезагрузить базу, можно воспользоваться хаком: сбросить грязный кешь (на самом деле мы просто выставляем лимит грязного кеша в 0) и потом просто restart. И так:

mysql>set global innodb_max_dirty_pages_pct=0;

Теперь дожидаемся, пока весь кеш сбросится (раз в 10 секунд проверяем размер грязного кеша):

Категорії
DataBases

[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

Как же быть? Опишу по шагам, как это исправить.

Категорії
DataBases

[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. Значит gtid_next задаётся в формате ID:position, а в executed_gtid_set выглядит как ID:1-position:

Категорії
DataBases

[postgresql] pglogical – логическая репликация

pglogical – это логическая репликация, реализованная в виде дополнения к PostgreSQL (доступна начиная с 9.4). Это альтернатива физической репликации, в которой, например, есть ограничения (в pglogical такого ограничения нет) репликации только в пределах одной минорной ветки.

Официальный сайт https://2ndquadrant.com/en/resources/pglogical/

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff