В корзину
Купить в 1 клик
Бесплатная доставка Новой Почтой
Отправка на следующий рабочий день
Отправка на следующий рабочий день
Описание
2011г.
Количество страниц: 368
Данная книга MySQL: использование и администрирование. Васвани представляет собой практическое руководство по 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
Количество страниц: 368
Данная книга MySQL: использование и администрирование. Васвани представляет собой практическое руководство по MySQL — наиболее приспособленной для применения в среде Веб системы управления базами данных. Подробно разобранные примеры, практические инструкции признанного эксперта, детализированные примеры кода, сопровождающие каждую главу, позволят вам освоить приемы использования СУБД с самых основ. Вы узнаете, как установить и запустить MySQL, как создать собственную базу данных, как работать с данными при помощи команд SQL, как администрировать базу данных и оптимизировать ее работу. Вы сможете изучить особенности и принципы действия СУБД, ее техническую архитектуру и сумеете по максимуму использовать все сильные стороны MySQL.
Оглавление книги
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
