high availability solutions with mysql
DESCRIPTION
MySQL replication MySQL cluster DRBD/HeartBeat/MySQL Shared DiskTRANSCRIPT
<Insert Picture Here>
Copyright Oracle 2010
Решения высокой надежности и
производительности для MySQL
Александр Рубин
Principal Consultant
5 девяток
9 9 9 99
35 days 4 days 50 mins 5 mins8 hours
Unmanaged
Replication
Technologies
Clustering
Technologies
Clustering &
Geographical
Redundancy
software upgrades
hardware upgrades
maintenance operations
software failures
network failures
power
failures
disasters
Well-Managed
hardware failures
Small
Business
ISPs &
Mainstream
Business
Data
Centers
Banking
Medical
Telco
Military
Defense
%.
Scale-Up vs. Scale-Out
• Более производиельный сервер (Scale-Up)
• Vertical
• Дорогие сервера
• Сложный апгрейд
• Больше серверов (Scale-Out)
• Horizontal
• Обычные сервера (как в Google)
• «Просто добавь сервер»
Low Cost
Hig
h C
os
t
Репликация в MySQL
Web/App
Server
Web/App
Server
Writes & Reads
MySQL Master
I/O
Thread
SQL
Thread
Writes
relay
binlog
MySQL Slave
mysqld
data
index &
binlogs
mysqld
databinlogReplication
Распределение нагрузки (Scale-Out)
Master Server Slave Server
Writes
Index &
Bin Log
Rotation
Writes
MySQL Replication
Reads
Possible Roles• Fail over server
• Used for performing backups
• Read/Write load balancing
• Additional slaves allow Scale-Out
BackupsBackups
Writes & Reads
Web/App
Server
Web/App
Server
Отказоустойчивость (Fail Over)
Master Server Slave Server
Writes
Index &
Bin Log
Rotation
Writes
MySQL Replication
Reads
Possible Roles• Fail over server
• Used for performing backups
• Read/Write load balancing
• Additional slaves allow Scale-Out
BackupsBackups
Web/App
Server
Web/App
Server
Manual
Fail Over
X
X
X
Fail Over
Linux Heartbeat, DRBD & MySQL
= Private IP =
10.10.10.21
Active Server Passive Server
= Private IP =
10.10.10.20
Primary DRBD Secondary DRBDDRBD
Linux Heartbeat= Virtual IP =
10.10.10.10
Web/App
Server
Web/App
Server
= Private IP =
10.10.10.21
Active Server Passive Server
= Private IP =
10.10.10.20
DRBDPrimary DRBD Secondary DRBD
X
X
Active
Primary DRBD
X
Linux Heartbeat= Virtual IP =
10.10.10.10
Web/App
Server
Web/App
Server
Linux Heartbeat, DRBD & MySQL
Кластер (MySQL Cluster)
MySQL
Server
MySQL
Server
Data
Node
Data
Node
Data
Node
Data
Node
NDB
Storage Engine
Management
Server
Management
Server
NDB APINDB API
MySQL Cluster
Data
Node
Data
NodeData
Node
Data
Node
MySQL
Server
MySQL
Server
MySQL
Server
MySQL
Server
Management
Server
Management
Server
MySQL
Server
MySQL
Server
MySQL
Server
MySQL
Server
Архитектура данных в кластере
• Four Data Nodes
• Two Replicas
• Two Node Groups
8ChinaBeijing8
2NorwayOslo7
4RussiaMoscow6
2GreeceAthens5
9JapanTokyo4
-5USANew York City3
2GermanyBerlin2
2DenmarkCopenhagen1
UTCCountryCapitalID
8ChinaBeijing8
2NorwayOslo7
4RussiaMoscow6
2GreeceAthens5
9JapanTokyo4
-5USANew York City3
2GermanyBerlin2
2DenmarkCopenhagen1
UTCCountryCapitalID
Partition 1
Partition 2
Partition 3
Partition 4
Data
Node
Data
Node
P1-Primary
P2-Secondary
P1-Secondary
P2-Primary
Data
Node
Data
Node
Node Group 1
Data
Node
Data
Node
P3-Primary
P4-Secondary
P3-Secondary
P4-Primary
Data
Node
Data
Node
Node Group 2
Отказоустойчивость
MySQL
Server
MySQL
Server
Data
Node
Data
Node
Data
Node
Data
Node
NDB
Storage Engine
Management
Server
Management
Server
NDB APINDB API
MySQL Cluster
Data
Node
Data
NodeData
Node
Data
Node
MySQL
Server
MySQL
Server
MySQL
Server
MySQL
Server
Management
Server
Management
Server
MySQL
Server
MySQL
Server
MySQL
Server
MySQL
ServerXX X
X
XX
Решения
• Репликация Master/Slave
• Slaves только для чтения
• Master<->Master
• Репликация типа «кольцо» (ring)
• DRDB HA
• DRBD Master и Read Only Slaves
• Master to Master Cross Datacenter + DRDB
• Шардинг (Sharding)
• Шардинг + DRDB + Geo Redundancy
ТопологияMaster > Slave
Masters > Slave (Multi-Source)
Master < > Master (Multi-Master)
Master > Slaves
Circular (Multi-Master)
Master > Slave > Slaves
Решение: Репликация Master/Slave
• Преимущества– Чтение с любого сервера
– распределение нагрузки
– Простота установки– Отказоустойчивость ~99.9% (3 девятки)
• Недостатки: Асинхронная репликация (!)– Slave может не получить изменения вовремя– Записываем, читаем записанное со Slave –
Oooops!– Запись – ТОЛЬКО на Master
Master SlaveAsynchronous
MySQL
Replication
Решениe: Master и много Slaves
• Master может иметь много Slaves
• Чтение данных (select) – 4-5 девяток (HA)
• Распределение нагрузки – чтение с любого slaves
• Увеличилась нагрузка – добавим Slave
• Сложные запросы (отчеты) – гоняем на Slave
• Backup
Master
Slave 1 Slave 4
Slave 3Slave 2
Репликация Master-Master
• Преимущества• Чтение с любого сервера• Простота установки• Отказоустойчивость (осторожно!)• Надежность на уровне ~99.9%
• Недостатки• Нет распределения нагрузки для записи• При отказе – потеря транзакций!
Master 1 Master 2
Pattern: Ring Replication
• Недостатки
– Легко ломается – сложно востановить данные
– Запись на Master 4 придет после записи на Master
3
• Не рекомендуется
Master 1 Master 3
Master 2 Master 4
Asynchronous
MySQL
Replication
Решение: DRBD и Slaves для
чтения
• Отказоустойчивость для Master
• Чтение с любого Slave
• Slave автоматически пере-подключаются после
сбоя мастера
Hot Primary Warm SecondarySynchronous
DRBD
Replication
Master Pair
DRBD и балансировка нагрузки
Географическая отказоустойчивость
Sharding (Шардинг)
Shard A Shard B Shard DShard C
Шардинг с DRBD
The presentation is intended to outline our general
product direction. It is intended for information
purposes only, and may not be incorporated into any
contract. It is not a commitment to deliver any
material, code, or functionality, and should not be
relied upon in making purchasing decisions.
The development, release, and timing of any
features or functionality described for Oracle’s
products remains at the sole discretion of Oracle.