SlideShare a Scribd company logo
1 of 170
Download to read offline
Эффективная
отладка репликации
MySQL
Света Смирнова
8 ноября 2016
∙
Инженер тех. поддержки MySQL
∙ Автор
∙ MySQL Troubleshooting
∙ JSON UDF функции
∙ FILTER clause для MySQL
∙ Докладчик
∙ Percona Live, OOW, Fosdem,
DevConf, ...
Света Смирнова
2
∙Особенности репликации MySQL
∙Проблемы мастера
∙Проблемы Slave IO thread
∙Проблемы Slave SQL thread
∙Многопоточный слейв
∙Multi-master
Содержание
3
Особенности репликации
MySQL
Мастер Слейв
<- Инициирует
Асинхронная
5
Мастер Слейв
<- Инициирует
<- Запрашивает пакет
Асинхронная
5
Мастер
Отправляет пакет ->
Слейв
<- Инициирует
<- Запрашивает пакет
Асинхронная
5
Мастер
Отправляет пакет ->
Слейв
<- Инициирует
<- Запрашивает пакет
... ?
Асинхронная
5
Мастер Слейв
<- Инициирует
Полусинхронная (Semisynchrous plugin)
6
Мастер Слейв
<- Инициирует
<- Запрашивает пакет
Полусинхронная (Semisynchrous plugin)
6
Мастер
Отправляет пакет ->
Слейв
<- Инициирует
<- Запрашивает пакет
Полусинхронная (Semisynchrous plugin)
6
Мастер
Отправляет пакет ->
Ждёт "Ack"
Слейв
<- Инициирует
<- Запрашивает пакет
Полусинхронная (Semisynchrous plugin)
6
Мастер
Отправляет пакет ->
Ждёт "Ack"
Слейв
<- Инициирует
<- Запрашивает пакет
<- Отправляет "Ack"
Полусинхронная (Semisynchrous plugin)
6
Мастер
Получает изменение
Табличный движок
Логическая
7
Мастер
Получает изменение
Передаёт движку ->
Табличный движок
Логическая
7
Мастер
Получает изменение
Передаёт движку ->
Табличный движок
Пишет в таблицу
Логическая
7
Мастер
Получает изменение
Передаёт движку ->
Табличный движок
Пишет в таблицу
<- Передаёт управление
Логическая
7
Мастер
Получает изменение
Передаёт движку ->
Пишет в binary log
Табличный движок
Пишет в таблицу
<- Передаёт управление
Логическая
7
Мастер
Получает изменение
Передаёт движку ->
Пишет в binary log
Синхронизируется ->
Табличный движок
Пишет в таблицу
<- Передаёт управление
<- Синхронизируется
Логическая
7
IO thread
Читает с мастера
SQL thread
Два типа потоков
8
IO thread
Читает с мастера
Сохраняет в relay log
SQL thread
Два типа потоков
8
IO thread
Читает с мастера
Сохраняет в relay log
SQL thread
<- Читает из relay log
Два типа потоков
8
IO thread
Читает с мастера
Сохраняет в relay log
SQL thread
<- Читает из relay log
Исполняет
Два типа потоков
8
∙ В 5.6+ SQL thread-ов может быть много
Несколько SQL-потоков
9
∙ В 5.6+ SQL thread-ов может быть много
∙ С точки зрения отладки
∙ IO thread один
Несколько SQL-потоков
9
∙ В 5.6+ SQL thread-ов может быть много
∙ С точки зрения отладки
∙ IO thread один
∙ Relay log один
Несколько SQL-потоков
9
∙ В 5.6+ SQL thread-ов может быть много
∙ С точки зрения отладки
∙ IO thread один
∙ Relay log один
∙
Может отставать от мастера
Несколько SQL-потоков
9
∙ В 5.6+ SQL thread-ов может быть много
∙ С точки зрения отладки
∙ IO thread один
∙ Relay log один
∙
Может отставать от мастера
∙ Ошибка одного потока останавливает все
Несколько SQL-потоков
9
∙ В 5.7+ может быть несколько мастеров
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
∙ Несколько SQL thread-ов
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
∙ Несколько SQL thread-ов
∙ slave_parallel_workers для каждого канала
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
∙ Несколько SQL thread-ов
∙ slave_parallel_workers для каждого канала
∙
Каналы независимые
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
∙ Несколько SQL thread-ов
∙ slave_parallel_workers для каждого канала
∙
Каналы независимые
∙ Ошибка на одном остановит только его
Несколько мастеров (Multi-channel)
10
∙ В 5.7+ может быть несколько мастеров
∙ С точки зрения отладки
∙
Несколько наборов relay log
∙ Несколько IO thread-ов
∙ Несколько SQL thread-ов
∙ slave_parallel_workers для каждого канала
∙
Каналы независимые
∙ Ошибка на одном остановит только его
∙ Одноимённые объекты могут вызвать
конфликты
Несколько мастеров (Multi-channel)
10
∙ Необходимо указать
∙
Название master’s binary log file
∙ Позицию
Позиционная
11
∙ Необходимо указать
∙
Название master’s binary log file
∙ Позицию
∙ С точки зрения отладки
∙
Событие выполняется по указателю позиции
Позиционная
11
∙ Необходимо указать
∙
Название master’s binary log file
∙ Позицию
∙ С точки зрения отладки
∙
Событие выполняется по указателю позиции
∙ Легко пропустить
Позиционная
11
∙ Необходимо указать
∙
Название master’s binary log file
∙ Позицию
∙ С точки зрения отладки
∙
Событие выполняется по указателю позиции
∙ Легко пропустить
∙ Легко переместить указатель в прошлое
Позиционная
11
∙ Необходимо указать
∙
Название master’s binary log file
∙ Позицию
∙ С точки зрения отладки
∙
Событие выполняется по указателю позиции
∙ Легко пропустить
∙ Легко переместить указатель в прошлое
∙ Нет проверок
Позиционная
11
∙ Каждая транзакция получает номер: GTID
Глобальные идентификаторы транзакций (GTID)
12
∙ Каждая транзакция получает номер: GTID
∙ AUTO_POSITION=1
Глобальные идентификаторы транзакций (GTID)
12
∙ Каждая транзакция получает номер: GTID
∙ AUTO_POSITION=1
∙ Не нужно указывать binary log и позицию
Глобальные идентификаторы транзакций (GTID)
12
Клиент Binary log
Statement-Based Binary Log Format
13
Клиент
INSERT INTO ... ->
Binary log
Statement-Based Binary Log Format
13
Клиент
INSERT INTO ... ->
Binary log
SET TIMESTAMP...
Statement-Based Binary Log Format
13
Клиент
INSERT INTO ... ->
Binary log
SET TIMESTAMP...
SET sql_mode...
Statement-Based Binary Log Format
13
Клиент
INSERT INTO ... ->
Binary log
SET TIMESTAMP...
SET sql_mode...
INSERT INTO ...
Statement-Based Binary Log Format
13
Клиент Binary log
Row-Based Binary Log Format
14
Клиент
UPDATE ... ->
Binary log
Row-Based Binary Log Format
14
Клиент
UPDATE ... ->
Binary log
SET TIMESTAMP...
Row-Based Binary Log Format
14
Клиент
UPDATE ... ->
Binary log
SET TIMESTAMP...
SET sql_mode...
Row-Based Binary Log Format
14
Клиент
UPDATE ... ->
Binary log
SET TIMESTAMP...
SET sql_mode...
Строка до изменений
Row-Based Binary Log Format
14
Клиент
UPDATE ... ->
Binary log
SET TIMESTAMP...
SET sql_mode...
Строка до изменений
Строка с изменениями
Row-Based Binary Log Format
14
∙ Лог ошибок
Основные инструменты
15
∙ Лог ошибок
∙ На слейве
∙ SHOW SLAVE STATUS
∙
Таблицы в Performance Schema
∙ Системная база mysql
Основные инструменты
15
∙ Лог ошибок
∙ На слейве
∙ На мастере
∙ SHOW MASTER STATUS
∙
SHOW BINLOG EVENTS
∙
mysqlbinlog
Основные инструменты
15
∙ Лог ошибок
∙ На слейве
∙ На мастере
∙
Percona Toolkit
Основные инструменты
15
∙ Лог ошибок
∙ На слейве
∙ На мастере
∙
Percona Toolkit
∙
MySQL Utilities
Основные инструменты
15
∙
Всегда доступна, требует настройки
∙
Асинхронная
∙
Мастер
∙ Хранит все изменения в binary log
Два формата: ROW и STATEMENT
∙ Слейв
∙
IO thread реплицирует с мастера в relay log
∙ SQL thread исполняет обновления
Несколько SQL thread-ов в 5.6+
Несколько каналов (мастеров) в 5.7+
∙ GTID в 5.6+
Особенности репликации: итоги
16
Проблемы мастера
∙
Более активная запись
∙
binlog_row_image =
FULL | MINIMAL | NOBLOB
Производительность
18
∙
Более активная запись
∙
binlog_row_image =
FULL | MINIMAL | NOBLOB
∙ binlog_cache_size
Наблюдайте Binlog_cache_disk_use
Производительность
18
∙
Более активная запись
∙
binlog_row_image =
FULL | MINIMAL | NOBLOB
∙ binlog_cache_size
Наблюдайте Binlog_cache_disk_use
∙ binlog_stmt_cache_size
Наблюдайте Binlog_stmt_cache_disk_use
Производительность
18
∙
Более активная запись
∙
Синхронизация
∙ binlog_sync
∙
Не изменяйте!
Производительность
18
∙ Время жизни binary log
∙ expire_log_days
Поведение
19
∙ Время жизни binary log
∙ Синхронизация
∙ SBR несовместима с READ COMMITTED и
READ UNCOMMITTED
Поведение
19
∙ Время жизни binary log
∙ Синхронизация
∙ Порядок записи в binary log
∙ Non-deterministic события и SBR
Поведение
19
Проблемы Slave IO thread
∙ SHOW SLAVE STATUS
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
...
Last_IO_Errno: 1045
Last_IO_Error: error connecting to master ’root@127.0.0.1:13000’ -
retry-time: 60 retries: 1
Last_SQL_Errno: 0
Last_SQL_Error:
...
Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp: 160824 03:18:36
Last_SQL_Error_Timestamp:
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
mysql> select * from performance_schema.replication_connection_statusG
*************************** 1. row ***************************
CHANNEL_NAME:
GROUP_NAME:
SOURCE_UUID:
THREAD_ID: NULL
SERVICE_STATE: CONNECTING
COUNT_RECEIVED_HEARTBEATS: 0
LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00
RECEIVED_TRANSACTION_SET:
LAST_ERROR_NUMBER: 1045
LAST_ERROR_MESSAGE: error connecting to master ’root@127.0.0.1:13000’ -
retry-time: 60 retries: 4
LAST_ERROR_TIMESTAMP: 2016-08-24 03:21:36
1 row in set (0,01 sec)
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
∙ Error log
2016-08-24T00:18:36.077384Z 3 [ERROR] Slave I/O for channel ”: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 1, Error_code: 1045
2016-08-24T00:19:36.299011Z 3 [ERROR] Slave I/O for channel ”: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 2, Error_code: 1045
2016-08-24T00:20:36.485315Z 3 [ERROR] Slave I/O for channel ”: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 3, Error_code: 1045
2016-08-24T00:21:36.677915Z 3 [ERROR] Slave I/O for channel ”: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4, Error_code: 1045
2016-08-24T00:22:36.872066Z 3 [ERROR] Slave I/O for channel ”: error connecting to
master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 5, Error_code: 1045
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
∙ Error log
∙
Доступ
$ perror 1045
MySQL error code 1045 (ER_ACCESS_DENIED_ERROR): Access denied for user ’%-.48s’@’%-.64s’
(using password: %s)
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
∙ Error log
∙
Доступ
∙ MySQL клиент и логин-пароль слейва
$ mysql -h127.0.0.1 -P13000 -uroot -pbar
Warning: Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user ’root’@’localhost’ (using password: YES)
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
∙ Error log
∙
Доступ
∙ MySQL клиент и логин-пароль слейва
SHOW GRANTS
mysql> SHOW GRANTS;
+----------------------------------+
| Grants for foo@% |
+----------------------------------+
| GRANT SELECT ON *.* TO ’foo’@’%’ |
+----------------------------------+
Сеть
21
∙ SHOW SLAVE STATUS
∙ P_S.replication_connection_status
∙ Error log
∙
Доступ
∙ MySQL клиент и логин-пароль слейва
SHOW GRANTS
∙
Исправьте привилегии на мастере
∙ Перезапустите репликацию
Сеть
21
∙ Обычные методы отладки
∙ Проверьте с клиентом командной строки
∙ См. также Troubleshooting hardware resource
usage webinar
Производительность
22
Проблемы Slave SQL thread
∙ Один мастер-один слейв
∙ Разные данные
Слейв не может выполнить event из relay log
∙ Разные ошибки на мастере и слейве
∙
Слейв сильно отстаёт от мастера
SQL thread: типичные проблемы
24
∙ Один мастер-один слейв
∙ Разные данные
Слейв не может выполнить event из relay log
∙ Разные ошибки на мастере и слейве
∙
Слейв сильно отстаёт от мастера
∙ Круговая репликация и другая запись в
дополнение к SQL thread
∙ Разные данные
SQL thread: типичные проблемы
24
∙ Таблица менялась вне репликации?
∙ Как?
∙
Конфликт с обновлениями на мастере?
Разные данные
25
∙ Таблица менялась вне репликации?
∙ Идентична ли структура таблиц?
∙ Percona Toolkit
pt-table-checksum, pt-table-sync
∙ MySQL Utilities
mysqlrplsync, mysqldbcompare, mysqldiff
Разные данные
25
∙ Таблица менялась вне репликации?
∙ Идентична ли структура таблиц?
∙ Обновления в неправильном порядке?
∙ mysqlbinlog
∙
Логика приложения на мастере
Разные данные
25
∙ Только при использовании SBR
Обновления в неправильном порядке
26
∙ Только при использовании SBR
∙ Блокировки на уровне строк
Обновления в неправильном порядке
26
∙ Только при использовании SBR
∙ Блокировки на уровне строк
∙ Триггеры
∙ SET GLOBAL slave_skip_counter – No GTIDs!
∙
Пропустите транзакцию – GTIDs
∙
Синхронизируйте таблицы!
Обновления в неправильном порядке
26
∙ Только при использовании SBR
∙ Блокировки на уровне строк
∙ Триггеры
∙
Разные опции: для олдфагов
∙ Запустите слейв с опциями мастера
∙ Перезапустите SQL thread
∙
Исправлено в последних версиях
Обновления в неправильном порядке
26
∙
Потоки
∙ Мастер выполняет обновления в несколько
потоков
∙
Слейв использует один
Слейв отстаёт от мастера
27
∙
Потоки
∙
Seconds_behind_master увеличивается –
Нельзя однозначно полагаться!
Слейв отстаёт от мастера
27
∙
Потоки
∙
Seconds_behind_master увеличивается –
Нельзя однозначно полагаться!
∙ Настройте производительность слейва
∙ Multi-threaded слейв
Один поток на одну базу в 5.6
Могут возникнуть проблемы параллельного выполнения между потоками слейва
Слейв отстаёт от мастера
27
∙
Потоки
∙
Seconds_behind_master увеличивается –
Нельзя однозначно полагаться!
∙ Настройте производительность слейва
∙ Multi-threaded слейв
Один поток на одну базу в 5.6
Могут возникнуть проблемы параллельного выполнения между потоками слейва
∙ Индексы на слейве
Имеет смысл только для SBR
Слейв отстаёт от мастера
27
Многопоточный слейв
∙ Единственный relay log
∙
Скорость в высококонкурентной среде может
быть меньше, чем у мастера
Производительность
29
∙ Единственный relay log
∙
Скорость в высококонкурентной среде может
быть меньше, чем у мастера
∙ slave_parallel_workers
Производительность
29
∙ Единственный relay log
∙
Скорость в высококонкурентной среде может
быть меньше, чем у мастера
∙ slave_parallel_workers
∙ slave_parallel_type=DATABASE |
LOGICAL_CLOCK
Производительность
29
∙
Те же методы, что и для однопоточного
Неправильное поведение
30
∙
Те же методы, что и для однопоточного
∙
Ошибка одного thread-а останавливает все
mysql> select WORKER_ID, SERVICE_STATE, LAST_SEEN_TRANSACTION, LAST_ERROR_NUMBER,
-> LAST_ERROR_MESSAGE from performance_schema.replication_applier_status_by_workerG
*************************** 1. row ***************************
WORKER_ID: 1
SERVICE_STATE: OFF
LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4988
LAST_ERROR_NUMBER: 0
LAST_ERROR_MESSAGE:
*************************** 2. row ***************************
WORKER_ID: 3
SERVICE_STATE: OFF
LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4986
LAST_ERROR_NUMBER: 1032
LAST_ERROR_MESSAGE: Worker 2 failed executing transaction...
Неправильное поведение
30
Multi-master
∙ Репликация должна быть настроена для
каждого канала
Особенности
32
∙ Репликация должна быть настроена для
каждого канала
∙
Можно одновременно использовать мастера
с GTID и без
Особенности
32
∙ Репликация должна быть настроена для
каждого канала
∙
Можно одновременно использовать мастера
с GTID и без
∙ Те же проблемы и решения, что и в случае
обычной репликации
Особенности
32
∙ Репликация должна быть настроена для
каждого канала
∙
Можно одновременно использовать мастера
с GTID и без
∙ Те же проблемы и решения, что и в случае
обычной репликации
∙ Фильтры применяются одновременно для
всех каналов
Особенности
32
Итоги
∙ Проблемы мастера
∙ Те же, что и для обычного сервера
∙
Больше пишет и проверяет
Итоги
34
∙ Проблемы мастера
∙ Slave IO thread
∙ Обычные проблемы с сетью
∙
mysql command line client для тестов
Итоги
34
∙ Проблемы мастера
∙ Slave IO thread
∙ Slave SQL thread
∙ Обычные проблемы при выполнении запросов
∙
Обычные проблемы движка
∙
Меньше потоков выполнения, чем на мастере
Итоги
34
∙
Basic Techniques – troubleshooting webinar
∙
Troubleshooting hardware resource usage
webinar
∙ Introduction into storage engine
troubleshooting webinar
∙ Percona Toolkit
∙ MySQL Utilities
∙
Книга MySQL High Availability
∙
MySQL Replication Team blog
Больше информации
35
???
Место для ваших вопросов
36
http://www.slideshare.net/SvetaSmirnova
https://twitter.com/svetsmirnova
https://github.com/svetasmirnova
Спасибо!
37
Приложение
Особенности репликации подробно
∙ Актуальны ли данные?
∙ Одинаковы ли
∙
Структура таблиц
∙ Движок
∙ Данные
∙
Любая запись может сломать репликацию
Асинхронная: вопросы на слейве
40
∙ Запись на мастере медленнее асинхронной
репликации
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙ До версии 5.7: от одного слейва
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙ До версии 5.7: от одного слейва
∙ Сейчас:
rpl_semi_sync_master_wait_for_slave_count
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙ До версии 5.7: от одного слейва
∙ Сейчас:
rpl_semi_sync_master_wait_for_slave_count
∙ Остальных ждать не будет
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙
Что значит "Ack"?
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙
Что значит "Ack"?
∙ Событие записано в relay log
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙
Что значит "Ack"?
∙ Событие записано в relay log
∙ Неизвестно, выполнено ли оно
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙
Что значит "Ack"?
∙ Что происходит при timeout-е?
Полусинхронная: с точки зрения отладки
41
∙ Запись на мастере медленнее асинхронной
репликации
∙
Сколько "Ack"-ов ждёт мастер?
∙
Что значит "Ack"?
∙ Что происходит при timeout-е?
∙ Репликация становится асинхронной
Полусинхронная: с точки зрения отладки
41
∙
Каждое изменение записывается дважды:
Файлы движка:
логи, данные, ...
Бинарный лог
Логическая: с точки зрения отладки
42
∙
Каждое изменение записывается дважды:
Файлы движка:
логи, данные, ...
Бинарный лог
∙
Можно параллельно писать на слейве
Логическая: с точки зрения отладки
42
∙ Не существует в MySQL!
Для сравнения: физическая репликация
43
∙ Не существует в MySQL!
∙ Есть две закрытые реализации
Для сравнения: физическая репликация
43
∙ Не существует в MySQL!
∙ Мастер пишет только в файлы движка
Для сравнения: физическая репликация
43
∙ Не существует в MySQL!
∙ Мастер пишет только в файлы движка
∙ Которые реплицируются на слейв
Для сравнения: физическая репликация
43
∙ Не существует в MySQL!
∙ Мастер пишет только в файлы движка
∙ Которые реплицируются на слейв
∙ С точки зрения отладки
∙
IO: изменения записываются единожды
∙ Нельзя параллельно писать на слейве
∙ Любое несоответствие данных приводит к
поломке
Для сравнения: физическая репликация
43
∙
Передача данных
∙
Выполнение
∙ Разные
∙ Диагностика
∙ Исправление
Два типа потоков – два вида проблем
44
∙ Гарантия, что транзакция не будет
выполнена дважды
GTID: с точки зрения отладки
45
∙ Гарантия, что транзакция не будет
выполнена дважды
∙
Простой failover
GTID: с точки зрения отладки
45
∙ Гарантия, что транзакция не будет
выполнена дважды
∙
Простой failover
∙ Пропустить одну транзакцию непросто
GTID: с точки зрения отладки
45
∙ Гарантия, что транзакция не будет
выполнена дважды
∙
Простой failover
∙ Пропустить одну транзакцию непросто
∙
Используйте mysqlslavetrx
GTID: с точки зрения отладки
45
∙ Гарантия, что транзакция не будет
выполнена дважды
∙
Простой failover
∙ Пропустить одну транзакцию непросто
∙
Используйте mysqlslavetrx
∙ Осторожнее с настройкой expire_logs_days!
GTID: с точки зрения отладки
45
∙ Statement-based (SBR)
∙ Запросы записываются в оригинальном виде
Форматы Binary log
46
∙ Statement-based (SBR)
∙ Запросы записываются в оригинальном виде
∙
Риск несовпадения данных (non-safe)
INSERT IGNORE
LIMIT без ORDER BY
Non-deterministic функции
...
Форматы Binary log
46
∙ Statement-based (SBR)
∙ Row-based (RBR)
∙ Обычно пишется больше данных
IO
Скорость передачи
binlog_row_image
Форматы Binary log
46
∙ Statement-based (SBR)
∙ Row-based (RBR)
∙ Обычно пишется больше данных
IO
Скорость передачи
binlog_row_image
∙ Ухудшение производительности для таблиц
без первичного (уникального) ключа
Форматы Binary log
46
∙ Statement-based (SBR)
∙ Row-based (RBR)
∙ Смешанная (Mixed)
∙
Преимущества обоих форматов
Форматы Binary log
46
Основные инструменты в примерах
∙ Информация о старте слейва
Лог ошибок
48
∙ Информация о старте слейва
∙ Ошибки
2016-08-23T12:11:21.867440Z 4 [ERROR] Slave SQL for channel ’master-1’: Could not execute
Update_rows event on table m2.t1; Can’t find record in ’t1’, Error_code: 1032; handler error
HA_ERR_END_OF_FILE; the event’s master log master-bin.000001, end_log_pos 1213, Error_code: 1032
2016-08-23T12:11:21.867471Z 4 [Warning] Slave: Can’t find record in ’t1’ Error_code: 1032
2016-08-23T12:11:21.867484Z 4 [ERROR] Error running query, slave SQL thread aborted.
Fix the problem, and restart the slave SQL thread with "SLAVE START".
We stopped at log ’master-bin.000001’ position 989
Лог ошибок
48
∙ Информация о старте слейва
∙ Ошибки
∙ Остановка слейва
Лог ошибок
48
Вся информация о слейве
∙
Конфигурация IO thread
∙ Конфигурация SQL thread
∙ Статус IO thread
∙ Статус SQL thread
∙ Ошибки
Только последняя
Все есть в логе ошибок
SHOW SLAVE STATUS
49
mysql> show slave status G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
...
Master_Log_File: master-bin.000002
Read_Master_Log_Pos: 63810611
Relay_Log_File: slave-relay-bin-master@002d1.000004
Relay_Log_Pos: 1156
Relay_Master_Log_File: master-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: No
...
Replicate_Wild_Ignore_Table:
Last_Errno: 1032
Last_Error: Could not execute Update_rows event on table m2.t1; Can’t find
record in ’t1’, Error_code: 1032; handler error HA_ERR_END_OF_FILE;
the event’s master log master-bin.000001, end_log_pos 1213
Skip_Counter: 0
...
SHOW SLAVE STATUS
49
∙ Не нужно парсить вывод SHOW
Таблицы в Performance Schema
50
∙ Не нужно парсить вывод SHOW
∙ Конфигурация
∙
replication_connection_configuration
∙ replication_applier_configuration
∙ mysql> select * from replication_connection_configuration
-> join replication_applier_configuration using(channel_name);
Таблицы в Performance Schema
50
∙ Не нужно парсить вывод SHOW
∙ Конфигурация
∙ Статус IO thread
∙ replication_connection_status
Таблицы в Performance Schema
50
∙ Не нужно парсить вывод SHOW
∙ Конфигурация
∙ Статус IO thread
∙ Статус SQL thread
∙
replication_applier_status
∙ replication_applier_status_by_coordinator - MTS!
mysql> select * from replication_applier_status join
-> replication_applier_status_by_coordinator
-> using(channel_name);
Таблицы в Performance Schema
50
∙ Не нужно парсить вывод SHOW
∙ Конфигурация
∙ Статус IO thread
∙ Статус SQL thread
∙
replication_applier_status
∙ replication_applier_status_by_worker
mysql> select * from replication_applier_status join
-> replication_applier_status_by_worker
-> using(channel_name);
Таблицы в Performance Schema
50
∙ Master Info
mysql> select * from slave_master_infoG
*************************** 1. row ***************************
Number_of_lines: 25
Master_log_name: mysqld-bin.000001
Master_log_pos: 154
Host: 127.0.0.1
User_name: root
User_password: secret
Port: 13000
Connect_retry: 60
Enabled_ssl: 0
...
Uuid: 31ed7c8f-74ea-11e6-8de8-30b5c2208a0f
Retry_count: 86400
...
Enabled_auto_position: 1
...
Системная база mysql: только на слейве
51
∙ Master Info
∙ Relay log info
mysql> select * from slave_relay_log_infoG
*************************** 1. row ***************************
Number_of_lines: 7
Relay_log_name: ./slave-relay-bin-master@002d1.000004
Relay_log_pos: 1156
Master_log_name: master-bin.000001
Master_log_pos: 989
Sql_delay: 0
Number_of_workers: 0
Id: 1
Channel_name: master-1
Системная база mysql: только на слейве
51
∙ Master Info
∙ Relay log info
∙ Worker info: multi-threaded slave
mysql> select * from slave_worker_infoG
*************************** 1. row ***************************
Id: 1
...
*************************** 8. row ***************************
Id: 8
Relay_log_name: ./Thinkie-relay-bin.000004
Relay_log_pos: 1216
Master_log_name: mysqld-bin.000001
Master_log_pos: 1342
Checkpoint_relay_log_name: ./Thinkie-relay-bin.000004
Checkpoint_relay_log_pos: 963
Checkpoint_master_log_name: mysqld-bin.000001
Системная база mysql: только на слейве
51
mysql> show master statusG
*************************** 1. row ***************************
File: master-bin.000005
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0,00 sec)
SHOW MASTER STATUS
52
mysql> show binlog events in ’master-bin.000001’ from 989;
+-------------------+------+----------------+-----------+-------------+--------------------------------
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info
+-------------------+------+----------------+-----------+-------------+--------------------------------
| master-bin.000001 | 989 | Anonymous_Gtid | 1 | 1054 | SET @@SESSION.GTID_NEXT= ...
| master-bin.000001 | 1054 | Query | 1 | 1124 | BEGIN
| master-bin.000001 | 1124 | Table_map | 1 | 1167 | table_id: 109 (m2.t1)
| master-bin.000001 | 1167 | Update_rows | 1 | 1213 | table_id: 109 flags: STMT_END_F
| master-bin.000001 | 1213 | Xid | 1 | 1244 | COMMIT /* xid=64 */
+-------------------+------+----------------+-----------+-------------+--------------------------------
5 rows in set (0,00 sec)
SHOW BINLOG EVENTS
53
$ mysqlbinlog var/mysqld.1/data/master-bin.000001 –start-position=989 –stop-position=1213
...
# at 1167
#160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b
Update_rows: table id 109 flags: STMT_END_F
BINLOG ’
v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ==
v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw==
’/*!*/;
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/;
...
mysqlbinlog
54
$ mysqlbinlog -v var/mysqld.1/data/master-bin.000001 –start-position=989 –stop-position=1213
...
# at 1167
#160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b
Update_rows: table id 109 flags: STMT_END_F
BINLOG ’
v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ==
v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw==
’/*!*/;
### UPDATE ‘m2‘.‘t1‘
### WHERE
### @1=5
### SET
### @1=6
ROLLBACK /* added by mysqlbinlog */ /*!*/;
SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/;
...
mysqlbinlog
55
∙ Percona Toolkit
∙ pt-table-checksum
Проверяет соответствие данных
Тулкиты
56
∙ Percona Toolkit
∙ pt-table-checksum
Проверяет соответствие данных
∙ pt-table-sync
Исправляет несоответствия в данных
Тулкиты
56
∙ Percona Toolkit
∙ pt-table-checksum
Проверяет соответствие данных
∙ pt-table-sync
Исправляет несоответствия в данных
∙ pt-slave-find
Показывает топологию
Тулкиты
56
∙ MySQL Utilities
∙ mysqlrplcheck
Проверяет, можно ли запустить репликацию
Тулкиты
56
∙ MySQL Utilities
∙ mysqlrplcheck
Проверяет, можно ли запустить репликацию
∙ mysqlrplshow
Показывает топологию
Тулкиты
56
∙ MySQL Utilities
∙ mysqlrplcheck
Проверяет, можно ли запустить репликацию
∙ mysqlrplshow
Показывает топологию
∙ mysqlrplsync
Проверяет соответствие данных
Тулкиты
56
∙ MySQL Utilities
∙ mysqlrplcheck
Проверяет, можно ли запустить репликацию
∙ mysqlrplshow
Показывает топологию
∙ mysqlrplsync
Проверяет соответствие данных
∙ mysqlslavetrx
Пропускает 1-N транзакций
Тулкиты
56
∙ MySQL Utilities
∙
mysqldbcompare
Сравнивает две базы данных
Тулкиты
56
∙ MySQL Utilities
∙
mysqldbcompare
Сравнивает две базы данных
∙
mysqldiff
Сравнивает определения объектов
Тулкиты
56
∙ MySQL Utilities
∙
mysqldbcompare
Сравнивает две базы данных
∙
mysqldiff
Сравнивает определения объектов
∙
mysqlserverinfo
Показывает основные опции, такие как port и datadir
Ориентирован на репликацию
Тулкиты
56
∙
Лог ошибок
∙ Слейв
∙ SHOW SLAVE STATUS
∙
Таблицы в Performance Schema
∙
Таблицы в mysql database
∙ Мастер
∙ SHOW MASTER STATUS
∙
SHOW BINLOG EVENTS
∙ mysqlbinlog
∙ mysql command line client
Основные инструменты: итоги
57

