Опубликовано

Новая книга: “Изучаем MySQL. 2-е издание”

Изучаем MySQL. 2-е издание

Книга знакомит с MySQL — самой популярной системой управления базами данных с открытым исходным кодом. Изложены основы MySQL: установка, моделирование и конструирование баз данных, команды SQL и создание новой базы данных. Рассмотрены практически вопросы работы с MySQL: расширенные запросы, транзакции и замковый механизм, проверка эффективности запросов, управление пользователями и привилегиями, использование файлов опций, резервное копирование и восстановление, конфигурирование и настройка сервераОтдельное внимание уделено мониторингу серверов MySQL, асинхронной и синхронной репликации, кластерным решениям, работе в облаке, балансировке нагрузки и другим продвинутым методам и инструментам.

Электронный архив на сайте издательства содержит цветные иллюстрации к книге.

Для программистов баз данных

Возьмите свои данные под контроль

Книга дает исчерпывающий обзор организации и конструирования эффективной базы данных с помощью MySQL. Рассматривается последняя версия MySQL, включая ее наиболее важные аспекты. Независимо от того, над чем вы работаете, будь то развертывание рабочей среды, устранение неполадок или аварийное восстановление, настоящее практическое руководство предоставляет полезные рекомендации и описание инструментов, необходимые для полного использования преимуществ этой мощной реляционной СУБД.

Для разработчиков и администраторов баз данных приведены методы минимизации издержек и максимизации доступности и производительности. Показано, как выполнять базовые и расширенные запросы, проводить мониторинг и устранять неполадки, управлять базами данных и обеспечивать безопасность, резервное копирование и восстановление, а также настраивать MySQL на повышение эффективности. Освещены продвинутые методы асинхронной и синхронной репликации, балансировки нагрузки и использования MySQL в облаке.

Вы узнаете, как:

  • Начинать работу с реляционной СУБД MySQL и управлять данными
  • Развертывать базы данных MySQL на “голом железе”, на виртуальных машинах и в облаке
  • Конструировать инфраструктуры базы данных
  • Кодировать высокоэффективные запросы
  • Обеспечивать мониторинг и устранять неполадки баз данных MySQL
  • Выполнять эффективные операции резервного копирования и восстановления
  • Оптимизировать издержки баз данных в облаке
  • Понимать концепции баз данных, в особенности те, которые относятся к MySQL

Книгу “Изучаем MySQL. 2-е издание” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Отзывы………………………………………………………………………………………………….. 13

Об авторах……………………………………………………………………………………………… 14

Благодарности……………………………………………………………………………………….. 15

Предисловие…………………………………………………………………………………………… 17

Для кого эта книга предназначена…………………………………………………………………………………………… 17

Как эта книга организована……………………………………………………………………………………………………… 18

Начало работы с MySQL………………………………………………………………………………………………….. 18

Использование MySQL……………………………………………………………………………………………………… 18

MySQL в производстве……………………………………………………………………………………………………… 19

Прочие темы………………………………………………………………………………………………………………………. 20

Исходный код и иллюстрации………………………………………………………………………………………………….. 20

Условные обозначения в книге…………………………………………………………………………………………………. 20

Глава 1. Установка MySQL……………………………………………………………………. 23

Развилки MySQL………………………………………………………………………………………………………………………… 24

Редакция MySQL для сообщества……………………………………………………………………………………. 24

Сервер Percona для MySQL………………………………………………………………………………………………. 24

Сервер MariaDB…………………………………………………………………………………………………………………. 24

Редакция MySQL для предприятий………………………………………………………………………………….. 25

Варианты инсталляции и платформы……………………………………………………………………………………… 25

  1. Скачать дистрибутив, который вы хотите инсталлировать……………………………………… 26
  2. Установить дистрибутив………………………………………………………………………………………………. 26
  3. Выполнить все необходимые постинсталляционные настройки……………………………… 27
  4. Выполнить контрольные нагрузочные тесты……………………………………………………………… 27

Установка MySQL в Linux………………………………………………………………………………………………………… 27

Инсталлирование MySQL в CentOS 7……………………………………………………………………………… 27

Инсталлирование MySQL 8.0………………………………………………………………………………….. 28

