00-tech-book
.pdfmysql> SOURCE /root/sourcefile.sql;
Query OK, 1 row affected, 1 warning (0.00 sec)
Query OK, 1 row affected, 1 warning (0.00 sec)
Query OK, 1 row affected, 1 warning (0.00 sec)
Мы добавили три записи в таблицу, теперь давайте посмотрим что получилось. Выборку из базы данных можно сделать командой SELECT <что нам нужно> FROM <название таблицы>. Мы сделаем выборку всего что есть в таблице.
То, что нужно! Мы создали поле id и поставили на него AUTO_INCREMENT, то есть при вводе каждой новой записи значение id будет увеличиваться на единицу.
Сделаем запрос с условием. Нам нужно узнать кто сейчас работает. Условие можно задать командой WHERE.
Сегодня наш коллега Сергей вернулся из отпуска, нужно это отобразить в БД.
Модифицировать данные можно командой UPDATE. Мы указываем в какой таблице будем делать изменения, далее через условие WHERE мы находим нужного нам сотрудника по фамилии или другому параметру, который позволит однозначно определить его.
Модуль 11. MySQL. |
|
131 |
|
|
|
|
|
mysql> UPDATE users SET status='work' WHERE surname='Malevin';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
Все получилось. Теперь удалим запись из таблицы. К примеру Федор Карпин больше не работает в нашей компании.
mysql> DELETE from users WHERE surname='Karpin';
Query OK, 1 row affected (0.00 sec)
Вернем пока что Федора на место, все таки 3 – хорошее число и посчитаем количество записей в нашей таблице, это бывает необходимым.
Пользователи и привилегии
Теперь про пользователей и права. До этого момента мы работали из под root.
Создадим обычного пользователя (admin) и дадим ему некоторые права на базу company и все таблицы в ней (company.*).
|
132 |
|
Модуль 11. MySQL. |
|
|
|
|
mysql> GRANT SELECT, INSERT, DELETE, UPDATE ON company.* TO
'admin'@'localhost' IDENTIFIED BY 'secret';
Query OK, 0 rows affected (0.00 sec)
Теперь можно заходить из под него и работать с базой.
# mysql -u admin -p
mysql> SHOW GRANTS FOR 'admin'@'localhost';
Убрать права можно с помощью команды REVOKE. Убираем возможность удалять записи.
mysql> REVOKE DELETE ON company.* FROM 'admin'@'localhost'; Query OK, 0 rows affected (0.00 sec)
Замечу, даже если отобрать все права у пользователя он все равно будет в MySQL. Полностью удалить пользователя из базы можно так.
# mysql -p
mysql> DELETE FROM mysql.user WHERE USER=’admin@localhost’; Query OK, 0 rows affected (0.00 sec)
Саммари по командам и принципу работы
Наша база данных расположена в /var/lib/mysql/<название БД>
# ls -lh /var/lib/mysql/company/ total 40K
-rw-rw---- 1 mysql mysql 65 Feb 21 12:05 db.opt -rw-rw---- 1 mysql mysql 8.6K Feb 21 19:26 users.frm
-rw-rw---- 1 mysql mysql 168 Feb 21 20:40 users.MYD -rw-rw---- 1 mysql mysql 2.0K Feb 21 20:40 users.MYI
Файлы в бинарном формате и нечего с ними напрямую делать не нужно.
Модуль 11. MySQL. |
|
133 |
|
|
|
Как работать с БД
Создаем базу данных с помощью CREATE DATABASE
Делаем её текущей с помощью USE
Создаем в ней таблицу с помощью CREATE TABLE
Заполняем данными с помощью INSERT INTO
Работаем с БД
Запросы
SELECT – делаем выборку
INSERT – заносим данные
UPDATE – модифицируем данные
DELETE – удаляем
GRANT – даем привилегии пользователю
REVOKE – убираем привилегии у пользователя
DROP – удаляет базу или таблицу (DROP DATABASE <название базы> или DROP TABLE <название таблицы>)
Команды в мониторе MySQL
HELP – хорошая справка по MySQL
STATUS – текущий статус MySQL
SHOW DATABASES; - вывести весь список БД
SHOW TABLES; - вывести список всех таблиц в базе (перед этим делаем базу активной с помощью USE)
SHOW PROSESSLIST; - текущие процессы в базе
Условие WHERE поможет, когда нужно работать с записями попадающими под конкретное условие
Конфигурационный файл my.cnf
До этого момента мы плодотворно поработали с MySQL но даже не притронулись к конфигурационному файлу. Типового файла конфигурации хватаетдлярешениямалыхисреднихзадачбизнеса.Какпроизводительность различных баз данных, так и опции в этом файле (связанные с производительностью) не играют роли до определенного момента. Обычно
|
134 |
|
Модуль 11. MySQL. |
|
|
|
|
возникает две ситуации. Малые/средние нагрузки когда вы обслуживаете MySQL. При таком раскладе приходится делать несложные запросы, резервное копирование баз, подключение веб-проектов использующих БД. Настройки не сильно влияют на производительность. И вторая ситуация
– большие базы данных и большие нагрузки, скорее всего в этом случае в
компании будут специалисты по БД.
Вместе с MySQL поставляется пять файлов типовой конфигурации, начать лучше с них и далее корректировать под свои нужды.
# find / -name my*.cnf
/usr/share/doc/mysql-server-5.0.45/my-huge.cnf
/usr/share/doc/mysql-server-5.0.45/my-large.cnf
/usr/share/doc/mysql-server-5.0.45/my-small.cnf
/usr/share/doc/mysql-server-5.0.45/my-innodb-heavy-4G.cnf
/usr/share/doc/mysql-server-5.0.45/my-medium.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/usr/share/mysql/my-medium.cnf
/etc/my.cnf
Рабочий файл конфигурации MySQL – это /etc/my.cnf, все остальные это шаблоны которые можно использовать вместо my.cnf
Пожалуй самое главное что стоит сделать – это отключить возможность подключения к БД по сети. Для этого нужно добавить строку skip-networking в /etc/my.cnf
Если захочется сделать кодировку в базе cp1251 то в my.cf в секцию [mysqld] добавляем такое:
[mysqld]
default-character-set=cp1251
init-connect='SET NAMES cp1251'
Модуль 11. MySQL. |
|
135 |
|
|
|
Забытый пароль администратора
Чтобы сбросить пароль администратора выключаем MySQL-сервер и перезапускаем его с опцией --skip-grant-tables
#service mysqld stop
#mysqld_safe --skip-grant-tables &
#mysql
mysql>UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE user='root';
mysql>FLUSH PRIVILEGES;
# service mysqld restart
Вместо newpwd укажите желаемый пароль.
Резервное копирование
Резервное копирование можно делать с помощью mysqldump. Скопируем нашу базу company в файл company.sql
# mysqldump --opt -p company > company.sql
--opt – Тоже самое, что и перечисление --add-drop-table --add-locks –create- options --disable-keys --extended-insert --lock-tables --quick –set-charset. Рекомендуется использовать.
-p – запрашивает строку пароля для пользователя root, можно указать другого пользователя ключом -u
company – название нашей базы в MySQL
> company.sql – куда записать дамп базы, мы это сделали в company.sql, принято дампам MySQL давать имена с расширением sql
Комментарий: вообще в последних версиях mysqldump опции –add-drop-* добавлять необходимости нет, это происходит автоматически.
|
136 |
|
Модуль 11. MySQL. |
|
|
|
|
Удалим нашу базу, создадим пустую и попробуем восстановить из резервной копии.
Удаляем базу
mysql> DROP DATABASE company;
Query OK, 1 row affected (0.06 sec)
Создаем её заново
mysql> CREATE DATABASE company;
Query OK, 1 row affected (0.00 sec)
Закачиваем
#mysql -p company < company.sql
#mysql -p
mysql>USE company;
Все как мы хотели.
Проверка целостности таблиц с помощью myisamchk
Иногда база отказывается грузится указывая на ошибки в таблице. Самое время запустить myisamchk. Программа предназначена для профилактики таблиципослеаварийноговосстановления.Вкачествеаргумента,программе нужно передать MyISAM-таблицу (*.MYI) которую мы хотим проверить.
Модуль 11. MySQL. |
|
137 |
|
|
|
# myisamchk /var/lib/mysql/company/users.MYI
Checking MyISAM file: /var/lib/mysql/company/users.MYI
Data records: 3 Deleted blocks: 0
-check file-size
-check record delete-chain
-check key delete-chain
-check index reference
-check data record references index: 1
-check record links
Ключ -r или --recover может исправить практически все, кроме уникальных ключей, в которых есть повторения (ошибка, вероятность которой мизерна для таблиц ISAM/MyISAM).
Ключ -o или --safe-recover это старый метод восстановления (читаются подряд все строки и обновляются все деревья индексов на основе найденных строк) метод весьма медлителен, но справляется с несколькими редкими случаями, непосильными для
Саммари по myisamchk
Ключи -r или -o используются для восстановления таблиц. Рекомендуется использовать ключ -r и если он не помог, использовать -o, который на порядок медленнее работает.
Резюме
Мы познакомились с СУБД MySQL, поняли как все устроено и работает. Изучили популярные SQL-запросы, которые наверно используются в 90% случаев если не больше. Это конечно только вершина айсберга, но полученных знаний и навыком достаточно чтобы решать почти любые задачи, которые могут встретиться у владельца сайта или системного администратора. Для более сложных вещей существуют администраторы БД и разработчики БД.
Домашнее задание
Пройтись по всем шагам описанным в данном модуле на практике и убедиться что есть понимание того, что вы делаете.
|
138 |
|
Модуль 11. MySQL. |
|
|
|
|
Система мониторинга Nagios
Nagios – это система мониторинга, позволяющая отслеживать работу не только сетевых но и системных служб. Работа Nagios основывается на многочисленных плагинах, которые добавляют в программу практически безграничный функционал.
Основные возможности Nagios:
–мониторинг сетевых служб (HTTP/S, SMTP, POP3, IMAP, DNS, FTP, SNMP и т.д.);
–мониторингсистемныхслужбипараметров(нагрузканаCPU,использование памяти, использование диска и т.д.);
–возможность построения распределенной системы мониторинга;
–легкость в построение своих плагинов;
–гибкость конфигурирования;
–удобный веб-интерфейс.
В Nagios есть два режима проверки хоста, активный и пассивный. Активный
– это когда сама система мониторинга посылает запросы к удаленному хосту и получает информацию. Пассивный – это когда специальная внешняя программа присылают всю необходимую информацию в Nagios. Пассивные проверки полезны в случае блокирования файрволом прямого доступа в нужную нам сеть. Внешние пользователи не могут попасть во внутреннею сетьавотизвнутреннийсетиобратитьсявовнешнеюможно.Unix-программа которая занимается обслуживанием пассивных проверок – NSCA. Принцип ее работы показан на рисунке ниже.
Со стороны сервера мониторинга запускается служба NSCA которая принимает все пассивные запросы со стороны клиентов и передает их в Nagios. NSCA можно скачать на www.nagios.org
В мониторинге сетевых служб используется обращение на определенный порт в зависимости от службы. Яркий пример такого же принципа работы это программа telnet. В случае проверки системных служб на хосте где работает Nagios все просто, информация сразу поступает в Nagios. В случае удаленных хостов на них нужно поставить специальный агент, который
Модуль 12. Система мониторинга Nagios. |
|
139 |
|
|
|
соберет информацию о локальных службах и отправит ее в Nagios. Агент для linux называется NRPE, для Windows NSClient++
Как мы видим, Nagios способен без проблем обслуживать гетерогенные
сети.
Установка и настройка Nagios
Убедитесь что репозиторий EPEL подключен
# rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-
5-3.noarch.rpm
далее набираем
# yum -y install nagios nagios-plugins-all
Добавляем сервисы Nagios и Apache в автозагрузку
#chkconfig nagios on
#chkconfig httpd on
Каталоги с ключевыми файлами Nagios:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/etc/nagios/ |
|
|
|
|
|
|
|
|
Конфигурационные файлы Nagios; |
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
/usr/bin/nagiostats |
|
|
Программа показывающая статистику работы Nagios; |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
/etc/init.d/nagios |
|||||||||||||||||||||
|
|
|
|
|
Скрипт запуска/выключения сервиса; |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
/etc/httpd/conf.d/ |
|||||||||||||||||||||
|
|
Файл подключения к Apache; |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
nagios.conf |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
/usr/share/doc/ |
|||||||||||||||||||||
|
|
|
|
|
|
|
Документация; |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
/usr/lib/nagios/ |
|||||||||||||||||||||
|
|
|
|
|
|
|
|
Движок Nagios; |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
/usr/share/nagios/ |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
/var/log/nagios/ |
|||||||||||||||||||||
|
|
|
|
|
|
|
Логи. |
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
|
Модуль 12. Система мониторинга Nagios. |
|
|
|
|