More Related Content

What's hot

Денис Иванов
Денис ИвановДенис Иванов
Денис ИвановCodeFest
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей ФедоровCodeFest
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)Ontico
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDAlex Chistyakov
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Николай Лавлинский
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Ontico
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Ontico
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...Ontico
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Stas Vyschepan
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)Ontico
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей СитникCodeFest
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав БахмутовCodeFest
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Ontico
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...Ontico
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 

What's hot (20)

Денис Иванов
Денис ИвановДенис Иванов
Денис Иванов
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Алексей Федоров
Алексей ФедоровАлексей Федоров
Алексей Федоров
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
MySQL 5.7 - NoSQL - JSON, Protocol X, Document Store / Петр Зайцев (Percona)
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSDBenchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
 
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
Чеклист по клиентской оптимизации - Лавлинский Николай, РИТ++ 2017
 
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
 
Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)Мой маленький уютный PaaS / Илья Беда (bro.agency)
Мой маленький уютный PaaS / Илья Беда (bro.agency)
 
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
 
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
Оптимизация высоконагруженных ASP.NET приложений, работающих с MS SQL Server ...
 
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
smart balancing with nginx+lua / Андрей Кононов (IPONWEB)
 
Андрей Ситник
Андрей СитникАндрей Ситник
Андрей Ситник
 