Инсталлирование MariaDB 10.5……………………………………………………………………………… 31

Инсталлирование сервера Percona Server 8.0…………………………………………………………. 32

Инсталлирование MySQL 5.7………………………………………………………………………………….. 33

Инсталлирование Percona Server 5.7……………………………………………………………………….. 34

Инсталлирование MySQL в CentOS 8……………………………………………………………………………… 35

Инсталлирование MySQL 8.0………………………………………………………………………………….. 35

Инсталлирование сервера Percona Server 8.0…………………………………………………………. 36

Инсталлирование MySQL 5.7………………………………………………………………………………….. 39

Инсталлирование MySQL в Ubuntu 20.04 LTS (Focal Fossa)…………………………………………. 41

Инсталлирование MySQL 8.0………………………………………………………………………………….. 41

Инсталлирование сервера Percona Server 8……………………………………………………………. 44

Инсталлирование MariaDB 10.5……………………………………………………………………………… 45

Инсталлирование MySQL 5.7………………………………………………………………………………….. 46

Установка MySQL в macOS Big Sur………………………………………………………………………………………….. 49

Инсталлирование MySQL 8……………………………………………………………………………………………… 49

Установка MySQL в Windows 10………………………………………………………………………………………………. 55

Содержимое каталога MySQL………………………………………………………………………………………………….. 62

Файлы MySQL 5.7, используемые по умолчанию………………………………………………………….. 63

Файлы MySQL 8.0, используемые по умолчанию………………………………………………………….. 66

Использование интерфейса командной строки………………………………………………………………………. 66

Использование Docker……………………………………………………………………………………………………………….. 67

Установка Docker………………………………………………………………………………………………………………. 67

Инсталлирование Docker в CentOS 7………………………………………………………………………. 68

Инсталлирование Docker в Ubuntu 20.04 (Focal Fossa)…………………………………………. 68

Развертывание контейнера MySQL…………………………………………………………………………. 69

Развертывание контейнеров MariaDB и Percona Server…………………………………………. 71

Использование симулированных производственных сред……………………………………………………. 72

Инсталлирование DBdeployer………………………………………………………………………………………….. 73

Использование DBdeployer……………………………………………………………………………………………….. 73

Модернизация сервера MySQL………………………………………………………………………………………………… 77

Глава 2. Моделирование и конструирование баз данных………………………. 81

Как не надо разрабатывать базу данных……………………………………………………………………………….. 81

Процесс конструирования базы данных…………………………………………………………………………………. 83

Модель взаимосвязей сущностей……………………………………………………………………………………………… 84

Представление сущностей………………………………………………………………………………………………… 84

Представление взаимосвязей……………………………………………………………………………………………. 87

Частичное и полное участие…………………………………………………………………………………………….. 89

Сущность или атрибут?……………………………………………………………………………………………………. 89

Сущность или взаимосвязь?……………………………………………………………………………………………… 91

Промежуточные сущности……………………………………………………………………………………………….. 91

Слабые и сильные сущности……………………………………………………………………………………………. 92

Нормализация базы данных…………………………………………………………………………………………………….. 94

Нормализация таблицы образцов……………………………………………………………………………………………. 96

Первая нормальная форма: никаких повторяющихся групп…………………………………………. 96

Вторая нормальная форма: устранить избыточные данные………………………………………… 97

Третья нормальная форма: исключить данные, не зависящие от ключа……………………… 97

Примеры моделирования взаимосвязей сущностей……………………………………………………………….. 98

Использование модели взаимосвязей сущностей…………………………………………………………………. 102

Соотнесение сущностей и взаимосвязей с таблицами базы данных………………………….. 103

Соотнести сущности с таблицами базы данных…………………………………………………. 104

Соотнесите взаимосвязи с таблицами базы данных……………………………………………. 104

Создание модели взаимосвязей сущностей банковской базы данных……………………….. 104

Взаимосвязь “многие ко многим” (N:M)…………………………………………………………………. 105

Взаимосвязь “один ко многим” (1:N)……………………………………………………………………… 105

Конвертирование EER в базу данных MySQL с помощью
инструмента Workbench…………………………………………………………………………………………………. 106

Глава 3. Базовый SQL………………………………………………………………………….. 111

