SlideShare a Scribd company logo
1 of 35
Download to read offline
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
Сергей Петруня
MariaDB
Технологии Баз Данных 2016
Эволюция репликации
в MySQL и MariaDB
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:152
Виды репликации
● Master → Slave
● Изменения вносятся на
мастере
● И становятся видны на
реплике
● Multi-master
● Можно писать/читать на
любом узле
● Система разрешения или
недопущения конфликтов
M S
M M
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:153
Методы репликации
● Логическая - передаются изменения данныx
db1.table1
- 'pk-value', 'col1-old-value',123
+ 'pk-value', 'col1-new-value',456
update t1 set col1='col1-new-value' where...
● Физическая - Передаются изменения на диске
fileNNN.dat page NNN
- 0xABCD
+0xCDEF
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:154
Типы репликации в MySQL & Co
Master→Slave Multi-Master
Логическая
Физическая
MySQL-Репликация
• Statement-based
• Row-based
Galera Cluster
Percona XtraDB
Cluster
MySQL Group
Replication
InnoDB Cluster
MariaDB
Alibaba's InnoDB Physical
Replication*
Amazon Aurora *
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:155
Типы репликации в MySQL & Co
Master→Slave Multi-Master
Логическая
Физическая
MySQL-Репликация
• Statement-based
• Row-based
Galera Cluster
Percona XtraDB
Cluster
MySQL Group
Replication
InnoDB Cluster
MariaDB
Alibaba's InnoDB Physical
Replication*
Amazon Aurora *
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:156
Плюсы логической репликации
● mysqlbinlog > file.sql; vim file.sql
● Реплика не обязана быть точной копией мастера
● Другие индексы
● Под/над-множество данных
● --replicate-do-db,--replicate-ignore-db
● Возможность записи на реплике
● Реплика может быть не MySQL/MariaDB-сервером
● Hadoop, Binlog Server, и т. д.
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:157
Минусы логической репликации
● Возможность рассинхронизации мастера и реплики
● Называется “Data drift”
● Множество причин
● Производительность
● Мастер: кроме БД, надо еще писать изменения в
binlog (синхронно!)
● Реплика: трудности с параллельным
применением изменений (=> отстает от мастера)
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:158
Развитие репликации
● Multi-Source репликация
● Global Transaction ID (GTID)
● Параллельный slave
● ...
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:159
Multi-Source репликация
● MariaDB 10.0, MySQL 5.7
● Используется для “сбора” данных
из нескольких источников
● Конфликты не возникают
● Реализации похожи
● Синтаксис разный
● MySQL: Bug #80843:Replication
filters per channel in Multi-Source
Replication
M1 M2
S
M1 M2
S
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1510
Global Transaction ID
Репликация без GTID
● Каждая реплика помнит
(binlog_file, position) у своего мастера
● Трудно менять мастера
● box1.(file, position) → box2.( ? , ? )
● Как определить, какая из двух
реплик впереди?
● Отреплицировалась ли транзакция X
на реплику Y?
?
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1511
Global Transaction ID
● Каждая транзакция имеет свой идентификатор
● MySQL: server_uuid:number
● MariaDB: domain_id-server_id-number
● Состояние сервера: описание множества транзакций на
этом сервере
● MySQL: server_uid1:1-100,server_uid2:33-45
● MariaDB: 1-1-1234,2-2-2345
● Позволяет
● Легкое переключение между серверами
● Проверить, иммется ли на сервере X транзакция Y
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1512
Global Transaction ID
● MySQL 5.6 (февраль 2013)
● Первая реализация
● Много проблем
● Переключиться на GTID можно только одновременно
перезапустив всех участников репликации
● Мастер при запуске сканирует все свои логи
● ...
● MariaDB 10.0 (март 2014)
● Другая концепция GTID, не имеет многих проблем
● MySQL 5.7 (октябрь 2015)
● Многие проблемы исправлены
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1513
Параллельная репликация
● Мастер выполняет транзакции
параллельно
● В бинлог пишет последовательно
● На реплике читают транзакции
● И применяют последовательно
● Неэффективное использование CPU
● Реплика отстает от мастера
(slave lag)
A
B C
D
A
B
C
D
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1514
Идея #1: Независимые изменения
MySQL 5.6 (2013)
● Транзакции над разными базами
данных применяются параллельно
MariaDB 10.0 (2014),
● slave_parallel_mode=conservative:
● Транзакции из разных domain_id
применяются параллельно
M1 M2
S
● Этого недостаточно
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1515
Идея #2: Group commit на мастере
● Group commit with binary log – что это и что оно дает
A B C D
Работа с InnoDB
Готовы к коммиту
Запись в binlog
Коммит в InnoDB
Вместе готовы
к коммиту.
Значит, не
конфликтуют
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1516
Идея #2: Group commit на мастере
● Мастер помечает в binlog совместно коммитнувшие
транзакции
● На реплике их выполняют параллельно
● Реализации
● MariaDB: 10.0 (март 2014)
--slave-parallel-mode=conservative
● MySQL 5.7 (октябрь 2015)
--slave-parallel-type=logical_clock
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1517
Идея #3: агрессивная репликация
● A,B,C,D могут конфликтовать
● Все равно, пытаемся выполнить их
параллельно
● И пусть победит сильнейший при
конфликте более ранняя транзакция
имеет приоритет
● Более поздняя откатывается и
перезапускается.
● Из состояния “готов” коммитим c учетом
очередности.
A
B C
D
A
B
C
D
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1518
Идея #3: агрессивная репликация
● Только в MariaDB 10.1 (выпущена октябрь 2015)
● --slave-parallel-mode=optimistic
● Если ждали на блокировке на мастере, и т д – не
пытаться выполнить параллельно на реплике.
● --slave-parallel-mode=aggressive
● Пытаться выполнить все
● Оно действительно работает?
● Нету ли “толкотни” и кучи конфликтов?
● Да, работает. Конфликты редки
● cм “MySQL/MariaDB Parallel Replication: inventory, use-
cases and limitations”, Jean-François Gagné@Booking.com
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1519
Time Machine
оно же
Flashback
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1520
MariaDB 10.2: Time machine/Flashback
● Row-based binary log:
db1.table1
- 'pk-value', 'col1-old-value',123
+ 'pk-value', 'col1-new-value',456
● Идея: проиграть binlog “задом наперед”
insert_row(row) → delete_row(row)
delete_row(row) → insert_row(row)
update_row(old, new) → update_row(new, old)
● Патч к mysqlbinlog.
● Работает, пока нет DDL.
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1521
MariaDB 10.2: Time machine/Flashback
Обработка DDL
● Создали? Удалим:
● CREATE TABLE → DROP TABLE
● ALTER TABLE ADD COLUMN → DROP COLUMN
● Удалили?
● Нужна поддержка на сервере
● Общая идея: вместо удаления переименовывать
● Потом можно будет вернуться
● Да, это замедлит сервер.
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1522
Multi-master
репликация
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1523
Типы репликации в MySQL & Co
Master→Slave Multi-Master
Логическая
Физическая
MySQL-Репликация
• Statement-based
• Row-based
Galera Cluster
Percona XtraDB
Cluster
MySQL Group
Replication
InnoDB Cluster
MariaDB
Alibaba's InnoDB Physical
Replication*
Amazon Aurora *
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1524
Galera Cluster
● Multi-master репликация для InnoDB
● Логическая репликация
● Не использует систему репликации MySQL
● (использует только форматы данных)
10.1+
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1525
Принципы работы Galera
trx1
trx2
...
● Изменения делаются
локально
● Отсылаются всем членам
кластера на
“сертификацию”
● Сертифицируются всеми
узлами
● Порядок транзакций
● Отсуствие конфликтов
● Фиксируются на всех
узлах
● google://“Galera replication demystified”
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1526
Свойства Galera
● Multi-Master!
● Синхронная репликация
● Для работы необходим кворум
● Ограничения на транзакционную изоляцию между
узлами
● Serializable не поддерживается
● Поддерживается Repeatable Read?
● См http://tinyurl.com/nncmz3x
● Ограничения на размер транзакций, и тд.
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1527
MySQL Group Replication
● Очень похоже на Galera
● Реализация от Oracle
● Статус: Бета, плагин к MySQL 5.7
● InnoDB Cluster =
● MySQL Group replication
● + MySQL Router (для направления запросов и failover)
● + MySQL Shell (для управления кластером)
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1528
Физическая
репликация
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1529
Типы репликации в MySQL & Co
Master→Slave Multi-Master
Логическая
Физическая
MySQL-Репликация
• Statement-based
• Row-based
Galera Cluster
Percona XtraDB
Cluster
MySQL Group
Replication
InnoDB Cluster
MariaDB
Alibaba's InnoDB Physical
Replication*
Amazon Aurora *
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1530
Проблема слейва при физической репликации
1.ibd 2.ibd
Диск
Buffer poolInnoDB
SQL
RAM
1.ibd 2.ibd
✘ ✘
Buffer poolInnoDB
SQL
RAM
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1531
Физическая репликция
Традиционное решение
● Отсутствует
● Можно воспользоваться
DRBD (Distributed
Replicated Block Device)
● Пока работает мастер, реплика не может
работать *вообще*
● При смерти мастера запускается реплика
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1532
Alibaba's physical InnoDB replication
● Доклад на Percona Live: http://tinyurl.com/gunnfuu
● Не выложено в open source
● Утверждают, что
● Реплика доступна для чтения
● Не бывает рассинхронизации (data drift)
● Отставание репликации меньше
● На мастере делается меньше IO
● ...
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1533
Amazon Aurora
● Основана на технологиях Amazon для дисковых
устройств
● Доступна только как сервис в AWS
● Реплики доступны для чтения
● Marco Tusa @ Percona
проводил бенчмарки и
сравнение с Galera
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1534
Выводы
● Репликация в MySQL и MariaDB развивается
● Логическая Master->Slave
● Параллельная
● GTID
● Binlog server
● Мulti-Master
● Galera (→ MariaDB, → Percona)
● MySQL Group Replication
● Появляется и физическая
● Amazon Aurora, Alibaba?
Notice: MySQL is a registered trademark of Sun Microsystems, Inc.
16:03:1535
Спасибо за внимание!

