Оглавление Предисловие XII Введение XIV Благодарности XVIII Ч А С Т Ь I Репликация 1

Глава 1 Введение 3

Что такое репликация? 5
А можно ли обойтись без резервного копирования? 6
Для чего нужен мониторинг? 7
Дополнительные источники 7
Заключение 8

Глава 2 Основы репликации MySQL 9

Репликация — первые шаги 10
Конфигурирование главного сервера 11
Конфигурирование подчиненного сервера 13
Подключение главного и подчиненного серверов 13
Кое-что о двоичном журнале 15
Что записано в двоичном журнале 15
Работа репликации 16
Структура и содержимое двоичного журнала 18
Управление репликацией средствами Python 21
Основные классы и функции 23
Операционная система 24
Класс сервера 24
Роли сервера 26
Создание новых подчиненных серверов 28
Копирование главного сервера 29
Копирование подчиненного сервера 31
Сценарии операции копирования 33
Распространенные задачи репликации и их решение 35
Создание отчетов 35
Заключение 43

Глава 3 Двоичный журнал событий 44

Структура двоичного журнала 45
Структура события двоичного журнала 47
Регистрация операторов в журнале 49
Регистрация операторов языка манипулирования данными 49
Регистрация операторов языка описания данных 50
Регистрация запросов 50
Операторы LOAD DATA INFILE 56
Фильтры двоичного журнала 58
Триггеры, события и хранимые программы 60
Хранимые процедуры 65
Хранимые функции 68
События 70
Специальные структуры 71
Модификации без транзакций и обработка ошибок 72
Регистрация транзакций 75
Кэш транзакций 76
Распределенная обработка транзакций с использованием XA 78
Управление двоичным журналом 80
Отказоустойчивость двоичного журнала 81
Ротация файлов двоичного журнала 82
Инциденты 84
Очистка файла двоичного журнала 85
Утилита mysqlbinlog 86
Примеры использования mysqlbinlog 86
Интерпретация событий 92
Параметры и переменные двоичного журнала 96
Заключение 98
Глава 4 Роль репликации в обеспечении высокой доступности 99
Избыточность 100
Планирование 102
Отказ подчиненного сервера 102
Отказ главного сервера 102
Отказ сервера ретрансляции 103
Аварийное восстановление 103
Процедуры 103
Горячий резерв 106
Два главных сервера 111
Полусинхронная репликация 120
Повышение подчиненного сервера 123
Круговая репликация 139
Заключение 143

Глава 5 Роль репликации MySQL в горизонтальном масштабировании 144

Горизонтальное масштабирование операций чтения, а не записи 146
Смысл асинхронной репликации 147
Управление топологией репликации 150
Пример балансировщика нагрузки уровня приложения 153
Иерархическая репликация 157
Настройка сервера-ретранслятора 158
Добавление ретранслятора программой на языке Python 160
Специализированные подчиненные серверы 161
Фильтрация событий репликации 162
Применение фильтрации для секционирования событий подчиненных серверов 164
Шардинг 165
Представление шарда 168
Секционирование данных 169
Балансировка шардов 171
Пример шардинга 173
Управление согласованностью данных 186
Согласованность данных в неиерархическом развертывании 187
Согласованность данных в иерархическом развертывании 189
Заключение 196

Глава 6 Дополнительные возможности репликации 197

Основы архитектуры репликации 197
Структура журнала ретрансляции 198
Потоки репликации 202
Запуск и остановка потоков подчиненного сервера 203
Репликация через Интернет 204
Настройка защищенной репликации с использованием встроенной поддержки SSL 206
Настройка защищенной репликации при помощи Stunnel 207
Тонкая настройка репликации 209
Информация о состоянии репликации 209
Параметры для обработки разорванных подключений 217
Как подчиненный сервер обрабатывает события 218
Роль потока ввода-вывода 219
Работа потока SQL 219
Обеспечение надежности и восстановление подчиненного сервера 226
Синхронизация, транзакции и проблемы при сбоях баз данных 226
Правила для защиты нетранзакционных операторов 228
Многоисточниковая репликация 229
Построчная репликация 232
Настройка построчной репликации 234
Смешанный режим репликации 235
События построчной репликации 236
Обработка событий 241
События и триггеры 242
Фильтрация 244
Заключение 246

Ч А С Т Ь I I Мониторинг и восстановление после сбоев 247

Глава 7 Основы мониторинга 249

Способы мониторинга 250
Что дает мониторинг 251
Компоненты системы, подлежащие мониторингу 251
Процессор 252
Оперативная память 253
Диск 254
Сетевая подсистема 255
Решения для мониторинга 256
Мониторинг в системах Linux и Unix 257
Активность процессов 258
Использование памяти 262
Использование диска 264
Сетевая активность 268
Общая информация о системе 269
Автоматизация мониторинга при помощи планировщика cron 270
Мониторинг Mac OS X 271
Системный профайлер 271
Приложение Console 273
Монитор активности 275
Мониторинг Microsoft Windows 278
Индекс производительности Windows 279
Отчет о работоспособности системы 280
Просмотр событий 283
Монитор стабильности системы 285
Диспетчер задач 286
Системный монитор 287
Мониторинг как профилактическое средство 289
Заключение 290

Глава 8 Мониторинг MySQL 291

