2011г.
представляет собой практическое руководство по MySQL — наиболее приспособленной для применения в среде Веб системы управления базами данных. Подробно разобранные примеры, практические инструкции признанного эксперта, детализированные примеры кода, сопровождающие каждую главу, позволят вам освоить приемы использования СУБД с самых основ. Вы узнаете, как установить и запустить MySQL, как создать собственную базу данных, как работать с данными при помощи команд SQL, как администрировать базу данных и оптимизировать ее работу. Вы сможете изучить особенности и принципы действия СУБД, ее техническую архитектуру и сумеете по максимуму использовать все сильные стороны MySQL.
Об авторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
О техническом редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Целевая аудитория данной книги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Что рассматривается в данной книге . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Соглашения, используемые в данной книге . . . . . . . . . . . . . . . . . . . . . . . 25
От издательства . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Часть I. Использование
Глава 1. Введение в MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
История . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Уникальные особенности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Скорость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Надежность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Масштабируемость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Простота использования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Переносимость и соответствие стандартам . . . . . . . . . . . . . . . . . . 31
Многопользовательская поддержка . . . . . . . . . . . . . . . . . . . . . . . . 32
Интернационализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Широкая поддержка приложений . . . . . . . . . . . . . . . . . . . . . . . . . 32
Открытый исходный код . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Семейство продуктов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MySQL Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MySQL Cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
MySQL Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Administrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Query Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Workbench . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
MySQL Migration Toolkit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
MySQL Embedded Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Драйверы и коннекторы MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Техническая архитектура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Подсистемы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Связность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Соответствие стандартам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Транзакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Кэширование запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Расширяемость . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Поддержка симметричной многопроцессорной обработки . . . . . . . 39
Безопасность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Интерфейсы программирования приложений API . . . . . . . . . . . . . 40
Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Веб-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Хранилища данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Бизнес-приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Глава 2. Базовые команды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Понятие базовых концепций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Базы данных, таблицы и записи . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Первичные и внешние ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Язык структурированных запросов SQL . . . . . . . . . . . . . . . . . . . . . 49
Нормализация баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Работа с базами данных и таблицами . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Клиент командной строки MySQL . . . . . . . . . . . . . . . . . . . . . . . . . 52
Создание баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Создание таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Изменение таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Удаление таблиц и баз данных . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Работа с записями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Создание записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Удаление и модифицирование записей . . . . . . . . . . . . . . . . . . . . . 61
Извлечение записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Просмотр информации о базах данных, таблицах и графах . . . . . . . . . . . 74
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Глава 3. Принятие решений при проектировании . . . . . . . . . . . . . . 76
Выбор типов данных граф . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Числовые типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Символьные и строковые типы . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Текстовые и двоичные типы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Типы DATE и TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Перечисления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
Что следует учитывать при выборе типа данных . . . . . . . . . . . . . . 79
Выбор механизмов хранения для таблиц . . . . . . . . . . . . . . . . . . . . . . . . . 80
Механизм хранения MyISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Механизм хранения InnoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
Механизм хранения Archive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Механизм хранения Federated . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Механизм хранения Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Механизм хранения CSV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Механизм хранения MERGE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Механизм хранения ISAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Механизм хранения NDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Что следует учитывать при выборе механизма хранения . . . . . . . . 84
Использование первичных и внешних ключей . . . . . . . . . . . . . . . . . . . . . 84
Первичные ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Внешние ключи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Использование индексов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Индекс UNIQUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Индекс FULLTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Глава 4. Соединения, подзапросы и представления . . . . . . . . . . . . 97
Использование соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Простое соединение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Типы соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Использование подзапросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Простой подзапрос . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Типы подзапросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Использование представлений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Простое представление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Безопасность представлений . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Многотабличные представления . . . . . . . . . . . . . . . . . . . . . . . . . 128
Вложенные представления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Обновляемые представления . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Глава 5. Транзакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Понятие транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Свойства ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
MySQL и свойства ACID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Простая транзакция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Точки сохранения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Управление поведением транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Автоматическая фиксация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Уровни изоляции транзакций . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
Уровень изоляции READ COMMITTED . . . . . . . . . . . . . . . . . . . . . 152
Уровень изоляции REPEATABLE READ . . . . . . . . . . . . . . . . . . . . . 153
Уровень изоляции SERIALIZABLE . . . . . . . . . . . . . . . . . . . . . . . . . 153
Псевдотранзакции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Табличные блокировки как замена транзакций . . . . . . . . . . . . . . 156
Реализация псевдотранзакции с использованием
табличных блокировок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
Глава 6. Хранимые процедуры и функции . . . . . . . . . . . . . . . . . . . . 162
Понятие хранимого кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
Создание и использование хранимых процедур . . . . . . . . . . . . . . 164
Создание и использование хранимых функций . . . . . . . . . . . . . . 171
Определение характеристик хранимого кода . . . . . . . . . . . . . . . . 175
Что еще можно сделать, используя хранимый код . . . . . . . . . . . . . . . . . 176
Переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Проверки условий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
Конструкция CASE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
Обработчики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Глава 7. Триггеры и запланированные события . . . . . . . . . . . . . . . 196
Понятие триггеров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Простой триггер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Триггеры и значения OLD/NEW . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Триггеры и более сложные приложения . . . . . . . . . . . . . . . . . . . 201
Триггеры и ограничения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
Запланированные события . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Простое запланированное событие . . . . . . . . . . . . . . . . . . . . . . . 210
Повторяющиеся события . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
События, инициируемые только один раз . . . . . . . . . . . . . . . . . . 216
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Глава 8. Работа с данными разных форматов . . . . . . . . . . . . . . . . . 218
Импорт записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
Экспорт записей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Работа с XML-данными . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
Вывод результатов в формате XML . . . . . . . . . . . . . . . . . . . . . . . 224
Использование функций для обработки XML-данных . . . . . . . . . . 225
Импорт XML-данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Экспорт XML-данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239
Глава 9. Оптимизация производительности . . . . . . . . . . . . . . . . . . 241
Оптимизация запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Индексирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Кэширование запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Анализ запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Оптимизация соединений и подзапросов . . . . . . . . . . . . . . . . . . . . . . . . 249
Используйте соединения вместо подзапросов . . . . . . . . . . . . . . . 250
Используйте сеансовые переменные и временные таблицы
для временных данных и вычислений . . . . . . . . . . . . . . . . . . . 251
Указывайте имена выходных граф явным образом . . . . . . . . . . . 252
Проводите индексирование граф соединения . . . . . . . . . . . . . . . 253
Переписывайте коррелированные подзапросы
в виде соединений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Заменяйте материализованные подзапросы временными
таблицами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Оптимизация транзакционной производительности . . . . . . . . . . . . . . . . 254
Поддерживайте небольшой размер транзакций . . . . . . . . . . . . . 254
Выбирайте подходящий уровень изоляции . . . . . . . . . . . . . . . . . 255
Избегайте взаимных блокировок . . . . . . . . . . . . . . . . . . . . . . . . . 257
Оптимизация хранимого кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Стремитесь к простоте . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
Оптимизируйте SQL-операторы, которые содержатся
в хранимом коде . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259
Не смешивайте хранимые процедуры и триггеры . . . . . . . . . . . . 260
Оптимизация конструкции таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Оптимизация настроек сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Тесты производительности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
Часть II. Администрирование
Глава 10. Базовое администрирование сервера . . . . . . . . . . . . . . . 270
Администрирование баз данных и MySQL . . . . . . . . . . . . . . . . . . . . . . . . 271
Работоспособность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271
Резервное копирование данных . . . . . . . . . . . . . . . . . . . . . . . . . 271
Безопасность и управление доступом . . . . . . . . . . . . . . . . . . . . . 272
Оптимизация производительности . . . . . . . . . . . . . . . . . . . . . . . 273
Общие сведения о базовом администрировании сервера . . . . . . . . . . . . 274
Запуск и остановка сервера . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Проверка состояния сервера MySQL . . . . . . . . . . . . . . . . . . . . . . 276
Управление клиентскими процессами MySQL . . . . . . . . . . . . . . . . 277
Внесение изменений в конфигурацию сервера . . . . . . . . . . . . . . 278
Извлечение значений переменных . . . . . . . . . . . . . . . . . . . . . . . 282
Настройка режима сервера SQL . . . . . . . . . . . . . . . . . . . . . . . . . 283
Устранение неполадок с использованием журнала ошибок . . . . . 285
Извлечение метаинформации баз данных . . . . . . . . . . . . . . . . . . . . . . . 285
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
Глава 11. Управление пользователями и контроль
над доступом . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Понятие системы управления доступом . . . . . . . . . . . . . . . . . . . . . . . . . 291
Таблица user . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
Таблицы db и host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Таблицы tables_priv и columns_priv . . . . . . . . . . . . . . . . . . . . . . . 299
Таблица procs_priv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
Взаимодействие между таблицами привилегий . . . . . . . . . . . . . . 303
Управление привилегиями пользователей . . . . . . . . . . . . . . . . . . . . . . . 304
Предоставление и отмена привилегий . . . . . . . . . . . . . . . . . . . . 304
Просмотр привилегий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Восстановление привилегий по умолчанию . . . . . . . . . . . . . . . . . 309
Работа с учетными записями и паролями пользователей . . . . . . . . . . . . 310
Пароль администратора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
Глава 12. Сопровождение, резервное копирование
и восстановление . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314
Использование файлов журналов баз данных . . . . . . . . . . . . . . . . . . . . 314
Журнал ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Общий журнал запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Журнал медленных запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
Двоичный журнал . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Проверка и восстановление таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
Проверка таблиц на предмет ошибок . . . . . . . . . . . . . . . . . . . . . 319
Восстановление таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Оптимизация таблиц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
Резервное копирование и восстановление данных . . . . . . . . . . . . . . . . . 322
Резервное копирование баз данных и таблиц . . . . . . . . . . . . . . . 323
Резервное копирование сразу нескольких баз данных . . . . . . . . . 324
Резервное копирование структур таблиц . . . . . . . . . . . . . . . . . . . 325
Резервное копирование содержимого таблиц . . . . . . . . . . . . . . . 325
Резервное копирование прочих объектов баз данных . . . . . . . . . 325
Восстановление баз данных и таблиц из резервной копии . . . . . . 326
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
Глава 13. Репликация данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Понятие репликации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
Взаимоотношение «головной сервер — подчиненный сервер» . . . 330
Потоки репликации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Методы репликации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Конфигурирование системы репликации «головной сервер —
подчиненный сервер» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Конфигурирование системы репликации «головной сервер —
головной сервер» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Управление репликацией . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Внесение изменений в параметры репликации . . . . . . . . . . . . . . 341
Запуск и остановка подчиненных серверов . . . . . . . . . . . . . . . . . 342
Проверка состояния репликации . . . . . . . . . . . . . . . . . . . . . . . . . 342
Работа с двоичными журналами головного сервера . . . . . . . . . . . 345
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Приложение. Установка MySQL и воссоздание
образца базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347
Загрузка дистрибутива MySQL из Интернета . . . . . . . . . . . . . . . . . . . . . . 347
Выбор версии для установки . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
Выбор между двоичным и исходным дистрибутивом . . . . . . . . . . 348
Установка и конфигурирование MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . 349
Установка на платформе UNIX . . . . . . . . . . . . . . . . . . . . . . . . . . 350
Установка на платформе Windows . . . . . . . . . . . . . . . . . . . . . . . . 351
Тестирование MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Выполнение постинсталляционных мероприятий . . . . . . . . . . . . . . . . . . 357
Задание пароля суперпользователя MySQL . . . . . . . . . . . . . . . . . 357
Конфигурирование MySQL и Apache на автоматический запуск . . 358
Работа с образцом базы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Воссоздание образца базы данных . . . . . . . . . . . . . . . . . . . . . . . 359
Структура образца базы данных . . . . . . . . . . . . . . . . . . . . . . . . . 360
Заключение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36