More Related Content

What's hot

Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOpsSveta Smirnova
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaSveta Smirnova
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQLSveta Smirnova
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.Sergey Petrunya
 
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
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITLeonid Yuriev
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Ontico
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхSveta Smirnova
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XCPostgreSQL-Consulting
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Ontico
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPLeonid Yuriev
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийSveta Smirnova
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Ontico
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012Alex Chistyakov
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахAlexey Vasiliev
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...AvitoTech
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действииMikhail Shcherbakov
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridMikhail Shcherbakov
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Ontico
 

What's hot (20)

Производительность MySQL для DevOps
 Производительность MySQL для DevOps Производительность MySQL для DevOps
Производительность MySQL для DevOps
 
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения PerconaСовременному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
 
Как делать backup MySQL
Как делать backup MySQLКак делать backup MySQL
Как делать backup MySQL
 
MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.MariaDB 10.1 - что нового.
MariaDB 10.1 - что нового.
 
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
 
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen ITDevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
DevConf-2015: Lightning Memory-Mapped Database (LMDB), ReOpen IT
 
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
 
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потеряхМониторинг и отладка MySQL: максимум информации при минимальных потерях
Мониторинг и отладка MySQL: максимум информации при минимальных потерях
 
Максим Богук. Postgres-XC
Максим Богук. Postgres-XCМаксим Богук. Postgres-XC
Максим Богук. Postgres-XC
 
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
Использование очередей асинхронных сообщений с PostgreSQL (Илья Космодемьянский)
 
OSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAPOSSDEV-2015: ReOpenLDAP
OSSDEV-2015: ReOpenLDAP
 
Введение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложенийВведение в отладку производительности MySQL приложений
Введение в отладку производительности MySQL приложений
 
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
Очереди и блокировки. Теория и практика / Александр Календарев (ad1.ru)
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Mysql replication DevConf 2012
Mysql replication DevConf 2012Mysql replication DevConf 2012
Mysql replication DevConf 2012
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (..."Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
"Отказоустойчивый standby PostgreSQL (HAProxy + PgBouncer)" Виктор Ягофаров (...
 
Apache Ignite.NET в действии
Apache Ignite.NET в действииApache Ignite.NET в действии
Apache Ignite.NET в действии
 
Знакомство с In-Memory Data Grid
Знакомство с In-Memory Data GridЗнакомство с In-Memory Data Grid
Знакомство с In-Memory Data Grid
 
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
 

Viewers also liked

New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersSergey Petrunya
 
Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Ontico
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Ontico
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBSergey Petrunya
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Mail.ru Group
 
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Ontico
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityColin Charles
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)Ontico
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONAleksander Alekseev
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахAleksander Alekseev
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевAleksander Alekseev
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевAleksander Alekseev
 

Viewers also liked (12)

New features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizersNew features-in-mariadb-and-mysql-optimizers
New features-in-mariadb-and-mysql-optimizers
 
Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)Илья Космодемьянский (PostgreSQL-Consulting.com)
Илья Космодемьянский (PostgreSQL-Consulting.com)
 
Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)Сергей Житинский, Александр Чистяков (Git in Sky)
Сергей Житинский, Александр Чистяков (Git in Sky)
 
MyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDBMyRocks: табличный движок для MySQL на основе RocksDB
MyRocks: табличный движок для MySQL на основе RocksDB
 
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
Павел Лузанов, Postgres Professional. «PostgreSQL для пользователей Oracle»
 
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
Профилирование кода на C/C++ в *nix-системах / Александр Алексеев (Postgres P...
 
Best practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High AvailabilityBest practices for MySQL/MariaDB Server/Percona Server High Availability
Best practices for MySQL/MariaDB Server/Percona Server High Availability
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
 
ZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSONZSON, или прозрачное сжатие JSON
ZSON, или прозрачное сжатие JSON
 
Профилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системахПрофилирование кода на C/C++ в *nix системах
Профилирование кода на C/C++ в *nix системах
 
Функциональное программирование - Александр Алексеев
Функциональное программирование - Александр АлексеевФункциональное программирование - Александр Алексеев
Функциональное программирование - Александр Алексеев
 
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр АлексеевНовые технологии репликации данных в PostgreSQL - Александр Алексеев
Новые технологии репликации данных в PostgreSQL - Александр Алексеев
 

Similar to Эволюция репликации в MySQL и MariaDB

2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется всеОмские ИТ-субботники
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLAlex Chistyakov
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Ontico
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Ontico
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB ClusterVittorio Cioe
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQLSveta Smirnova
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Alexey Lesovsky
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)Ontico
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012Roman Pavlushko
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Ontico
 
Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Fwdays
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиFProg
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...tfmailru
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ RubtsovOntico
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаITCrowd Almaty
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_drupalconf
 

Similar to Эволюция репликации в MySQL и MariaDB (20)

2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
2013-01-05 01 Леонид Евдокимов. Web scale. Взорвется все
 
Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
 
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
Cравнительный анализ хранилищ данных (Олег Царев, Кирилл Коринский)
 