Вячеслав Бахмутов
Вячеслав БахмутовВячеслав Бахмутов
Вячеслав Бахмутов
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 

Viewers also liked

Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Ontico
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Ontico
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...Ontico
 
Web scale backups for MySQL, Алексей Копытов (Percona)
Web scale backups for MySQL, Алексей Копытов (Percona)Web scale backups for MySQL, Алексей Копытов (Percona)
Web scale backups for MySQL, Алексей Копытов (Percona)Ontico
 
OpenZFS data-driven performance
OpenZFS data-driven performanceOpenZFS data-driven performance
OpenZFS data-driven performanceahl0003
 
Импортозамещение КРОК
Импортозамещение КРОКИмпортозамещение КРОК
Импортозамещение КРОККРОК
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Ontico
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)Ontico
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Ontico
 
ZFS for Databases
ZFS for DatabasesZFS for Databases
ZFS for Databasesahl0003
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Ontico
 
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Ontico
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)Ontico
 
Remote Highload / Андрей Смирнов (Virtustream)
Remote Highload / Андрей Смирнов (Virtustream)Remote Highload / Андрей Смирнов (Virtustream)
Remote Highload / Андрей Смирнов (Virtustream)Ontico
 
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)Ontico
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Ontico
 
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...Красиво и не тормозит! Анимация без ущерба для производительности приложений ...
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...Ontico
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Ontico
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Ontico
 
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Ontico
 