Использование базы данных sakila……………………………………………………………………………………….. 112

Инструкция SELECT и базовые приемы выполнения запросов…………………………………………… 114

Однотабличные инструкции SELECT……………………………………………………………………………. 115

Выбор столбцов………………………………………………………………………………………………………………. 116

Отбор строк с помощью компонента WHERE……………………………………………………………….. 118

Основы WHERE……………………………………………………………………………………………………….. 118

Комбинирование условий с AND, OR, NOT и XOR……………………………………………….. 122

Компонент ORDER BY……………………………………………………………………………………………………… 127

Компонент LIMIT……………………………………………………………………………………………………………… 129

Соединение двух таблиц………………………………………………………………………………………… 131

Инструкция INSERT…………………………………………………………………………………………………………………. 133

Основы INSERT………………………………………………………………………………………………………………… 133

Альтернативные синтаксические конструкции…………………………………………………………….. 136

Инструкция DELETE………………………………………………………………………………………………………………… 139

Основы DELETE……………………………………………………………………………………………………………….. 139

Использование WHERE, ORDER BY и LIMIT………………………………………………………………….. 140

Удаление всех строк с помощью TRUNCATE……………………………………………………………….. 141

Инструкция UPDATE……………………………………………………………………………………………………………….. 142

Примеры…………………………………………………………………………………………………………………………… 142

Использование WHERE, ORDER BY и LIMIT………………………………………………………………….. 143

Разведывательный анализ баз данных и таблиц с помощью SHOW и mysqlshow……………… 144

Глава 4. Работа со структурами базы данных………………………………………. 149

Создание и использование баз данных…………………………………………………………………………………. 149

Создание таблиц……………………………………………………………………………………………………………………… 152

Основы……………………………………………………………………………………………………………………………… 152

Порядок расстановки и наборы символов…………………………………………………………………….. 155

Другие функциональные возможности………………………………………………………………………….. 158

Типы столбцов…………………………………………………………………………………………………………………. 160

Целочисленные типы……………………………………………………………………………………………… 161

Типы с фиксированной точкой………………………………………………………………………………. 163

Типы с плавающей точкой…………………………………………………………………………………….. 164

Строковые типы………………………………………………………………………………………………………. 167

Типы даты и времени……………………………………………………………………………………………… 177

Другие типы…………………………………………………………………………………………………………….. 183

Ключи и индексы…………………………………………………………………………………………………………….. 183

Функциональность AUTO_INCREMENT………………………………………………………………………… 190

Изменение структур…………………………………………………………………………………………………………………. 193

Добавление, удаление и изменение столбцов………………………………………………………………. 193

Добавление, удаление и изменение индексов……………………………………………………………….. 197

Переименование таблиц и изменение других структур……………………………………………….. 199

Удаление структур………………………………………………………………………………………………………………….. 200

Удаление баз данных……………………………………………………………………………………………………… 200

Удаление таблиц……………………………………………………………………………………………………………… 201

Глава 5. Расширенные запросы……………………………………………………………. 203

Псевдонимы……………………………………………………………………………………………………………………………… 203

Псевдонимы столбцов…………………………………………………………………………………………………….. 204

Псевдонимы таблиц………………………………………………………………………………………………………… 206

Агрегирование данных……………………………………………………………………………………………………………. 209

Компонент DISTINCT………………………………………………………………………………………………………. 209

Компонент GROUP BY…………………………………………………………………………………………………….. 211

Агрегатные функции……………………………………………………………………………………………….. 218

Компонент HAVING…………………………………………………………………………………………………………. 219

Расширенные соединения……………………………………………………………………………………………………….. 221

Внутреннее соединение………………………………………………………………………………………………….. 221

Объединение…………………………………………………………………………………………………………………….. 224

Левое и правое соединения…………………………………………………………………………………………….. 231

Естественное соединение……………………………………………………………………………………………….. 235

Постоянные выражения в соединениях…………………………………………………………………………. 237

Вложенные запросы………………………………………………………………………………………………………………… 239

Основы вложенных запросов…………………………………………………………………………………………. 240

Компоненты ANY, SOME, ALL, IN и NOT IN…………………………………………………………………… 243

Использование ANY и IN…………………………………………………………………………………………. 244