linux and freebsd monitoring
linux and freebsd monitoringlinux and freebsd monitoring
linux and freebsd monitoring
 
MySQL InnoDB Cluster
MySQL InnoDB ClusterMySQL InnoDB Cluster
MySQL InnoDB Cluster
 
Эффективная отладка репликации MySQL
Эффективная отладка репликации MySQLЭффективная отладка репликации MySQL
Эффективная отладка репликации MySQL
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)Call of Postgres: Advanced Operations (part 2)
Call of Postgres: Advanced Operations (part 2)
 
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
MySQL/InnoDB изнутри: узкие места / Александр Крижановский (NatSys Lab)
 
AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012AVITO. Решардинг Redis без даунтайма. DevConf 2012
AVITO. Решардинг Redis без даунтайма. DevConf 2012
 
Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)Percona XtraBackup: экспертные возможности (Алексей Копытов)
Percona XtraBackup: экспертные возможности (Алексей Копытов)
 
Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"Алексей Ильенко "In real-time with Apache Kafka"
Алексей Ильенко "In real-time with Apache Kafka"
 
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памятиЕвгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
Евгений Лазин. Неизменяемая структура данных HAMT для создания БД в памяти
 
Purely practical data structures
Purely practical data structuresPurely practical data structures
Purely practical data structures
 
Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...Опыт внедрения и использования распределенной системы хранения данных на осно...
Опыт внедрения и использования распределенной системы хранения данных на осно...
 
hl++ Rubtsov
hl++ Rubtsovhl++ Rubtsov
hl++ Rubtsov
 
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проектаКолёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
Колёса: Раньше и сейчас. Как поменять архитектуру высоконагруженного проекта
 
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresqlpgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
 
Hosting for forbes.ru_
Hosting for forbes.ru_Hosting for forbes.ru_
Hosting for forbes.ru_
 

More from Sergey Petrunya

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12Sergey Petrunya
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesSergey Petrunya
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Sergey Petrunya
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesSergey Petrunya
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureSergey Petrunya
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace WalkthroughSergey Petrunya
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemSergey Petrunya
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesSergey Petrunya
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что новогоSergey Petrunya
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performanceSergey Petrunya
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeSergey Petrunya
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Sergey Petrunya
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkSergey Petrunya
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standSergey Petrunya
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18Sergey Petrunya
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3Sergey Petrunya
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLSergey Petrunya
 
Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Sergey Petrunya
 

More from Sergey Petrunya (20)

New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12New optimizer features in MariaDB releases before 10.12
New optimizer features in MariaDB releases before 10.12
 
MariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixesMariaDB's join optimizer: how it works and current fixes
MariaDB's join optimizer: how it works and current fixes
 
Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8Improved histograms in MariaDB 10.8
Improved histograms in MariaDB 10.8
 
Improving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimatesImproving MariaDB’s Query Optimizer with better selectivity estimates
Improving MariaDB’s Query Optimizer with better selectivity estimates
 
JSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger pictureJSON Support in MariaDB: News, non-news and the bigger picture
JSON Support in MariaDB: News, non-news and the bigger picture
 
Optimizer Trace Walkthrough
Optimizer Trace WalkthroughOptimizer Trace Walkthrough
Optimizer Trace Walkthrough
 
ANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gemANALYZE for Statements - MariaDB's hidden gem
ANALYZE for Statements - MariaDB's hidden gem
 
Optimizer features in recent releases of other databases
Optimizer features in recent releases of other databasesOptimizer features in recent releases of other databases
Optimizer features in recent releases of other databases
 
MariaDB 10.4 - что нового
MariaDB 10.4 - что новогоMariaDB 10.4 - что нового
MariaDB 10.4 - что нового
 
Using histograms to get better performance
Using histograms to get better performanceUsing histograms to get better performance
Using histograms to get better performance
 
MariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit holeMariaDB Optimizer - further down the rabbit hole
MariaDB Optimizer - further down the rabbit hole
 
Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4Query Optimizer in MariaDB 10.4
Query Optimizer in MariaDB 10.4
 
Lessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmarkLessons for the optimizer from running the TPC-DS benchmark
Lessons for the optimizer from running the TPC-DS benchmark
 
MariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it standMariaDB 10.3 Optimizer - where does it stand
MariaDB 10.3 Optimizer - where does it stand
 
MyRocks in MariaDB | M18
MyRocks in MariaDB | M18MyRocks in MariaDB | M18
MyRocks in MariaDB | M18
 
New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3New Query Optimizer features in MariaDB 10.3
New Query Optimizer features in MariaDB 10.3
 
MyRocks in MariaDB
MyRocks in MariaDBMyRocks in MariaDB
MyRocks in MariaDB
 
Histograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQLHistograms in MariaDB, MySQL and PostgreSQL
Histograms in MariaDB, MySQL and PostgreSQL
 
Say Hello to MyRocks
Say Hello to MyRocksSay Hello to MyRocks
Say Hello to MyRocks
 
Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2Common Table Expressions in MariaDB 10.2
Common Table Expressions in MariaDB 10.2
 

Эволюция репликации в MySQL и MariaDB

  • 1. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. Сергей Петруня MariaDB Технологии Баз Данных 2016 Эволюция репликации в MySQL и MariaDB
  • 2. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:152 Виды репликации ● Master → Slave ● Изменения вносятся на мастере ● И становятся видны на реплике ● Multi-master ● Можно писать/читать на любом узле ● Система разрешения или недопущения конфликтов M S M M
  • 3. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:153 Методы репликации ● Логическая - передаются изменения данныx db1.table1 - 'pk-value', 'col1-old-value',123 + 'pk-value', 'col1-new-value',456 update t1 set col1='col1-new-value' where... ● Физическая - Передаются изменения на диске fileNNN.dat page NNN - 0xABCD +0xCDEF
  • 4. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:154 Типы репликации в MySQL & Co Master→Slave Multi-Master Логическая Физическая MySQL-Репликация • Statement-based • Row-based Galera Cluster Percona XtraDB Cluster MySQL Group Replication InnoDB Cluster MariaDB Alibaba's InnoDB Physical Replication* Amazon Aurora *
  • 5. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:155 Типы репликации в MySQL & Co Master→Slave Multi-Master Логическая Физическая MySQL-Репликация • Statement-based • Row-based Galera Cluster Percona XtraDB Cluster MySQL Group Replication InnoDB Cluster MariaDB Alibaba's InnoDB Physical Replication* Amazon Aurora *
  • 6. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:156 Плюсы логической репликации ● mysqlbinlog > file.sql; vim file.sql ● Реплика не обязана быть точной копией мастера ● Другие индексы ● Под/над-множество данных ● --replicate-do-db,--replicate-ignore-db ● Возможность записи на реплике ● Реплика может быть не MySQL/MariaDB-сервером ● Hadoop, Binlog Server, и т. д.
  • 7. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:157 Минусы логической репликации ● Возможность рассинхронизации мастера и реплики ● Называется “Data drift” ● Множество причин ● Производительность ● Мастер: кроме БД, надо еще писать изменения в binlog (синхронно!) ● Реплика: трудности с параллельным применением изменений (=> отстает от мастера)
  • 8. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:158 Развитие репликации ● Multi-Source репликация ● Global Transaction ID (GTID) ● Параллельный slave ● ...
  • 9. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:159 Multi-Source репликация ● MariaDB 10.0, MySQL 5.7 ● Используется для “сбора” данных из нескольких источников ● Конфликты не возникают ● Реализации похожи ● Синтаксис разный ● MySQL: Bug #80843:Replication filters per channel in Multi-Source Replication M1 M2 S M1 M2 S
  • 10. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1510 Global Transaction ID Репликация без GTID ● Каждая реплика помнит (binlog_file, position) у своего мастера ● Трудно менять мастера ● box1.(file, position) → box2.( ? , ? ) ● Как определить, какая из двух реплик впереди? ● Отреплицировалась ли транзакция X на реплику Y? ?
  • 11. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1511 Global Transaction ID ● Каждая транзакция имеет свой идентификатор ● MySQL: server_uuid:number ● MariaDB: domain_id-server_id-number ● Состояние сервера: описание множества транзакций на этом сервере ● MySQL: server_uid1:1-100,server_uid2:33-45 ● MariaDB: 1-1-1234,2-2-2345 ● Позволяет ● Легкое переключение между серверами ● Проверить, иммется ли на сервере X транзакция Y
  • 12. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1512 Global Transaction ID ● MySQL 5.6 (февраль 2013) ● Первая реализация ● Много проблем ● Переключиться на GTID можно только одновременно перезапустив всех участников репликации ● Мастер при запуске сканирует все свои логи ● ... ● MariaDB 10.0 (март 2014) ● Другая концепция GTID, не имеет многих проблем ● MySQL 5.7 (октябрь 2015) ● Многие проблемы исправлены
  • 13. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1513 Параллельная репликация ● Мастер выполняет транзакции параллельно ● В бинлог пишет последовательно ● На реплике читают транзакции ● И применяют последовательно ● Неэффективное использование CPU ● Реплика отстает от мастера (slave lag) A B C D A B C D
  • 14. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1514 Идея #1: Независимые изменения MySQL 5.6 (2013) ● Транзакции над разными базами данных применяются параллельно MariaDB 10.0 (2014), ● slave_parallel_mode=conservative: ● Транзакции из разных domain_id применяются параллельно M1 M2 S ● Этого недостаточно
  • 15. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1515 Идея #2: Group commit на мастере ● Group commit with binary log – что это и что оно дает A B C D Работа с InnoDB Готовы к коммиту Запись в binlog Коммит в InnoDB Вместе готовы к коммиту. Значит, не конфликтуют
  • 16. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1516 Идея #2: Group commit на мастере ● Мастер помечает в binlog совместно коммитнувшие транзакции ● На реплике их выполняют параллельно ● Реализации ● MariaDB: 10.0 (март 2014) --slave-parallel-mode=conservative ● MySQL 5.7 (октябрь 2015) --slave-parallel-type=logical_clock
  • 17. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1517 Идея #3: агрессивная репликация ● A,B,C,D могут конфликтовать ● Все равно, пытаемся выполнить их параллельно ● И пусть победит сильнейший при конфликте более ранняя транзакция имеет приоритет ● Более поздняя откатывается и перезапускается. ● Из состояния “готов” коммитим c учетом очередности. A B C D A B C D
  • 18. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1518 Идея #3: агрессивная репликация ● Только в MariaDB 10.1 (выпущена октябрь 2015) ● --slave-parallel-mode=optimistic ● Если ждали на блокировке на мастере, и т д – не пытаться выполнить параллельно на реплике. ● --slave-parallel-mode=aggressive ● Пытаться выполнить все ● Оно действительно работает? ● Нету ли “толкотни” и кучи конфликтов? ● Да, работает. Конфликты редки ● cм “MySQL/MariaDB Parallel Replication: inventory, use- cases and limitations”, Jean-François Gagné@Booking.com
  • 19. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1519 Time Machine оно же Flashback
  • 20. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1520 MariaDB 10.2: Time machine/Flashback ● Row-based binary log: db1.table1 - 'pk-value', 'col1-old-value',123 + 'pk-value', 'col1-new-value',456 ● Идея: проиграть binlog “задом наперед” insert_row(row) → delete_row(row) delete_row(row) → insert_row(row) update_row(old, new) → update_row(new, old) ● Патч к mysqlbinlog. ● Работает, пока нет DDL.
  • 21. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1521 MariaDB 10.2: Time machine/Flashback Обработка DDL ● Создали? Удалим: ● CREATE TABLE → DROP TABLE ● ALTER TABLE ADD COLUMN → DROP COLUMN ● Удалили? ● Нужна поддержка на сервере ● Общая идея: вместо удаления переименовывать ● Потом можно будет вернуться ● Да, это замедлит сервер.
  • 22. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1522 Multi-master репликация
  • 23. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1523 Типы репликации в MySQL & Co Master→Slave Multi-Master Логическая Физическая MySQL-Репликация • Statement-based • Row-based Galera Cluster Percona XtraDB Cluster MySQL Group Replication InnoDB Cluster MariaDB Alibaba's InnoDB Physical Replication* Amazon Aurora *
  • 24. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1524 Galera Cluster ● Multi-master репликация для InnoDB ● Логическая репликация ● Не использует систему репликации MySQL ● (использует только форматы данных) 10.1+
  • 25. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1525 Принципы работы Galera trx1 trx2 ... ● Изменения делаются локально ● Отсылаются всем членам кластера на “сертификацию” ● Сертифицируются всеми узлами ● Порядок транзакций ● Отсуствие конфликтов ● Фиксируются на всех узлах ● google://“Galera replication demystified”
  • 26. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1526 Свойства Galera ● Multi-Master! ● Синхронная репликация ● Для работы необходим кворум ● Ограничения на транзакционную изоляцию между узлами ● Serializable не поддерживается ● Поддерживается Repeatable Read? ● См http://tinyurl.com/nncmz3x ● Ограничения на размер транзакций, и тд.
  • 27. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1527 MySQL Group Replication ● Очень похоже на Galera ● Реализация от Oracle ● Статус: Бета, плагин к MySQL 5.7 ● InnoDB Cluster = ● MySQL Group replication ● + MySQL Router (для направления запросов и failover) ● + MySQL Shell (для управления кластером)
  • 28. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1528 Физическая репликация
  • 29. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1529 Типы репликации в MySQL & Co Master→Slave Multi-Master Логическая Физическая MySQL-Репликация • Statement-based • Row-based Galera Cluster Percona XtraDB Cluster MySQL Group Replication InnoDB Cluster MariaDB Alibaba's InnoDB Physical Replication* Amazon Aurora *
  • 30. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1530 Проблема слейва при физической репликации 1.ibd 2.ibd Диск Buffer poolInnoDB SQL RAM 1.ibd 2.ibd ✘ ✘ Buffer poolInnoDB SQL RAM
  • 31. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1531 Физическая репликция Традиционное решение ● Отсутствует ● Можно воспользоваться DRBD (Distributed Replicated Block Device) ● Пока работает мастер, реплика не может работать *вообще* ● При смерти мастера запускается реплика
  • 32. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1532 Alibaba's physical InnoDB replication ● Доклад на Percona Live: http://tinyurl.com/gunnfuu ● Не выложено в open source ● Утверждают, что ● Реплика доступна для чтения ● Не бывает рассинхронизации (data drift) ● Отставание репликации меньше ● На мастере делается меньше IO ● ...
  • 33. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1533 Amazon Aurora ● Основана на технологиях Amazon для дисковых устройств ● Доступна только как сервис в AWS ● Реплики доступны для чтения ● Marco Tusa @ Percona проводил бенчмарки и сравнение с Galera
  • 34. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1534 Выводы ● Репликация в MySQL и MariaDB развивается ● Логическая Master->Slave ● Параллельная ● GTID ● Binlog server ● Мulti-Master ● Galera (→ MariaDB, → Percona) ● MySQL Group Replication ● Появляется и физическая ● Amazon Aurora, Alibaba?
  • 35. Notice: MySQL is a registered trademark of Sun Microsystems, Inc. 16:03:1535 Спасибо за внимание!