Из оболочки MySQL
Командная клиентская утилита, такая как mysql, также может быть использована для определения версии сервера MySQL.
Чтобы подключиться к серверу MySQL, просто наберите mysql:
mysql
После подключения к оболочке MySQL версия будет выведена на экран:
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)
Чтобы получить информацию о версии MySQL и других компонентах, запросите переменные version:
SHOW VARIABLES LIKE "%version%";
+-------------------------+-------------------------+ | Variable_name | Value | +-------------------------+-------------------------+ | innodb_version | 5.7.27 | | protocol_version | 10 | | slave_type_conversions | | | tls_version | TLSv1,TLSv1.1 | | version | 5.7.27-0ubuntu0.18.04.1 | | version_comment | (Ubuntu) | | version_compile_machine | x86_64 | | version_compile_os | Linux | +-------------------------+-------------------------+ 8 rows in set (0.02 sec)
Есть также некоторые другие операторы и команды, которые могут показать вам версию сервера. Оператор SELECT VERSION() будет отображать только версию MySQL.
SELECT VERSION();
Команда STATUS показывает версию MySQL, а также информацию о состоянии сервера:
STATUS;
4. MariaDB
Эта база данных основана на исходном коде MySQL и ее разработка началась после перехода оригинала в собственность Oracle. За работу взялись первоначальные разработчики MySQL. MariaDB сохраняет тесную совместимость с MySQL, поддерживаются все ее команды и синтаксис запросов. Кроме того, из дополнительных возможностей можно отметить поддержку таблиц: XtraDB, Aria, PBXT, FederateX, OQGRAPH, SphinxSE и другие.
Кроме таблиц была очень сильно улучшена производительность и добавлены новые возможности. Разработка ведется компанией MariaDB Foundation и разработчиками по всему миру, но в развитие проекта инвестируют деньги множество компаний, среди которых Google и Intel. Это лучшая и самая популярная база данных Linux.
BIGINT в MySQL
BIGINT – это ab-байтовое или 64-битное целочисленное значение, которое очень полезно для хранения огромных целочисленных значений.
BIGINT, как и любой другой целочисленный тип данных MySQL, может быть подписанным или беззнаковым. Тип данных со знаком указывает, что столбец может хранить как положительные, так и отрицательные целочисленные значения. Это тип по умолчанию для большинства целочисленных типов в MySQL. Следовательно, если явно не указано иное, любой столбец целочисленного типа может хранить как положительные, так и отрицательные целые числа.
С другой стороны, тип данных без знака указывает, что столбец может хранить только положительные целочисленные значения.
Диапазон для подписанного типа BIGINT составляет от -9223372036854775808 до 9223372036854775807.
Для беззнакового типа BIGINT значение находится в диапазоне от 0 до 18446744073709551615.
Другой атрибут типа BIGINT – это ZEROFILL. Если этот атрибут указан в столбце, столбец автоматически получает значение UNSIGNED.
Атрибут zerofill также заполняет пробелы нулями.
InnoDB
В MySQL 8 подсистема хранения данных InnoDB используется по умолчанию и является наиболее широко применяемой из всех других доступных подсистем хранения. Подсистема InnoDB была выпущена вместе с MySQL 5.1 как плагин в 2008 году, и она рассматривается как подсистема хранения по умолчанию, начиная с версии 5.5 и выше. Поддержка подсистемы хранения InnoDB была перенята корпорацией Oracle в октябре 2005 года у финской компании Innobase Oy.
Таблицы InnoDB поддерживают ACID-совместимые фиксации транзакций, откат и возможности аварийного восстановления для защиты пользовательских данных. InnoDB также поддерживает блокировку на уровне строк, что помогает улучшить параллелизм и производительность. InnoDB хранит данные в кластеризованных индексах, чтобы уменьшить операции ввода-вывода для всех запросов SQL на выборку данных на основе первичного ключа. InnoDB также поддерживает ограничения внешнего ключа, которые обеспечивают лучшую целостность данных в базе данных. Максимальный размер таблицы InnoDB может масштабироваться до 256 Тб, что должно быть вполне достаточным во многих случаях использования больших данных.
Важные замечания по InnoDB
Выполнение простого запроса, такого как , без наличия индексов будет очень медленным, поскольку, для того чтобы получить данные, он выполняет полное сканирование таблицы. Если вы хотите часто применять запрос на количество данных к таблице InnoDB, предлагается создавать триггеры на операции вставки и удаления, после чего можно увеличивать или уменьшать счетчики, когда записи вставляются или удаляются, что может помочь вам достигнуть лучшей производительности.
InnoDB — это подсистема хранения данных с мультиверсионным управлением параллелизмом (MVCC), которая хранит информацию о старых версиях измененных строк, чтобы поддержать функционал транзакций и отката, что оказывается весьма кстати в целях поддержания целостности данных или в случаях аварийного прекращения работы.
Для оптимизации производительности таблицы InnoDB ниже приведено несколько параметров, которые мы можем использовать в настройках . Однако они зависят от вашей среды и баз данных.
- : определяет максимальное количество файлов, которые она может держать открытыми при работе с режимом .
- : задает размер пула в памяти, который может использоваться для кеширования индексов и табличных данных. Это один из важных аспектов настройки таблиц InnoDB. Это значение можно увеличить в зависимости от размера оперативной памяти на сервере.
- : этот параметр используется для нескольких параллельных потоков, которые будут использоваться для обработки запроса и зависят от числа доступных ЦП.
Шаг 2 — Создание скриптов PHP для подключения к базе данных и ее заполнения
На этом шаге мы создадим скрипт PHP для подключения к базе данных MySQL, созданной нами на шаге 1. Этот скрипт подготовит три образца продуктов и вставит их в таблицу .
Для создания кода PHP откройте новый файл в текстовом редакторе:
Введите в файл следующую информацию и замените паролем пользователя , созданным на шаге 1:
/var/www/html/config.php
Сохраните и закройте файл.
В этом файле мы использовали четыре константы PHP для подключения к базе данных MySQL, созданной на шаге 1:
-
: эта константа хранит название базы данных .
-
: эта переменная хранит имя пользователя .
-
: эта константа хранит MySQL для учетной записи .
-
: сервер, где располагается база данных. В данном случае мы используем сервер .
Следующая строка в вашем файле инициирует объект данных PHP (PDO) и выполняет подключение к базе данных MySQL:
Ближе к концу файла мы зададим пару атрибутов PDO:
- : этот атрибут предписывает PDO выдать исключение, которое можно зарегистрировать для целей отладки.
- : эта опция повышает безопасности, предписывая СУБД MySQL выполнять подготовку вместо PDO.
Мы добавим файл в два скрипта PHP для вставки и получения записей, которые мы сейчас создадим.
Вначале создайте скрипт PHP для вставки записей в таблицу products:
Затем добавьте следующую информацию в файл :
/var/www/html/insert_products.php
Сохраните и закройте файл.
Вы добавили файл в верхней части файла. Это первый файл, который вы создали для определения переменных базы данных и подключения к базе данных. Также этот файл инициирует объект PDO и сохраняет его в переменной .
Далее вы создали массив данных о продуктах, которые нужно вставить в базу данных. Помимо значений и , подготовленных в виде текстовых и числовых значений соответственно, данный скрипт использует встроенную функцию PHP для чтения изображений из внешнего источника и передачи их в виде строк в столбец .
Затем вы подготовили выражение SQL и использовали выражение PHP для вставки каждого продукта в базу данных.
Для выполнения файла запустите его в окне браузера, используя следующий URL. Замените публичным IP-адресом вашего сервера:
После выполнения файла вы получите в браузере сообщение, подтверждающее успешную вставку записей в базу данных.
Вы успешно вставили три записи с изображениями продуктов в таблицу . На следующем шаге мы создадим скрипт PHP для извлечения этих записей и их вывода в браузере.
Federated
Подсистема интегрированного хранения данных FEDERATED позволяет создавать одну базу данных на нескольких физических серверах. Она открывает клиентское соединение с другим сервером и выполняет запросы к таблице, получая и отправляя строки по мере необходимости. Первоначально она рекламировалась как конкурентная функциональность, которая поддерживала многие корпоративные проприетарные серверы баз данных, такие как Microsoft SQL Server и Oracle, но это всегда было натяжкой, мягко говоря. Хотя казалось, что в ней задействовалось много гибкости и хитрых приемов, она оказалась источником многих проблем и по умолчанию деактивирована. Однако мы можем ее активировать, запустив двоичный файл сервера MySQL с параметром .
Давайте создадим таблицу FEDERATED.
В поле содержится следующая ниже информация для вашей справки:
- : имя пользователя удаленного сервера MySQL;
- : пароль удаленного сервера MySQL;
- : имя хоста удаленного сервера;
- : номер порта удаленного сервера;
- : имя базы данных удаленного сервера;
- : имя таблицы базы данных удаленного сервера.
Используя PHP
Если вы используете общий хостинг и у вас нет доступа к командной строке или клиенту MySQL, например PhpMyAdmin, вы можете определить версию сервера MySQL с помощью PHP.
В корневой каталог документа вашего веб-сайта загрузите следующий PHP-файл, используя клиент FTP или SFTP . Убедитесь, что вы изменил и my_user и my_password с реальной учетной записью пользователя MySQL:
MySQL-version.php
<?php // Создание подключения к базе данных. $link = mysqli_connect("localhost", "my_user", "my_password"); // Print the MySQL version. echo mysqli_get_server_info($link); // Закрыть соединение. mysqli_close($link);
Откройте файл в вашем браузере, и версия сервера MySQL будет отображаться на вашем экране:
5.7.27-0ubuntu0.18.04.1
BLOB / TEXT
Типы TEXT и BLOB отличаются между собой только тем, что для второго типа Mysql не делает преобразования кодировок (хранит, как есть).
Mysql не умеет выполнять сортировку по этим значениям, поэтому использует только первые max_sort_length символов. Точно также, при создании индекса по этой колонке необходимо указать длину:
Указываем длину колонки для индексации
Тяжело представить зачем нужно индексировать текстовые колонки, просто не делайте этого. Если же захотите использовать возможность создания индекса для проверки уникальности, используйте вспомогательную колонку для хранения md5 хэша от текста:
CREATE TABLE `articles` ( body TEXT NOT NULL DEFAULT '', body_md5 CHAR(32) );
По колонке body_md5 можно создать уникальный индекс
Обзор
На нижнем уровне mysql находятся различные файлы, которые составляют часть механизма хранения innodb, в основном это файлы следующих типов:
- Файл параметров: при запуске mysql укажите некоторые файлы параметров для инициализации, такие как инициализация размера определенных структур.
- Файл журнала: файл, в котором записывается хранилище журнала mysql, выполняющего операции sql. Например: журнал ошибок, файл журнала медленных запросов, файл журнала запросов, двоичный файл журнала и т. Д.
- Файл сокета: в основной среде UNIX файл сокета необходим для подключения к локальному mysql.
- pid file: файл, хранящийся в идентификаторе процесса экземпляра mysql.
- Файл структуры таблицы mysql: файл, определяющий структуру таблицы mysql.
- Файл механизма хранения: файл, в основном используемый для хранения данных таблицы mysql и индекса.
Примеры использования
Давайте воспользуемся примером, чтобы проиллюстрировать, как мы можем использовать логический тип в MySQL.
Начните с создания базы данных и таблицы с названием languages, в которой будет храниться информация о различных языках программирования.
Внутри таблицы у нас есть следующие столбцы:
- ID – INT NOT NULL AUTO_INCREMENT
- Language_name – VARCHAR (100) NOT NULL
- Beginner_Friendly – BOOLEAN
Рассмотрим приведенный ниже запрос для реализации указанной выше базы данных:
CREATE DATABASE sampled; USE sampled; CREATE TABLE languages ( ID INT NOT NULL AUTO_INCREMENT, Language_name VARCHAR(100), Beginner_friendly BOOLEAN, PRIMARY KEY (ID) );
После выполнения вышеуказанного запроса у вас будет выборочная база данных с таблицей языков.
Чтобы получить информацию о таблице выше, мы можем использовать оператор MySQL DESC, как показано в выходных данных ниже:
mysql> DESC languages; +-------------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------------+--------------+------+-----+---------+----------------+ | ID | int | NO | PRI | NULL | auto_increment | | Language_name | varchar(100) | YES | | NULL | | | Beginner_friendly | tinyint(1) | YES | | NULL | | +-------------------+--------------+------+-----+---------+----------------+ 3 rows in set (0.01 sec)
Если вы посмотрите на поле Beginner_friendly, которое мы установили как Boolean при создании таблицы, теперь оно показывает Type of TINYINT.
На следующем шаге давайте добавим данные в таблицу, используя запросы, представленные ниже:
INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(1, "Python", True); INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(2, "C++", False);
Если вы сейчас выберете значения в приведенной выше таблице:
mysql> select * from sampled.languages -> ; +----+---------------+-------------------+ | ID | Language_name | Beginner_friendly | +----+---------------+-------------------+ | 1 | Python | 1 | | 2 | C++ | 0 | +----+---------------+-------------------+ 2 rows in set (0.00 sec)
Вы увидите, что значения установлены на 0 и 1 соответственно.
ПРИМЕЧАНИЕ. В столбце Boolean можно хранить числовые значения, отличные от значений True и False. Например, рассмотрим запрос ниже:
INSERT INTO sampled.languages (ID, Language_name, Beginner_friendly) VALUES(3, "Go Lang", 10);
Если вы выполните вышеуказанный запрос, MySQL не сообщит об ошибке. Вместо этого он сохранит числовое значение как 10. Рассмотрим результат, показанный ниже:
mysql> select * from sampled.languages; +----+---------------+-------------------+ | ID | Language_name | Beginner_friendly | +----+---------------+-------------------+ | 1 | Python | 1 | | 2 | C++ | 0 | | 3 | Go Lang | 10 | +----+---------------+-------------------+ 3 rows in set (0.00 sec)
Использование PHP
Если вы можете загрузить файл в корневой каталог Интернета, просто создайте локальный файл с именем mysqlversion.php . Затем скопируйте и вставьте приведенный ниже код в файл и загрузите его в корневую папку вашего сервера.
<?php // Create a database connection. $link = mysqli_connect("localhost", "root", "root_password"); // Print the MySQL version. echo mysqli_get_server_info($link); // Close the connection. mysqli_close($link);
Это отобразит версию вашего сервера.
Могут быть другие способы просмотреть номер версии вашего сервера базы данных в Ubuntu Linux. Однако несколько вышеперечисленных методов должны помочь вам начать работу.
Числовые типы данных
Тип данных | Объем памяти | Диапазон | Описание |
TINYINT (M) | 1 байт | от -128 до 127 или от 0 до 255 | Целое число. Может быть объявлено положительным с помощью ключевого слова UNSIGNED, тогда элементам столбца нельзя будет присвоить отрицательное значение. Необязательный параметр М — количество отводимых под число символов. Необязательный атрибут ZEROFILL позволяет свободные позиции по умолчанию заполнить нулями.Примеры: TINYINT — хранит любое число в диапазоне от -128 до 127. TINYINT UNSIGNED — хранит любое число в диапазоне от 0 до 255. TINYINT (2) — предполагается, что значения будут двузначными, но по факту будет хранить и трехзначные. TINYINT (3) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 002. |
SMALLINT (M) | 2 байта | от -32768 до 32767 или от 0 до 65535 | Аналогично предыдущему, но с большим диапазоном.Примеры: SMALLINT — хранит любое число в диапазоне от -32768 до 32767. SMALLINT UNSIGNED — хранит любое число в диапазоне от 0 до 65535. SMALLINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и пятизначные. SMALLINT (4) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0002. |
MEDIUMINT (M) | 3 байта | от -8388608 до 8388608 или от 0 до 16777215 | Аналогично предыдущему, но с большим диапазоном.Примеры: MEDIUMINT — хранит любое число в диапазоне от -8388608 до 8388608. MEDIUMINT UNSIGNED — хранит любое число в диапазоне от 0 до 16777215. MEDIUMINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить и семизначные. MEDIUMINT (5) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002. |
INT (M) или INTEGER (M) | 4 байта | от -2147683648 до 2147683648 или от 0 до 4294967295 | Аналогично предыдущему, но с большим диапазоном.Примеры: INT — хранит любое число в диапазоне от -2147683648 до 2147683648. INT UNSIGNED — хранит любое число в диапазоне от 0 до 4294967295. INT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные. INT (5) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 00002. |
BIGINT (M) | 8 байта | от -263 до 263-1 или от 0 до 264 | Аналогично предыдущему, но с большим диапазоном.Примеры: BIGINT — хранит любое число в диапазоне от -263 до 263-1. BIGINT UNSIGNED — хранит любое число в диапазоне от 0 до 264. BIGINT (4) — предполагается, что значения будут четырехзначные, но по факту будет хранить максимально возможные. BIGINT (7) ZEROFILL — свободные позиции слева заполнит нулями. Например, величина 2 будет отображаться, как 0000002. |
BOOL или BOOLEAN | 1 байт | либо 0, либо 1 | Булево значение. 0 — ложь (false), 1 — истина (true). |
DECIMAL (M,D) или DEC (M,D) или NUMERIC (M,D) | M + 2 байта | зависят от параметров M и D | Используются для величин повышенной точности, например, для денежных данных. M — количество отводимых под число символов (максимальное значение — 64). D — количество знаков после запятой (максимальное значение — 30).Пример: DECIMAL (5,2) — будет хранить числа от -99,99 до 99,99. |
FLOAT (M,D) | 4 байта | мин. значение +(-) 1.175494351 * 10-39 макс. значение +(-) 3. 402823466 * 1038 |
Вещественное число (с плавающей точкой). Может иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. M — количество отводимых под число символов. D — количество символов дробной части. Пример: FLOAT (5,2) — будет хранить числа из 5 символов, 2 из которых будут идти после запятой (например: 46,58). |
DOUBLE (M,D) | 8 байт | мин. значение +(-) 2.2250738585072015 * 10-308 макс. значение +(-) 1.797693134862315 * 10308 |
Аналогично предыдущему, но с большим диапазоном. Пример: DOUBLE — будет хранить большие дробные числа. |
Резюме
В этой главе мы рассмотрели большие данные и их значение в различных отраслях. Мы также рассмотрели различные сегменты больших данных и их фазы жизненного цикла, включая сбор, хранение, анализ и управление. Мы обсудили структурированные базы данных и почему для больших данных нам нужна структурированная база данных. Мы рассмотрели основные функциональные средства реляционной СУБД MySQL и изучили недавно добавленные в MySQL 8 функциональные средства. Затем мы обсудили основные преимущества использования MySQL и узнали, как установить MySQL 8 в системе Linux с помощью пакета RPM. Наконец, мы разобрались в том, как СУБД MySQL может использоваться в анализе больших данных и как она может вписываться в фазы жизненного цикла больших данных с помощью Hadoop и Apache Sqoop.
В следующей статье вы изучите различные методы запросов в MySQL 8, включая соединения и агрегирования данных.
Показывать таблицы MySQL из командной строки
Чтобы получить информацию о таблицах из оболочки Linux, вы можете использовать либо команду mysql -e, либо команду mysqlshow, которая отображает информацию о базах данных и таблицах.
Это особенно полезно, когда вы хотите работать с базами данных MySQL, используя сценарии оболочки.
Запустите следующую команду на своем терминале, чтобы показать список всех баз данных:
mysql -u user -p -e 'SHOW TABLES FROM database_name;'
Вывод отобразит список всех таблиц:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+
Вот пример использования команды mysqlshow:
mysqlshow database_name
Вы можете отфильтровать вывод с помощью команды grep.
Журнальный файл
В файл журнала записываются различные записи журнала работы базы данных для выполнения SQL, а также записи журнала ошибок. Файлы журнала в основном включают следующие категории:
- Журнал ошибок: при сбоях базы данных при выполнении определенных операций здесь также будут записываться записанные записи журнала ошибок и предупреждения для определенных операций.
- Двоичный журнал: записывает все операции, которые изменяют базу данных mysql, но не включает операции выбора и отображения, потому что эти два типа не изменяют базу данных.
- Журнал медленных запросов: операторы SQL, которые достигают настраиваемого диапазона медленных запросов mysql, будут записываться в этот журнал, что более полезно для обнаружения трудоемких SQL-запросов.
- Журнал запросов: все записи запросов для mysql будут записаны в этот файл журнала.
Файл журнала ошибок
Ошибка отсутствия файла журнала в экземпляре mysqlзапускать、бегать、неисправностьОн будет записан в любой момент, мы можем проверить расположение записи журнала ошибок следующим образом. Один через вышеизложенноеПуть к файлу журнала ошибок можно найти в файле, а другой можно найти с помощью следующей команды: В этом файле записана неверная информация, мы можем использовать этот файл для поиска проблемы. Если невозможно перезапустить базу данных, поиск файла журнала ошибок может помочь нам решить проблему.
Журнал медленных запросов
В mysql есть динамический параметр long_query_time, который представляет порог медленного запроса, что означает, что, когда выполненный sql превышает время этого параметра, запись будет сохранена в журнале для области медленного запроса данных. Значение по умолчанию равно 10. Следующая команда для просмотра.
В реальной разработке обычно нет sql более 10 секунд, поэтому мы можем установить значение немного меньше, равное 1 секунде, с помощью командыУстановите значение 1 секунда, но функция регистрации медленного запроса по умолчанию отключена. Как показано ниже: по командеВключите эту функцию и, наконец, выполните тест на выполнение SQL:Затем перейдите в каталог datadir mysql, там будет файл медленного запроса выполнить cat + изменить имя файла, вы можете увидеть время выполнения sql и медленного оператора sql: Также путем установкиПараметр, вы также можете получить записи sql, которые не используют индекс в файле.
Журнал запросов
В файл журнала запросов записывается вся информация о работе базы данных mysql, независимо от того, является ли запрос правильным. Местоположение журнала, которое можно просмотреть с помощью следующей команды:
Двоичный журнал
Записывает все операции по изменению базы данных mysql, но не включает、Этот тип, поскольку этот тип не изменяет базу данных, если вы хотите записывать операции выбора и отображения, вы можете использовать толькоЖурнал запросов。
Файлы двоичного журнала в основном выполняют следующие функции:
- Восстановление: для восстановления некоторых данных требуются двоичные файлы.
- Репликация: синхронизируйте данные с другим удаленным MySQL.
- Аудит: используется для определения наличия инъекционной атаки на базу данных.
В mysql двоичный файл существует вВ каталоге, как показано ниже: Бинарный файл не запускается по умолчанию, нам нужно вручную установить параметры для его запуска. Но запуск двоичного файла снизит общую производительность базы данных. Но если база данных не работает в определенный момент, это очень полезно для восстановления данных.
MYSQL, чтобы узнать, включено ли ведение журнала, Если он не включен, вы также можете установить значениеДля просмотра текущего журнала, Место хранения файла журнала также находится вПод содержанием
Почему MySQL так популярна?
Если взглянуть на статистику, то по частоте использования и упоминания в сети MySQL проигрывает только решению от компании Oracle. Из-за чего так происходит? Конечно же, из-за ее преимуществ над существующими конкурентами.
На швейцарскую систему полагаются IT-корпорации ранга Facebook, потому что она:
- Гибкая и несложная в использовании. На создание и поддержку БД уходит меньше времени. Требуется меньший уровень компетенции для того, чтобы полноценно работать с MySQL и реализовывать весь ее потенциал.
- Имеет открытый исходный код, поэтому легко поддается модификации, и за это не нужно кому-то платить.
- Поддерживается компанией Oracle и сообществом разработчиков, выступающих за развитие opensource-приложений.
- Работает шустрее конкурентов. Внутренняя структура MySQL позволяет ей разгребать завалы из таблиц и строк за секунды. Независимо от специфичности связей между данными и их количества, сервер обрабатывает запросы любой сложности быстрее других БД.
- Стала именем нарицательным и вместе с этим неким стандартом в индустрии. Компании ищут сотрудников, умеющих работать с MySQL, интернет пестрит инструкциями по работе как раз с MySQL-серверами.
- Может похвастаться высоким уровнем защиты данных благодаря системе выдачи прав и продвинутой системе управления пользователями. А еще тут есть верификация на базе хостинга и шифрование.
Подробнее о безопасности MySQL
Защита данных обеспечивается двумя подсистемами: таблицей привилегий и плагинами безопасности.
Первая нужна, чтобы оградить часть данных от определенной группы пользователей. Она вынуждает клиентов, делающих запросы, авторизоваться в системе, дабы та могла убедиться в праве клиента на получение запрашиваемой информации. То есть управлять базой в полной мере может ограниченное число лиц. При желании можно запретить определенному кругу лиц возможность вносить в таблицы любые изменения или удалять из них данные, но при этом оставить за ними возможность добавлять новые единицы данных в существующую базу.
Ближайший пример такой системы — права доступа в WordPress и DataLife Engine.
Плагины безопасности расширяют базовые механизмы защиты целостности данных. Например, создают на сервере более строгую политику создания паролей или дополнительное хранилище для конфиденциальной информации.
Шаг 1 — Создание базы данных
Для начала создайте тестовую базу данных для своего проекта. Для этого подключитесь к серверу через SSH и запустите следующую команду для входа на сервер MySQL с привилегиями root:
Введите пароль пользователя root для вашей базы данных MySQL и нажмите , чтобы продолжить.
Затем запустите следующую команду для создания базы данных. В этом обучающем модуле мы назовем базу данных :
После создания базы данных вы увидите следующее:
Затем создайте учетную запись на сервере MySQL и обязательно замените на надежный пароль:
Вывод должен выглядеть так:
Чтобы предоставить пользователю полные права доступа к базе данных , выполните команду:
Вы должны увидеть следующее:
Очистите таблицу прав доступа, чтобы СУБД MySQL перезагрузила разрешения:
На экран должно быть выведено следующее:
Мы подготовили базу данных и пользователя . Теперь мы можем перейти к созданию таблицы для сохранения образцов продуктов. Позднее мы используем эту таблицу для вставки и получения записей, чтобы продемонстрировать работу объектов MySQL .
Выполните выход из сервера MySQL:
Снова войдите в систему под учетными данными созданного пользователя :
Введите в диалоге пароль пользователя и нажмите , чтобы продолжить. Переключитесь на базу данных с помощью следующей команды:
После выбора базы данных MySQL выведет на экран следующее:
Затем создайте таблицу , запустив команду:
Эта команда создает таблицу с именем . В таблице имеется четыре столбца:
-
: в этом столбце используется тип данных , за счет чего обеспечивается поддержка больших списков продуктов, где может содержаться до 2⁶³-1 элементов. Вы пометили столбец как для уникальной идентификации продуктов. Чтобы MySQL обрабатывала генерирование новых идентификаторов для вставленных столбцов, вы использовали ключевое слово .
-
: в этом столбце хранятся названия продуктов. Мы использовали тип данных , поскольку это поле обычно обрабатывает не более бувенно-числовых символов. Предел в символов — это гипотетическое значение, используемое для целей этого обучающего модуля.
-
: для демонстрационных целей мы добавили в таблицу столбец для хранения информации о розничной цене продуктов. Поскольку некоторые продукты могут иметь значения с плавающей запятой (например, 23.69, 45.36, 102.99), мы использовали тип данных .
-
: в этом столбце данные типа используются для хранения двоичных данных изображений продуктов.
Мы использовали для таблицы , , поддерживающую широкий набор функций, включая транзакции MySQL. После выполнения этой команды для создания таблицы вы увидите на экране следующее:
Выполните выход с сервера MySQL:
Вы увидите следующее
Теперь таблица готова для хранения записей, в том числе изображений продуктов, и на следующем шаге мы заполним ее продуктами.
Заключение
Решение задачи по бэкапу mysql баз, что я описал, не претендует на уникальность и 100% правильность. Это просто мой личный опыт. Никаких особых изысканий и поиска наилучшего решения не проводил. Просто сделал, как сделал, чем с вами и поделился. В моих задачах такой подход достаточен.
Еще раз напоминаю, что этот способ актуален для относительно небольших баз. Дампить объемные базы плохая идея, так как будет сильно проседать i/o дисков. Плюс тут нет возможности делать инкрементные бэкпы. Только полные, что, очевидно, не всегда удобно.
Для мониторинга бэкапов в целом, можете воспользоваться моей объемной статьей по теме — Мониторинг бэкапов с помощью zabbix.
Онлайн курс по Linux
Если у вас есть желание научиться строить и поддерживать высокодоступные и надежные системы, рекомендую познакомиться с онлайн-курсом «Administrator Linux. Professional» в OTUS. Курс не для новичков, для поступления нужны базовые знания по сетям и установке Linux на виртуалку. Обучение длится 5 месяцев, после чего успешные выпускники курса смогут пройти собеседования у партнеров.
Что даст вам этот курс:
- Знание архитектуры Linux.
- Освоение современных методов и инструментов анализа и обработки данных.
- Умение подбирать конфигурацию под необходимые задачи, управлять процессами и обеспечивать безопасность системы.
- Владение основными рабочими инструментами системного администратора.
- Понимание особенностей развертывания, настройки и обслуживания сетей, построенных на базе Linux.
- Способность быстро решать возникающие проблемы и обеспечивать стабильную и бесперебойную работу системы.
Проверьте себя на вступительном тесте и смотрите подробнее программу по .