Viewers also liked (20)

Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)Как мы готовим MySQL / Николай Королёв (Badoo)
Как мы готовим MySQL / Николай Королёв (Badoo)
 
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)
 
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...PostgreSQL: практические примеры оптимизации SQL-запросов /  Иван Фролков (Po...
PostgreSQL: практические примеры оптимизации SQL-запросов / Иван Фролков (Po...
 
Web scale backups for MySQL, Алексей Копытов (Percona)
Web scale backups for MySQL, Алексей Копытов (Percona)Web scale backups for MySQL, Алексей Копытов (Percona)
Web scale backups for MySQL, Алексей Копытов (Percona)
 
OpenZFS data-driven performance
OpenZFS data-driven performanceOpenZFS data-driven performance
OpenZFS data-driven performance
 
Импортозамещение КРОК
Импортозамещение КРОКИмпортозамещение КРОК
Импортозамещение КРОК
 
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
 
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
 
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
Производительность Unity3D: подводные камни / Алексей Чубарь (BIT.GAMES)
 
ZFS for Databases
ZFS for DatabasesZFS for Databases
ZFS for Databases
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
Non-Relational Postgres / Bruce Momjian (EnterpriseDB)
 
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo) Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
Отладка производительности приложения на Erlang / Максим Лапшин (Erlyvideo)
 
Remote Highload / Андрей Смирнов (Virtustream)
Remote Highload / Андрей Смирнов (Virtustream)Remote Highload / Андрей Смирнов (Virtustream)
Remote Highload / Андрей Смирнов (Virtustream)
 
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
HHVM: Efficient and Scalable PHP/Hack Execution / Guilherme Ottoni (Facebook)
 
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
Быстрое прототипирование бэкенда игры с геолокацией на OpenResty, Redis и Doc...
 
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...Красиво и не тормозит! Анимация без ущерба для производительности приложений ...
Красиво и не тормозит! Анимация без ущерба для производительности приложений ...
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
 
Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)Хранение данных на виниле / Константин Осипов (tarantool.org)
Хранение данных на виниле / Константин Осипов (tarantool.org)
 
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
Адаптивная оптимизация запросов в реляционных СУБД / Олег Иванов (Postgres Pr...
 

Similar to Эффективная отладка репликации MySQL / Света Смирнова (Percona)

Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQLSveta Smirnova
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBSergey Petrunya
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraSveta Smirnova
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected loadGrid Dynamics
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Oleg Tsarev
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeYehor Herasymchuk
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5DevDay
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned Alexander Syrotenko
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQLSveta Smirnova
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugAndrey Tokarchuk
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practiceAlexey Lesovsky
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурацииTimur Batyrshin
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"Provectus
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest
 

Similar to Эффективная отладка репликации MySQL / Света Смирнова (Percona) (20)

Что нужно знать о трёх топовых фичах MySQL
Что нужно знать  о трёх топовых фичах  MySQLЧто нужно знать  о трёх топовых фичах  MySQL
Что нужно знать о трёх топовых фичах MySQL
 
Эволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDBЭволюция репликации в MySQL и MariaDB
Эволюция репликации в MySQL и MariaDB
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
Deployment to production with an unexpected load
Deployment to production with an unexpected loadDeployment to production with an unexpected load
Deployment to production with an unexpected load
 
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
Асинхронная репликация без цензуры: архитектурные проблемы MySQL, или почему ...
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
Мониторинг и отладка MySQL: максимум информации при минимальных потерях / Све...
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Zero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And ForgeZero Downtime PHP Deployment with Envoyer And Forge
Zero Downtime PHP Deployment with Envoyer And Forge
 
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
SQL-ник DevDay. Рубцов. Новое в Percona Server и MariaDB в сравнении с MySQL 5.5
 
Breaking logs
Breaking logsBreaking logs
Breaking logs
 
How to cook a blockchain and not get burned
How to cook a blockchain and not get burned How to cook a blockchain and not get burned
How to cook a blockchain and not get burned
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQL
 
My sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmugMy sql 5.6-new-stable-mmug
My sql 5.6-new-stable-mmug
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
Streaming replication in practice
Streaming replication in practiceStreaming replication in practice
Streaming replication in practice
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Тестирование серверной конфигурации
Тестирование серверной конфигурацииТестирование серверной конфигурации
Тестирование серверной конфигурации
 
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
QA MeetUp - Тимур Батыршин: "Тестирование серверной конфигурации"
 
CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
 

More from Ontico

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Ontico
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Ontico
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Ontico
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)Ontico
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Ontico
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Ontico
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)Ontico
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)Ontico
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Ontico
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Ontico
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Ontico
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Ontico
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)Ontico
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Ontico
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...Ontico
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Ontico
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Ontico
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Ontico
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Ontico
 