Что такое производительность? 292
Мониторинг сервера MySQL 292
Управление производительностью в MySQL 293
Мониторинг производительности 293
Команды SQL 294
Утилита mysqladmin 300
Утилиты MySQL GUI 302
MySQL Administrator 302
MySQL Query Browser 312
Журналы сервера 313
Сторонние утилиты 316
Пакет MySQL Benchmark Suite 318
Производительность базы данных 320
Оценка производительности базы данных 320
Рекомендации по оптимизации баз данных 331
Рекомендации по повышению производительности 341
Все работает медленно 341
Медленные запросы 341
Медленная работа приложений 342
Медленная репликация 342
Заключение 343

Глава 9 Мониторинг механизмов БД 344

MyISAM 345
Оптимизация дискового файла БД 345
Настройка таблиц 345
Использование утилит MyISAM 346
Хранение таблицы в порядке индексации 348
Сжатие таблиц 348
Дефрагментация таблиц 349
Мониторинг кэша ключей 349
Предварительная загрузка в кэш 350
Использование нескольких кэшей ключей 351
Другие параметры 352
InnoDB 353
Использование команды SHOW ENGINE 355
Использование мониторов InnoDB 358
Мониторинг файлов журналов 361
Мониторинг пула буферов 362
Мониторинг табличных пространств 364
Использование таблиц INFORMATION_SCHEMA 365
Другие параметры 366
Заключение 367

Глава 10 Мониторинг репликации 368

Приступаем к работе 368
Настройка сервера 369
Фильтрация данных для репликации 369
Потоки репликации 371
Мониторинг главного сервера 373
Команды для мониторинга главного сервера 373
Переменные состояния на главном сервере 377
Мониторинг подчиненных серверов 377
Команды для мониторинга подчиненных серверов 377
Переменные состояния на подчиненном сервере 381
Мониторинг репликации при помощи MySQL Administrator 382
Прочие элементы 384
Вопросы, связанные с сетями 384
Задержки подчиненного сервера 384
Причины задержки подчиненных серверов и способы их устранения 385
Заключение 387

Глава 11 Устранение неполадок репликации 388

Возможные причины проблем 389
Проблемы на главном сервере 389
Проблемы на подчиненном сервере 394
Более сложные проблемы репликации 400
Средства решения проблем репликации 402
Рекомендации 403
Изучите топологию 403
Проверяйте состояние всех серверов 406
Проверяйте журналы 406
Проверяйте конфигурацию 407
Выполняйте безопасную остановку 407
После сбоя выполняйте перезапуск должным образом 407
Выполняйте неудачные запросы вручную 408
Общие процедуры 408
Отчеты об ошибках репликации 410
Заключение 410

Глава 12 Защита инвестиций 412

Что такое защита информации? 413
Три составляющих защиты информации 413
Почему важна защита информации 414
Обеспечение целостности, восстановление информации и роль резервного копирования 414
Высокая доступность или аварийное восстановление? 415
Аварийное восстановление 416
Важность восстановления данных 422
Резервное копирование и восстановление 423
Утилиты резервного копирования и решения на уровне ОС 428
Приложение InnoDB Hot Backup 428
Физическое копирование файлов 432
Утилита mysqldump 434
XtraBackup 437
Мгновенные снимки LVM 437
Сравнение способов резервного копирования 442
Резервное копирование и репликация MySQL 443
Резервное копирование и восстановление с использованием репликации 443
PITR 444
Автоматизация резервного копирования 452
Заключение 454

Глава 13 MySQL Enterprise 456

Начинаем работу с MySQL Enterprise 457
Варианты подписки 458
Обзор установки 459
Компоненты MySQL Enterprise 460
Сервер MySQL Enterprise 460
MEM 460
Поддержка MySQL 464
Использование MySQL Enterprise 464
Установка 465
Решение проблем с агентом мониторинга 467
Мониторинг 468
Анализатор запросов 474
Дальнейшая информация 476
Заключение 477

Ч А С Т Ь I I I Среды с высокой доступностью 479

Глава 14 Облачные вычисления 481

Что такое облачные вычисления? 482
Архитектуры облачных вычислений 484
Экономичны ли облачные вычисления? 488
Применение облачных вычислений 489
Преимущества облачных вычислений 489
Поставщики облачных вычислений 490
AWS 491
Обзор технологий 492
Как это работает 497
Утилиты облака Amazon 498
Приступаем к работе 501
Работа с диском 515
Что дальше? 520
MySQL в облаке 520
Репликация MySQL и EC2 520
Рекомендации по использованию MySQL в EC2 524
Открытое ПО для облачных вычислений 526
Заключение 527

Глава 15 MySQL Cluster 529

Что такое MySQL Cluster? 530
Терминология и компоненты 530
Отличия MySQL Cluster от MySQL 531
Типичная конфигурация 531
Возможности MySQL Cluster 532
Локальная и глобальная избыточность 534
Обработка журналов 534
Избыточность и распределенные данные 535
Архитектура MySQL Cluster 536
Как хранятся данные 537
Секционирование данных 540
Управление транзакциями 541
Онлайн-обслуживание 542
Пример конфигурации 543
Начало работы 543
Запуск MySQL Cluster 545
Тестирование кластера 550
Отключение кластера 550
Обеспечение высокой доступности 551
Восстановление системы 554
Восстановление узлов 555
Репликация 556
Обеспечение высокой производительности 561
Повышение производительности 561
Рекомендации по обеспечению высокой производительности 562
Заключение 565
Приложение Репликация: секреты и советы 567
Предметный указатель 580
Об авторах 606