Использование ALL…………………………………………………………………………………………………. 247

Написание строковых подзапросов……………………………………………………………………… 249

Компоненты EXISTS и NOT EXISTS………………………………………………………………………………… 250

Основы EXISTS и NOT EXISTS………………………………………………………………………………… 251

Коррелированные подзапросы……………………………………………………………………………… 252

Вложенные запросы в компоненте FROM…………………………………………………………………….. 256

Вложенные запросы в соединениях………………………………………………………………………………. 258

Пользовательские переменные……………………………………………………………………………………………….. 260

Глава 6. Транзакции и замковый механизм…………………………………………. 265

Уровни изоляции……………………………………………………………………………………………………………………… 266

REPEATABLE READ…………………………………………………………………………………………………………. 268

READ COMMITTED………………………………………………………………………………………………………….. 269

READ UNCOMMITTED…………………………………………………………………………………………………….. 270

SERIALIZABLE………………………………………………………………………………………………………………….. 271

Применение замков………………………………………………………………………………………………………………….. 274

Замки на основе метаданных…………………………………………………………………………………………. 275

Строковые замки……………………………………………………………………………………………………………… 280

Тупики………………………………………………………………………………………………………………………………. 283

Параметры MySQL, связанные с изоляцией и замками……………………………………………………….. 285

Глава 7. Достижение большего с MySQL……………………………………………… 287

Вставка данных с помощью запросов…………………………………………………………………………………… 287

Загрузка данных из файлов c разделителями-запятыми……………………………………………………… 293

Выгрузка данных в файлы с разделителями-запятыми……………………………………………………….. 301

Создание таблиц с помощью запросов………………………………………………………………………………….. 303

Выполнение многотабличных обновлений и удалений………………………………………………………. 308

Удаление………………………………………………………………………………………………………………………….. 308

Обновления………………………………………………………………………………………………………………………. 313

Замена данных…………………………………………………………………………………………………………………………. 314

Инструкция EXPLAIN………………………………………………………………………………………………………………. 318

Альтернативные механизмы хранения данных……………………………………………………………………. 324

InnoDB……………………………………………………………………………………………………………………………… 326

MyISAM и Aria…………………………………………………………………………………………………………………. 328

MyRocks и TokuDB…………………………………………………………………………………………………………. 329

Другие табличные типы………………………………………………………………………………………………….. 331

Глава 8. Управление пользователями и привилегиями………………………… 333

Пользователи и привилегии……………………………………………………………………………………………………. 333

Корневой пользователь…………………………………………………………………………………………………………… 335

Создание и использование новых пользователей………………………………………………………………… 336

Таблицы привилегий……………………………………………………………………………………………………………….. 343

Команды управления пользователями и журналирование…………………………………………………. 345

Модифицирование и удаление пользователей……………………………………………………………………… 347

Модифицирование пользователя…………………………………………………………………………………… 347

Удаление пользователя…………………………………………………………………………………………………… 351

Привилегии……………………………………………………………………………………………………………………………….. 355

Статические и динамические привилегии…………………………………………………………………….. 357

SUPER-привилегия…………………………………………………………………………………………………………… 358

Команды управления привилегиями……………………………………………………………………………… 359

GRANT………………………………………………………………………………………………………………………. 359

REVOKE……………………………………………………………………………………………………………………. 361

Проверка привилегий………………………………………………………………………………………………………. 362

Привилегия GRANT OPTION……………………………………………………………………………………………. 365

Роли…………………………………………………………………………………………………………………………………………… 368

Изменение пароля пользователя root и небезопасный запуск…………………………………………….. 375

Несколько идей в отношении безопасной настройки…………………………………………………………… 376

Глава 9. Использование файлов опций………………………………………………… 379

Структура файла опций………………………………………………………………………………………………………….. 379

Диапазон опций……………………………………………………………………………………………………………………….. 384

Порядок поиска файлов опций……………………………………………………………………………………………….. 387

Специальные файлы опций…………………………………………………………………………………………………….. 388

Конфигурационный файл путей для входа…………………………………………………………………… 388

Конфигурационный файл хранимых на диске системных переменных…………………….. 391

Определение действующих опций…………………………………………………………………………………………. 393