More from Ontico (20)

Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
 
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
 
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
 
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
 
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
 
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
 
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
 
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)MySQL Replication — Advanced Features / Петр Зайцев (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
 
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
 
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
 
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
 
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
 
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
 
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...100500 способов кэширования в Oracle Database или как достичь максимальной ск...
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
 
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
 
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
 
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
 
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
Java и Linux — особенности эксплуатации / Алексей Рагозин (Дойче Банк)
 

Эффективная отладка репликации MySQL / Света Смирнова (Percona)

  • 2. ∙ Инженер тех. поддержки MySQL ∙ Автор ∙ MySQL Troubleshooting ∙ JSON UDF функции ∙ FILTER clause для MySQL ∙ Докладчик ∙ Percona Live, OOW, Fosdem, DevConf, ... Света Смирнова 2
  • 3. ∙Особенности репликации MySQL ∙Проблемы мастера ∙Проблемы Slave IO thread ∙Проблемы Slave SQL thread ∙Многопоточный слейв ∙Multi-master Содержание 3
  • 6. Мастер Слейв <- Инициирует <- Запрашивает пакет Асинхронная 5
  • 7. Мастер Отправляет пакет -> Слейв <- Инициирует <- Запрашивает пакет Асинхронная 5
  • 8. Мастер Отправляет пакет -> Слейв <- Инициирует <- Запрашивает пакет ... ? Асинхронная 5
  • 10. Мастер Слейв <- Инициирует <- Запрашивает пакет Полусинхронная (Semisynchrous plugin) 6
  • 11. Мастер Отправляет пакет -> Слейв <- Инициирует <- Запрашивает пакет Полусинхронная (Semisynchrous plugin) 6
  • 12. Мастер Отправляет пакет -> Ждёт "Ack" Слейв <- Инициирует <- Запрашивает пакет Полусинхронная (Semisynchrous plugin) 6
  • 13. Мастер Отправляет пакет -> Ждёт "Ack" Слейв <- Инициирует <- Запрашивает пакет <- Отправляет "Ack" Полусинхронная (Semisynchrous plugin) 6
  • 15. Мастер Получает изменение Передаёт движку -> Табличный движок Логическая 7
  • 16. Мастер Получает изменение Передаёт движку -> Табличный движок Пишет в таблицу Логическая 7
  • 17. Мастер Получает изменение Передаёт движку -> Табличный движок Пишет в таблицу <- Передаёт управление Логическая 7
  • 18. Мастер Получает изменение Передаёт движку -> Пишет в binary log Табличный движок Пишет в таблицу <- Передаёт управление Логическая 7
  • 19. Мастер Получает изменение Передаёт движку -> Пишет в binary log Синхронизируется -> Табличный движок Пишет в таблицу <- Передаёт управление <- Синхронизируется Логическая 7
  • 20. IO thread Читает с мастера SQL thread Два типа потоков 8
  • 21. IO thread Читает с мастера Сохраняет в relay log SQL thread Два типа потоков 8
  • 22. IO thread Читает с мастера Сохраняет в relay log SQL thread <- Читает из relay log Два типа потоков 8
  • 23. IO thread Читает с мастера Сохраняет в relay log SQL thread <- Читает из relay log Исполняет Два типа потоков 8
  • 24. ∙ В 5.6+ SQL thread-ов может быть много Несколько SQL-потоков 9
  • 25. ∙ В 5.6+ SQL thread-ов может быть много ∙ С точки зрения отладки ∙ IO thread один Несколько SQL-потоков 9
  • 26. ∙ В 5.6+ SQL thread-ов может быть много ∙ С точки зрения отладки ∙ IO thread один ∙ Relay log один Несколько SQL-потоков 9
  • 27. ∙ В 5.6+ SQL thread-ов может быть много ∙ С точки зрения отладки ∙ IO thread один ∙ Relay log один ∙ Может отставать от мастера Несколько SQL-потоков 9
  • 28. ∙ В 5.6+ SQL thread-ов может быть много ∙ С точки зрения отладки ∙ IO thread один ∙ Relay log один ∙ Может отставать от мастера ∙ Ошибка одного потока останавливает все Несколько SQL-потоков 9
  • 29. ∙ В 5.7+ может быть несколько мастеров Несколько мастеров (Multi-channel) 10
  • 30. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log Несколько мастеров (Multi-channel) 10
  • 31. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов Несколько мастеров (Multi-channel) 10
  • 32. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов ∙ Несколько SQL thread-ов Несколько мастеров (Multi-channel) 10
  • 33. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов ∙ Несколько SQL thread-ов ∙ slave_parallel_workers для каждого канала Несколько мастеров (Multi-channel) 10
  • 34. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов ∙ Несколько SQL thread-ов ∙ slave_parallel_workers для каждого канала ∙ Каналы независимые Несколько мастеров (Multi-channel) 10
  • 35. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов ∙ Несколько SQL thread-ов ∙ slave_parallel_workers для каждого канала ∙ Каналы независимые ∙ Ошибка на одном остановит только его Несколько мастеров (Multi-channel) 10
  • 36. ∙ В 5.7+ может быть несколько мастеров ∙ С точки зрения отладки ∙ Несколько наборов relay log ∙ Несколько IO thread-ов ∙ Несколько SQL thread-ов ∙ slave_parallel_workers для каждого канала ∙ Каналы независимые ∙ Ошибка на одном остановит только его ∙ Одноимённые объекты могут вызвать конфликты Несколько мастеров (Multi-channel) 10
  • 37. ∙ Необходимо указать ∙ Название master’s binary log file ∙ Позицию Позиционная 11
  • 38. ∙ Необходимо указать ∙ Название master’s binary log file ∙ Позицию ∙ С точки зрения отладки ∙ Событие выполняется по указателю позиции Позиционная 11
  • 39. ∙ Необходимо указать ∙ Название master’s binary log file ∙ Позицию ∙ С точки зрения отладки ∙ Событие выполняется по указателю позиции ∙ Легко пропустить Позиционная 11
  • 40. ∙ Необходимо указать ∙ Название master’s binary log file ∙ Позицию ∙ С точки зрения отладки ∙ Событие выполняется по указателю позиции ∙ Легко пропустить ∙ Легко переместить указатель в прошлое Позиционная 11
  • 41. ∙ Необходимо указать ∙ Название master’s binary log file ∙ Позицию ∙ С точки зрения отладки ∙ Событие выполняется по указателю позиции ∙ Легко пропустить ∙ Легко переместить указатель в прошлое ∙ Нет проверок Позиционная 11
  • 42. ∙ Каждая транзакция получает номер: GTID Глобальные идентификаторы транзакций (GTID) 12
  • 43. ∙ Каждая транзакция получает номер: GTID ∙ AUTO_POSITION=1 Глобальные идентификаторы транзакций (GTID) 12
  • 44. ∙ Каждая транзакция получает номер: GTID ∙ AUTO_POSITION=1 ∙ Не нужно указывать binary log и позицию Глобальные идентификаторы транзакций (GTID) 12
  • 46. Клиент INSERT INTO ... -> Binary log Statement-Based Binary Log Format 13
  • 47. Клиент INSERT INTO ... -> Binary log SET TIMESTAMP... Statement-Based Binary Log Format 13
  • 48. Клиент INSERT INTO ... -> Binary log SET TIMESTAMP... SET sql_mode... Statement-Based Binary Log Format 13
  • 49. Клиент INSERT INTO ... -> Binary log SET TIMESTAMP... SET sql_mode... INSERT INTO ... Statement-Based Binary Log Format 13
  • 50. Клиент Binary log Row-Based Binary Log Format 14
  • 51. Клиент UPDATE ... -> Binary log Row-Based Binary Log Format 14
  • 52. Клиент UPDATE ... -> Binary log SET TIMESTAMP... Row-Based Binary Log Format 14
  • 53. Клиент UPDATE ... -> Binary log SET TIMESTAMP... SET sql_mode... Row-Based Binary Log Format 14
  • 54. Клиент UPDATE ... -> Binary log SET TIMESTAMP... SET sql_mode... Строка до изменений Row-Based Binary Log Format 14
  • 55. Клиент UPDATE ... -> Binary log SET TIMESTAMP... SET sql_mode... Строка до изменений Строка с изменениями Row-Based Binary Log Format 14
  • 56. ∙ Лог ошибок Основные инструменты 15
  • 57. ∙ Лог ошибок ∙ На слейве ∙ SHOW SLAVE STATUS ∙ Таблицы в Performance Schema ∙ Системная база mysql Основные инструменты 15
  • 58. ∙ Лог ошибок ∙ На слейве ∙ На мастере ∙ SHOW MASTER STATUS ∙ SHOW BINLOG EVENTS ∙ mysqlbinlog Основные инструменты 15
  • 59. ∙ Лог ошибок ∙ На слейве ∙ На мастере ∙ Percona Toolkit Основные инструменты 15
  • 60. ∙ Лог ошибок ∙ На слейве ∙ На мастере ∙ Percona Toolkit ∙ MySQL Utilities Основные инструменты 15
  • 61. ∙ Всегда доступна, требует настройки ∙ Асинхронная ∙ Мастер ∙ Хранит все изменения в binary log Два формата: ROW и STATEMENT ∙ Слейв ∙ IO thread реплицирует с мастера в relay log ∙ SQL thread исполняет обновления Несколько SQL thread-ов в 5.6+ Несколько каналов (мастеров) в 5.7+ ∙ GTID в 5.6+ Особенности репликации: итоги 16
  • 63. ∙ Более активная запись ∙ binlog_row_image = FULL | MINIMAL | NOBLOB Производительность 18
  • 64. ∙ Более активная запись ∙ binlog_row_image = FULL | MINIMAL | NOBLOB ∙ binlog_cache_size Наблюдайте Binlog_cache_disk_use Производительность 18
  • 65. ∙ Более активная запись ∙ binlog_row_image = FULL | MINIMAL | NOBLOB ∙ binlog_cache_size Наблюдайте Binlog_cache_disk_use ∙ binlog_stmt_cache_size Наблюдайте Binlog_stmt_cache_disk_use Производительность 18
  • 66. ∙ Более активная запись ∙ Синхронизация ∙ binlog_sync ∙ Не изменяйте! Производительность 18
  • 67. ∙ Время жизни binary log ∙ expire_log_days Поведение 19
  • 68. ∙ Время жизни binary log ∙ Синхронизация ∙ SBR несовместима с READ COMMITTED и READ UNCOMMITTED Поведение 19
  • 69. ∙ Время жизни binary log ∙ Синхронизация ∙ Порядок записи в binary log ∙ Non-deterministic события и SBR Поведение 19
  • 71. ∙ SHOW SLAVE STATUS Slave_IO_Running: Connecting Slave_SQL_Running: Yes ... Last_IO_Errno: 1045 Last_IO_Error: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 1 Last_SQL_Errno: 0 Last_SQL_Error: ... Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: 160824 03:18:36 Last_SQL_Error_Timestamp: Сеть 21
  • 72. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status mysql> select * from performance_schema.replication_connection_statusG *************************** 1. row *************************** CHANNEL_NAME: GROUP_NAME: SOURCE_UUID: THREAD_ID: NULL SERVICE_STATE: CONNECTING COUNT_RECEIVED_HEARTBEATS: 0 LAST_HEARTBEAT_TIMESTAMP: 0000-00-00 00:00:00 RECEIVED_TRANSACTION_SET: LAST_ERROR_NUMBER: 1045 LAST_ERROR_MESSAGE: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4 LAST_ERROR_TIMESTAMP: 2016-08-24 03:21:36 1 row in set (0,01 sec) Сеть 21
  • 73. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status ∙ Error log 2016-08-24T00:18:36.077384Z 3 [ERROR] Slave I/O for channel ”: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 1, Error_code: 1045 2016-08-24T00:19:36.299011Z 3 [ERROR] Slave I/O for channel ”: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 2, Error_code: 1045 2016-08-24T00:20:36.485315Z 3 [ERROR] Slave I/O for channel ”: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 3, Error_code: 1045 2016-08-24T00:21:36.677915Z 3 [ERROR] Slave I/O for channel ”: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 4, Error_code: 1045 2016-08-24T00:22:36.872066Z 3 [ERROR] Slave I/O for channel ”: error connecting to master ’root@127.0.0.1:13000’ - retry-time: 60 retries: 5, Error_code: 1045 Сеть 21
  • 74. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status ∙ Error log ∙ Доступ $ perror 1045 MySQL error code 1045 (ER_ACCESS_DENIED_ERROR): Access denied for user ’%-.48s’@’%-.64s’ (using password: %s) Сеть 21
  • 75. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status ∙ Error log ∙ Доступ ∙ MySQL клиент и логин-пароль слейва $ mysql -h127.0.0.1 -P13000 -uroot -pbar Warning: Using a password on the command line interface can be insecure. ERROR 1045 (28000): Access denied for user ’root’@’localhost’ (using password: YES) Сеть 21
  • 76. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status ∙ Error log ∙ Доступ ∙ MySQL клиент и логин-пароль слейва SHOW GRANTS mysql> SHOW GRANTS; +----------------------------------+ | Grants for foo@% | +----------------------------------+ | GRANT SELECT ON *.* TO ’foo’@’%’ | +----------------------------------+ Сеть 21
  • 77. ∙ SHOW SLAVE STATUS ∙ P_S.replication_connection_status ∙ Error log ∙ Доступ ∙ MySQL клиент и логин-пароль слейва SHOW GRANTS ∙ Исправьте привилегии на мастере ∙ Перезапустите репликацию Сеть 21
  • 78. ∙ Обычные методы отладки ∙ Проверьте с клиентом командной строки ∙ См. также Troubleshooting hardware resource usage webinar Производительность 22
  • 80. ∙ Один мастер-один слейв ∙ Разные данные Слейв не может выполнить event из relay log ∙ Разные ошибки на мастере и слейве ∙ Слейв сильно отстаёт от мастера SQL thread: типичные проблемы 24
  • 81. ∙ Один мастер-один слейв ∙ Разные данные Слейв не может выполнить event из relay log ∙ Разные ошибки на мастере и слейве ∙ Слейв сильно отстаёт от мастера ∙ Круговая репликация и другая запись в дополнение к SQL thread ∙ Разные данные SQL thread: типичные проблемы 24
  • 82. ∙ Таблица менялась вне репликации? ∙ Как? ∙ Конфликт с обновлениями на мастере? Разные данные 25
  • 83. ∙ Таблица менялась вне репликации? ∙ Идентична ли структура таблиц? ∙ Percona Toolkit pt-table-checksum, pt-table-sync ∙ MySQL Utilities mysqlrplsync, mysqldbcompare, mysqldiff Разные данные 25
  • 84. ∙ Таблица менялась вне репликации? ∙ Идентична ли структура таблиц? ∙ Обновления в неправильном порядке? ∙ mysqlbinlog ∙ Логика приложения на мастере Разные данные 25
  • 85. ∙ Только при использовании SBR Обновления в неправильном порядке 26
  • 86. ∙ Только при использовании SBR ∙ Блокировки на уровне строк Обновления в неправильном порядке 26
  • 87. ∙ Только при использовании SBR ∙ Блокировки на уровне строк ∙ Триггеры ∙ SET GLOBAL slave_skip_counter – No GTIDs! ∙ Пропустите транзакцию – GTIDs ∙ Синхронизируйте таблицы! Обновления в неправильном порядке 26
  • 88. ∙ Только при использовании SBR ∙ Блокировки на уровне строк ∙ Триггеры ∙ Разные опции: для олдфагов ∙ Запустите слейв с опциями мастера ∙ Перезапустите SQL thread ∙ Исправлено в последних версиях Обновления в неправильном порядке 26
  • 89. ∙ Потоки ∙ Мастер выполняет обновления в несколько потоков ∙ Слейв использует один Слейв отстаёт от мастера 27
  • 90. ∙ Потоки ∙ Seconds_behind_master увеличивается – Нельзя однозначно полагаться! Слейв отстаёт от мастера 27
  • 91. ∙ Потоки ∙ Seconds_behind_master увеличивается – Нельзя однозначно полагаться! ∙ Настройте производительность слейва ∙ Multi-threaded слейв Один поток на одну базу в 5.6 Могут возникнуть проблемы параллельного выполнения между потоками слейва Слейв отстаёт от мастера 27
  • 92. ∙ Потоки ∙ Seconds_behind_master увеличивается – Нельзя однозначно полагаться! ∙ Настройте производительность слейва ∙ Multi-threaded слейв Один поток на одну базу в 5.6 Могут возникнуть проблемы параллельного выполнения между потоками слейва ∙ Индексы на слейве Имеет смысл только для SBR Слейв отстаёт от мастера 27
  • 94. ∙ Единственный relay log ∙ Скорость в высококонкурентной среде может быть меньше, чем у мастера Производительность 29
  • 95. ∙ Единственный relay log ∙ Скорость в высококонкурентной среде может быть меньше, чем у мастера ∙ slave_parallel_workers Производительность 29
  • 96. ∙ Единственный relay log ∙ Скорость в высококонкурентной среде может быть меньше, чем у мастера ∙ slave_parallel_workers ∙ slave_parallel_type=DATABASE | LOGICAL_CLOCK Производительность 29
  • 97. ∙ Те же методы, что и для однопоточного Неправильное поведение 30
  • 98. ∙ Те же методы, что и для однопоточного ∙ Ошибка одного thread-а останавливает все mysql> select WORKER_ID, SERVICE_STATE, LAST_SEEN_TRANSACTION, LAST_ERROR_NUMBER, -> LAST_ERROR_MESSAGE from performance_schema.replication_applier_status_by_workerG *************************** 1. row *************************** WORKER_ID: 1 SERVICE_STATE: OFF LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4988 LAST_ERROR_NUMBER: 0 LAST_ERROR_MESSAGE: *************************** 2. row *************************** WORKER_ID: 3 SERVICE_STATE: OFF LAST_SEEN_TRANSACTION: d318bc17-66dc-11e6-a471-30b5c2208a0f:4986 LAST_ERROR_NUMBER: 1032 LAST_ERROR_MESSAGE: Worker 2 failed executing transaction... Неправильное поведение 30
  • 100. ∙ Репликация должна быть настроена для каждого канала Особенности 32
  • 101. ∙ Репликация должна быть настроена для каждого канала ∙ Можно одновременно использовать мастера с GTID и без Особенности 32
  • 102. ∙ Репликация должна быть настроена для каждого канала ∙ Можно одновременно использовать мастера с GTID и без ∙ Те же проблемы и решения, что и в случае обычной репликации Особенности 32
  • 103. ∙ Репликация должна быть настроена для каждого канала ∙ Можно одновременно использовать мастера с GTID и без ∙ Те же проблемы и решения, что и в случае обычной репликации ∙ Фильтры применяются одновременно для всех каналов Особенности 32
  • 105. ∙ Проблемы мастера ∙ Те же, что и для обычного сервера ∙ Больше пишет и проверяет Итоги 34
  • 106. ∙ Проблемы мастера ∙ Slave IO thread ∙ Обычные проблемы с сетью ∙ mysql command line client для тестов Итоги 34
  • 107. ∙ Проблемы мастера ∙ Slave IO thread ∙ Slave SQL thread ∙ Обычные проблемы при выполнении запросов ∙ Обычные проблемы движка ∙ Меньше потоков выполнения, чем на мастере Итоги 34
  • 108. ∙ Basic Techniques – troubleshooting webinar ∙ Troubleshooting hardware resource usage webinar ∙ Introduction into storage engine troubleshooting webinar ∙ Percona Toolkit ∙ MySQL Utilities ∙ Книга MySQL High Availability ∙ MySQL Replication Team blog Больше информации 35
  • 109. ??? Место для ваших вопросов 36
  • 113. ∙ Актуальны ли данные? ∙ Одинаковы ли ∙ Структура таблиц ∙ Движок ∙ Данные ∙ Любая запись может сломать репликацию Асинхронная: вопросы на слейве 40
  • 114. ∙ Запись на мастере медленнее асинхронной репликации Полусинхронная: с точки зрения отладки 41
  • 115. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? Полусинхронная: с точки зрения отладки 41
  • 116. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ До версии 5.7: от одного слейва Полусинхронная: с точки зрения отладки 41
  • 117. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ До версии 5.7: от одного слейва ∙ Сейчас: rpl_semi_sync_master_wait_for_slave_count Полусинхронная: с точки зрения отладки 41
  • 118. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ До версии 5.7: от одного слейва ∙ Сейчас: rpl_semi_sync_master_wait_for_slave_count ∙ Остальных ждать не будет Полусинхронная: с точки зрения отладки 41
  • 119. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ Что значит "Ack"? Полусинхронная: с точки зрения отладки 41
  • 120. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ Что значит "Ack"? ∙ Событие записано в relay log Полусинхронная: с точки зрения отладки 41
  • 121. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ Что значит "Ack"? ∙ Событие записано в relay log ∙ Неизвестно, выполнено ли оно Полусинхронная: с точки зрения отладки 41
  • 122. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ Что значит "Ack"? ∙ Что происходит при timeout-е? Полусинхронная: с точки зрения отладки 41
  • 123. ∙ Запись на мастере медленнее асинхронной репликации ∙ Сколько "Ack"-ов ждёт мастер? ∙ Что значит "Ack"? ∙ Что происходит при timeout-е? ∙ Репликация становится асинхронной Полусинхронная: с точки зрения отладки 41
  • 124. ∙ Каждое изменение записывается дважды: Файлы движка: логи, данные, ... Бинарный лог Логическая: с точки зрения отладки 42
  • 125. ∙ Каждое изменение записывается дважды: Файлы движка: логи, данные, ... Бинарный лог ∙ Можно параллельно писать на слейве Логическая: с точки зрения отладки 42
  • 126. ∙ Не существует в MySQL! Для сравнения: физическая репликация 43
  • 127. ∙ Не существует в MySQL! ∙ Есть две закрытые реализации Для сравнения: физическая репликация 43
  • 128. ∙ Не существует в MySQL! ∙ Мастер пишет только в файлы движка Для сравнения: физическая репликация 43
  • 129. ∙ Не существует в MySQL! ∙ Мастер пишет только в файлы движка ∙ Которые реплицируются на слейв Для сравнения: физическая репликация 43
  • 130. ∙ Не существует в MySQL! ∙ Мастер пишет только в файлы движка ∙ Которые реплицируются на слейв ∙ С точки зрения отладки ∙ IO: изменения записываются единожды ∙ Нельзя параллельно писать на слейве ∙ Любое несоответствие данных приводит к поломке Для сравнения: физическая репликация 43
  • 131. ∙ Передача данных ∙ Выполнение ∙ Разные ∙ Диагностика ∙ Исправление Два типа потоков – два вида проблем 44
  • 132. ∙ Гарантия, что транзакция не будет выполнена дважды GTID: с точки зрения отладки 45
  • 133. ∙ Гарантия, что транзакция не будет выполнена дважды ∙ Простой failover GTID: с точки зрения отладки 45
  • 134. ∙ Гарантия, что транзакция не будет выполнена дважды ∙ Простой failover ∙ Пропустить одну транзакцию непросто GTID: с точки зрения отладки 45
  • 135. ∙ Гарантия, что транзакция не будет выполнена дважды ∙ Простой failover ∙ Пропустить одну транзакцию непросто ∙ Используйте mysqlslavetrx GTID: с точки зрения отладки 45
  • 136. ∙ Гарантия, что транзакция не будет выполнена дважды ∙ Простой failover ∙ Пропустить одну транзакцию непросто ∙ Используйте mysqlslavetrx ∙ Осторожнее с настройкой expire_logs_days! GTID: с точки зрения отладки 45
  • 137. ∙ Statement-based (SBR) ∙ Запросы записываются в оригинальном виде Форматы Binary log 46
  • 138. ∙ Statement-based (SBR) ∙ Запросы записываются в оригинальном виде ∙ Риск несовпадения данных (non-safe) INSERT IGNORE LIMIT без ORDER BY Non-deterministic функции ... Форматы Binary log 46
  • 139. ∙ Statement-based (SBR) ∙ Row-based (RBR) ∙ Обычно пишется больше данных IO Скорость передачи binlog_row_image Форматы Binary log 46
  • 140. ∙ Statement-based (SBR) ∙ Row-based (RBR) ∙ Обычно пишется больше данных IO Скорость передачи binlog_row_image ∙ Ухудшение производительности для таблиц без первичного (уникального) ключа Форматы Binary log 46
  • 141. ∙ Statement-based (SBR) ∙ Row-based (RBR) ∙ Смешанная (Mixed) ∙ Преимущества обоих форматов Форматы Binary log 46
  • 143. ∙ Информация о старте слейва Лог ошибок 48
  • 144. ∙ Информация о старте слейва ∙ Ошибки 2016-08-23T12:11:21.867440Z 4 [ERROR] Slave SQL for channel ’master-1’: Could not execute Update_rows event on table m2.t1; Can’t find record in ’t1’, Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event’s master log master-bin.000001, end_log_pos 1213, Error_code: 1032 2016-08-23T12:11:21.867471Z 4 [Warning] Slave: Can’t find record in ’t1’ Error_code: 1032 2016-08-23T12:11:21.867484Z 4 [ERROR] Error running query, slave SQL thread aborted. Fix the problem, and restart the slave SQL thread with "SLAVE START". We stopped at log ’master-bin.000001’ position 989 Лог ошибок 48
  • 145. ∙ Информация о старте слейва ∙ Ошибки ∙ Остановка слейва Лог ошибок 48
  • 146. Вся информация о слейве ∙ Конфигурация IO thread ∙ Конфигурация SQL thread ∙ Статус IO thread ∙ Статус SQL thread ∙ Ошибки Только последняя Все есть в логе ошибок SHOW SLAVE STATUS 49
  • 147. mysql> show slave status G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 ... Master_Log_File: master-bin.000002 Read_Master_Log_Pos: 63810611 Relay_Log_File: slave-relay-bin-master@002d1.000004 Relay_Log_Pos: 1156 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: No ... Replicate_Wild_Ignore_Table: Last_Errno: 1032 Last_Error: Could not execute Update_rows event on table m2.t1; Can’t find record in ’t1’, Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event’s master log master-bin.000001, end_log_pos 1213 Skip_Counter: 0 ... SHOW SLAVE STATUS 49
  • 148. ∙ Не нужно парсить вывод SHOW Таблицы в Performance Schema 50
  • 149. ∙ Не нужно парсить вывод SHOW ∙ Конфигурация ∙ replication_connection_configuration ∙ replication_applier_configuration ∙ mysql> select * from replication_connection_configuration -> join replication_applier_configuration using(channel_name); Таблицы в Performance Schema 50
  • 150. ∙ Не нужно парсить вывод SHOW ∙ Конфигурация ∙ Статус IO thread ∙ replication_connection_status Таблицы в Performance Schema 50
  • 151. ∙ Не нужно парсить вывод SHOW ∙ Конфигурация ∙ Статус IO thread ∙ Статус SQL thread ∙ replication_applier_status ∙ replication_applier_status_by_coordinator - MTS! mysql> select * from replication_applier_status join -> replication_applier_status_by_coordinator -> using(channel_name); Таблицы в Performance Schema 50
  • 152. ∙ Не нужно парсить вывод SHOW ∙ Конфигурация ∙ Статус IO thread ∙ Статус SQL thread ∙ replication_applier_status ∙ replication_applier_status_by_worker mysql> select * from replication_applier_status join -> replication_applier_status_by_worker -> using(channel_name); Таблицы в Performance Schema 50
  • 153. ∙ Master Info mysql> select * from slave_master_infoG *************************** 1. row *************************** Number_of_lines: 25 Master_log_name: mysqld-bin.000001 Master_log_pos: 154 Host: 127.0.0.1 User_name: root User_password: secret Port: 13000 Connect_retry: 60 Enabled_ssl: 0 ... Uuid: 31ed7c8f-74ea-11e6-8de8-30b5c2208a0f Retry_count: 86400 ... Enabled_auto_position: 1 ... Системная база mysql: только на слейве 51
  • 154. ∙ Master Info ∙ Relay log info mysql> select * from slave_relay_log_infoG *************************** 1. row *************************** Number_of_lines: 7 Relay_log_name: ./slave-relay-bin-master@002d1.000004 Relay_log_pos: 1156 Master_log_name: master-bin.000001 Master_log_pos: 989 Sql_delay: 0 Number_of_workers: 0 Id: 1 Channel_name: master-1 Системная база mysql: только на слейве 51
  • 155. ∙ Master Info ∙ Relay log info ∙ Worker info: multi-threaded slave mysql> select * from slave_worker_infoG *************************** 1. row *************************** Id: 1 ... *************************** 8. row *************************** Id: 8 Relay_log_name: ./Thinkie-relay-bin.000004 Relay_log_pos: 1216 Master_log_name: mysqld-bin.000001 Master_log_pos: 1342 Checkpoint_relay_log_name: ./Thinkie-relay-bin.000004 Checkpoint_relay_log_pos: 963 Checkpoint_master_log_name: mysqld-bin.000001 Системная база mysql: только на слейве 51
  • 156. mysql> show master statusG *************************** 1. row *************************** File: master-bin.000005 Position: 154 Binlog_Do_DB: Binlog_Ignore_DB: Executed_Gtid_Set: 1 row in set (0,00 sec) SHOW MASTER STATUS 52
  • 157. mysql> show binlog events in ’master-bin.000001’ from 989; +-------------------+------+----------------+-----------+-------------+-------------------------------- | Log_name | Pos | Event_type | Server_id | End_log_pos | Info +-------------------+------+----------------+-----------+-------------+-------------------------------- | master-bin.000001 | 989 | Anonymous_Gtid | 1 | 1054 | SET @@SESSION.GTID_NEXT= ... | master-bin.000001 | 1054 | Query | 1 | 1124 | BEGIN | master-bin.000001 | 1124 | Table_map | 1 | 1167 | table_id: 109 (m2.t1) | master-bin.000001 | 1167 | Update_rows | 1 | 1213 | table_id: 109 flags: STMT_END_F | master-bin.000001 | 1213 | Xid | 1 | 1244 | COMMIT /* xid=64 */ +-------------------+------+----------------+-----------+-------------+-------------------------------- 5 rows in set (0,00 sec) SHOW BINLOG EVENTS 53
  • 158. $ mysqlbinlog var/mysqld.1/data/master-bin.000001 –start-position=989 –stop-position=1213 ... # at 1167 #160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b Update_rows: table id 109 flags: STMT_END_F BINLOG ’ v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ== v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw== ’/*!*/; ROLLBACK /* added by mysqlbinlog */ /*!*/; SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/; ... mysqlbinlog 54
  • 159. $ mysqlbinlog -v var/mysqld.1/data/master-bin.000001 –start-position=989 –stop-position=1213 ... # at 1167 #160822 14:15:11 server id 1 end_log_pos 1213 CRC32 0x1f346c6b Update_rows: table id 109 flags: STMT_END_F BINLOG ’ v966VxMBAAAAKwAAAI8EAAAAAG0AAAAAAAEAAm0yAAJ0MQABAwABY2HOoQ== v966Vx8BAAAALgAAAL0EAAAAAG0AAAAAAAEAAgAB///+BQAAAP4GAAAAa2w0Hw== ’/*!*/; ### UPDATE ‘m2‘.‘t1‘ ### WHERE ### @1=5 ### SET ### @1=6 ROLLBACK /* added by mysqlbinlog */ /*!*/; SET @@SESSION.GTID_NEXT= ’AUTOMATIC’ /* added by mysqlbinlog */ /*!*/; ... mysqlbinlog 55
  • 160. ∙ Percona Toolkit ∙ pt-table-checksum Проверяет соответствие данных Тулкиты 56
  • 161. ∙ Percona Toolkit ∙ pt-table-checksum Проверяет соответствие данных ∙ pt-table-sync Исправляет несоответствия в данных Тулкиты 56
  • 162. ∙ Percona Toolkit ∙ pt-table-checksum Проверяет соответствие данных ∙ pt-table-sync Исправляет несоответствия в данных ∙ pt-slave-find Показывает топологию Тулкиты 56
  • 163. ∙ MySQL Utilities ∙ mysqlrplcheck Проверяет, можно ли запустить репликацию Тулкиты 56
  • 164. ∙ MySQL Utilities ∙ mysqlrplcheck Проверяет, можно ли запустить репликацию ∙ mysqlrplshow Показывает топологию Тулкиты 56
  • 165. ∙ MySQL Utilities ∙ mysqlrplcheck Проверяет, можно ли запустить репликацию ∙ mysqlrplshow Показывает топологию ∙ mysqlrplsync Проверяет соответствие данных Тулкиты 56
  • 166. ∙ MySQL Utilities ∙ mysqlrplcheck Проверяет, можно ли запустить репликацию ∙ mysqlrplshow Показывает топологию ∙ mysqlrplsync Проверяет соответствие данных ∙ mysqlslavetrx Пропускает 1-N транзакций Тулкиты 56
  • 167. ∙ MySQL Utilities ∙ mysqldbcompare Сравнивает две базы данных Тулкиты 56
  • 168. ∙ MySQL Utilities ∙ mysqldbcompare Сравнивает две базы данных ∙ mysqldiff Сравнивает определения объектов Тулкиты 56
  • 169. ∙ MySQL Utilities ∙ mysqldbcompare Сравнивает две базы данных ∙ mysqldiff Сравнивает определения объектов ∙ mysqlserverinfo Показывает основные опции, такие как port и datadir Ориентирован на репликацию Тулкиты 56
  • 170. ∙ Лог ошибок ∙ Слейв ∙ SHOW SLAVE STATUS ∙ Таблицы в Performance Schema ∙ Таблицы в mysql database ∙ Мастер ∙ SHOW MASTER STATUS ∙ SHOW BINLOG EVENTS ∙ mysqlbinlog ∙ mysql command line client Основные инструменты: итоги 57