Глава 10. Резервное копирование и восстановление…………………………….. 399

Физические и логические резервные копии…………………………………………………………………………… 399

Логические резервные копии………………………………………………………………………………………….. 400

Физические резервные копии………………………………………………………………………………………….. 402

Обзор логических и физических резервных копий……………………………………………………….. 404

Репликация как инструмент резервного копирования………………………………………………………….. 405

Отказ инфраструктуры……………………………………………………………………………………………………. 405

Дефект развертывания…………………………………………………………………………………………………….. 406

Программа mysqldump…………………………………………………………………………………………………………….. 406

Самогенерация репликации с помощью mysqldump…………………………………………………….. 412

Загрузка данных из файла дампа SQL…………………………………………………………………………………… 413

mysqlpump…………………………………………………………………………………………………………………………………. 414

mydumper и myloader……………………………………………………………………………………………………………….. 416

Холодное резервное копирование и моментальные снимки файловой системы……………….. 418

Percona XtraBackup…………………………………………………………………………………………………………………. 419

Резервное копирование и восстановление…………………………………………………………………….. 421

Продвинутые функциональные возможности………………………………………………………………. 424

Инкрементное резервное копирование с помощью XtraBackup…………………………………. 425

Другие средства физического резервного копирования………………………………………………………. 427

MySQL Enterprise Backup……………………………………………………………………………………………….. 428

mariabackup……………………………………………………………………………………………………………………… 428

Восстановление на определенный момент времени…………………………………………………………….. 429

Техническая информация о двоичных журналах………………………………………………………… 430

Поддержка двоичных журналов……………………………………………………………………………………. 431

Идентификация цели восстановления на определенный момент времени…………………. 432

Пример восстановления на определенный момент времени: XtraBackup…………………. 433

Пример восстановления на определенный момент времени: mysqldump…………………… 434

Экспортирование и импортирование табличных пространств InnoDB…………………………….. 435

Технические предпосылки……………………………………………………………………………………………… 436

Экспортирование табличного пространства……………………………………………………………….. 436

Импортирование табличного пространства…………………………………………………………………. 437

Однотабличная реконструкция с помощью XtraBackup……………………………………………… 439

Тестирование и верифицирование резервных копий……………………………………………………………. 440

Вводное пособие по стратегии резервного копирования баз данных………………………………… 442

Глава 11. Конфигурирование и настройка сервера………………………………. 445

Демон сервера MySQL…………………………………………………………………………………………………………….. 445

Переменные сервера MySQL………………………………………………………………………………………………….. 446

Проверка настроек сервера……………………………………………………………………………………………. 446

Лучшие образцы практики……………………………………………………………………………………………… 447

Лучшие образцы практики в работе с операционной системой………………………… 447

Лучшие образцы практики в работе с MySQL…………………………………………………….. 455

Глава 12. Мониторинг серверов MySQL……………………………………………….. 463

Метрики операционной системы……………………………………………………………………………………………. 464

Центральный процессор…………………………………………………………………………………………………. 464

Диск…………………………………………………………………………………………………………………………………… 473

Память………………………………………………………………………………………………………………………………. 478

Сеть…………………………………………………………………………………………………………………………………… 483

Наблюдаемость сервера MySQL……………………………………………………………………………………………. 488

Переменные состояния……………………………………………………………………………………………………. 488

Базовые рецепты мониторинга………………………………………………………………………………………. 491

Доступность сервера MySQL………………………………………………………………………………… 491

Клиентские подключения………………………………………………………………………………………. 492

Счетчики запросов………………………………………………………………………………………………….. 495

Типы и качество запросов……………………………………………………………………………………… 496

Метрики операций ввода-вывода и транзакций InnoDB…………………………………….. 501

Журнал медленных запросов…………………………………………………………………………………………. 506

Отчет о состоянии механизма InnoDB………………………………………………………………………….. 510

Методы исследования…………………………………………………………………………………………………………….. 513

Метод USE……………………………………………………………………………………………………………………….. 513

Метод RED……………………………………………………………………………………………………………………….. 515

Мониторинговые инструменты MySQL………………………………………………………………………………… 516

Инцидентно-диагностический и ручной сбор данных…………………………………………………………. 523

Периодический сбор значений переменных состояния системы………………………………… 523

Использование pt-stalk для сбора метрик MySQL и операционной системы…………….. 525

Расширенный ручной сбор данных……………………………………………………………………………….. 526

Глава 13. Высокая доступность……………………………………………………………. 529

Асинхронная репликация……………………………………………………………………………………………………….. 529

Базовые параметры, устанавливаемые на источнике и реплике………………………………… 532

Создание реплики с помощью Percona XtraBackup……………………………………………………… 533

Создание реплики с помощью плагина клонирования………………………………………………… 535

Создание реплики с помощью mysqldump…………………………………………………………………….. 537

Создание реплики с помощью mydumper и myloader……………………………………………………. 539

Настройка утилит mydumper и myloader………………………………………………………………. 539

Извлечение данных из источника………………………………………………………………………….. 539

Реконструирование данных на сервере-реплике…………………………………………………. 540

Установление репликации……………………………………………………………………………………… 540

Групповая репликация……………………………………………………………………………………………………. 541

Инсталлирование групповой репликации……………………………………………………………. 541

Настройка групповой репликации в MySQL……………………………………………………….. 544

Синхронная репликация…………………………………………………………………………………………………………. 547

Кластер Galera/PXC………………………………………………………………………………………………………… 548

Глава 14. MySQL в облаке……………………………………………………………………. 553

База данных как служба (DBaaS)………………………………………………………………………………………….. 553

Amazon RDS для MySQL/MariaDB………………………………………………………………………………… 554

Google Cloud SQL для MySQL………………………………………………………………………………………… 558

Azure SQL…………………………………………………………………………………………………………………………. 561

Amazon Aurora…………………………………………………………………………………………………………………………. 563

Облачные экземпляры MySQL……………………………………………………………………………………………….. 564

MySQL в Kubernetes…………………………………………………………………………………………………………………. 564

Развертывание кластера Percona XtraDB в Kubernetes………………………………………………… 565

Глава 15. Балансировка нагрузки в MySQL…………………………………………. 571

Балансировка нагрузки с помощью драйверов приложений………………………………………………. 571

Балансировщик нагрузки ProxySQL………………………………………………………………………………………. 572

Инсталлирование и конфигурирование ProxySQL……………………………………………………….. 574

Балансировщик нагрузки HAProxy………………………………………………………………………………………… 578

Инсталлирование и конфигурирование HAProxy………………………………………………………… 579

Маршрутизатор MySQL…………………………………………………………………………………………………………. 584

Глава 16. Прочие темы…………………………………………………………………………. 591

Оболочка MySQL…………………………………………………………………………………………………………………….. 591

Установка оболочки MySQL………………………………………………………………………………………….. 591

Установка оболочки MySQL в Ubuntu 20.04 Focal Fossa…………………………………………….. 591

Установка оболочки MySQL на CentOS 8…………………………………………………………………….. 592

Развертывание симулированного кластера InnoDB с помощью оболочки MySQL…. 593

Утилиты оболочки MySQL…………………………………………………………………………………………….. 597

util.dumpInstance()…………………………………………………………………………………………………… 597

util.dumpSchemas()…………………………………………………………………………………………………… 600

util.dumpTables()……………………………………………………………………………………………………… 600

util.loadDump(url[, опции])…………………………………………………………………………………….. 600

Графики пламени…………………………………………………………………………………………………………………….. 601

Сборка MySQL из исходного кода…………………………………………………………………………………………. 604

Сборка MySQL для Ubuntu Focus Fossa и процессоров ARM…………………………………….. 604

Анализ аварий MySQL……………………………………………………………………………………………………………. 608

Предметный указатель…………………………………………………………………………. 615

Гриппа-Винисиус

Винисиус Гриппа — старший инженер службы поддержки компаний Percona и ACE Oracle. Помог клиентам Percona разобраться в сотнях раз-личных случаев использо-вания MySQL.

 

 

Кузьмичев-Сергей

Сергей Кузьмичев — в настоящее время старший инженер технической поддержки в компании Percona, до этого почти десять лет работал администратором баз данных и инженером DevOps.

Summary
Aggregate Rating
2.5 based on 2 votes
Добавить комментарий