Mysql (часть 4). Администрирование percona mysql

mysql-admВ предыдущей статье шла речь о настройке mysql репликации, теперь поговорим немного об администрировании percona mysq БД. В статье пойдет речь о полезных командам для работы с mysql.

5. Полезные команды

5.1 Резервное копирования и восстановление БД

Дамп одной базы данных.

mysqldump -u root -p companyDB  > company_DB.sql

Дамп нескольких баз данных.

mysqldump -u root -p --databases companyDB projectsDB  > company_and_projects_DBs.sql

Дамп всех баз данных.

mysqldump -u root -p --all-databases > all_DBs.sql

Дамп одной таблицы.

mysqldump -u root -p companyDB employeesTB > companyDB_employeesTB.sql

Дамп структуры базы данных.

mysqldump -u root -p --no-data companyDB > companyDB_structure.sql

Дамп только триггеров, процедур и событий с gzip-ом.

mysqldump --no-create-info --no-data --triggers --routines --events –u root -p companyDB| gzip > companyDB.sql.gz

Простой скрипт дампа для cron-a.

#!/bin/bash
# Список БД через пробел
dbs="cacti_db inventory_db monitor_db"
# Маленький лог файл для хранение информиции о старте бекапа
echo "`date +%Y-%m-%d` - Start sync backups" >> /tmp/backup.log
for databases in $dbs
do
        /usr/bin/mysqldump --max_allowed_packet=512M -uroot -p'your_pass_here' $databases | gzip > /tmp/`date +${databases}.sql.%Y-%m-%d.gz`
        if [ "$?" -eq 0 ]
        then
                /usr/bin/rsync --remove-source-files -a /tmp/`date +${databases}.sql.%Y-%m-%d.gz` mystorage.company.com:/backups/
        else
                echo "`date +%Y-%m-%d` - FAILED to sync $databases" >> /tmp/backup.log
        fi
done

Развернуть дамп существующей базы данных, способ 1.

mysql -u root -p companyDB < companyDB.sql

Развернуть дамп существующей базы данных, способ 2.

 mysql> use companyDB;
mysql> source companyDB.sql

Развернуть дамп существующей базы данных из архива.

zcat companyDB.sql.gz | mysql -u root -p companyDB

Развернуть дамп несуществующий базы данных, способ 1.

mysql> create database companyDB;
mysql> use companyDB;
mysql> source companyDB.sql;

Развернуть дамп несуществующий базы данных, способ 2.

mysql -u root -p -e "create database companyDB;"
mysql -u root -p companyDB < companyDB.sql

5.2 Переменные, состояние и статус БД

Проверить состояние БД.

mysqladmin -u root -p ping

Узнать версию БД.

mysqladmin -u root -p version
или
mysql> select version();

Статус БД.

mysqladmin -u root -p status
или
mysql> status;

Здесь,

Список переменных статуса mysql.

mysqladmin -u root -p extended-status
или
mysql -u root -p -e 'show status;'

Список всех системных(глобальных) переменных сервера.

mysqladmin -u root -p variables
или
mysql> show variables;

Список процессов/запросов в mysql.

mysqladmin -u root -p processlist
или
mysql> show processlist;

Обновлять каждую секунду список процессов.

mysqladmin -u root -p -i 1 processlist

Список золочёных таблиц.

mysql -u root -p -e 'show open tables WHERE In_use > 0;'

Перезагрузка(запись изменений) привилегий.

mysqladmin -u root -p reload

Очистка (закроет все базы и переоткроет логи).

mysqladmin -u root -p refresh

Потушить сервер.

mysqladmin -u root -p shutdown

Stop/start репликации.

mysqladmin  -u root -p stop-slave
mysqladmin  -u root -p start-slave

5.3 Работа со базами данных и таблицами

Поменять пароль root-а.

mysqladmin -u root -p'old_pass' password 'new_pass'
или
mysql> use mysql;
mysql> update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

Создать БД.

mysqladmin -u root -p create test1db
или
mysql> create database test1db;

Удалить БД.

mysqladmin -u root -p drop test1db
или
mysql> drop test1db;

Список flush-команд.

mysqladmin -u root -p flush-hosts
mysqladmin -u root -p flush-logs
mysqladmin -u root -p flush-privileges
mysqladmin -u root -p flush-status
mysqladmin -u root -p flush-tables
mysqladmin -u root -p flush-threads

Несколько команд в одной.

mysqladmin -u root -p processlist stat

Посмотреть существующие базы.

mysqlshow -u root -p

Посмотреть все таблицы конкретной БД.

mysqlshow -u root -p test1db

… с количеством полей

mysqlshow -v -u root -p test1db

… с количеством полей и строк

mysqlshow -v -v -u root -p test1db

… со структурой таблицы

mysqlshow -u root -p mysql servers

… со структурой таблицы по конкретному полю

mysqlshow -u root -p mysql servers server_name

5.4 Работа с пользователями

Создать нового юзера

mysql> create user 'user1'@'localhost' identified by 'user1pass';

Добавить все права на все базы и все таблицы.

#GRANT [тип прав] ON [название БД].[название таблицы] TO '[имя пользователя]'@'localhost';
mysql> grant ALL PRIVILEGES ON *.* to 'user1'@'localhost';
mysql> flush privileges;

Удаление прав для пользователя.

#REVOKE [тип прав] ON [название БД].[название таблицы] FROM '[имя пользователя]'@'localhost';
mysql> revoke ALL on *.* from 'user1'@'localhost';

Удалить пользователя.

mysql> drop user 'user1'@'localhost';

5.4.1 Сброс пароля root, если забыли.

1. Остановка сервера

# /etc/init.d/mysql stop

2. Запуск mysql со скипом привилегий

mysqld --skip-grant-tables --user=mysql &
или
mysqld_safe --skip-grant-tables &

3. Логинимся в БД без пароля. Пароль хэшируется с помощью функции PASSWORD(str). Это специальная функция, которая возвращает строку 16-byte и используется системой аутентификации исключительно mysql сервером. Поэтому, используйте MD5 или SHA1 для хранения паролей приложений, которые юзают mysql, но не PASSWORD.

mysql> use mysql;
mysql> select Host,User,Password  from user;
+-----------+------------------+-------------------------------------------+
| Host      | User             | Password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *30657C01D8312B05274147BF51D53702F90CB68C |
| ubuntu    | root             | *30657C01D8312B05274147BF51D53702F90CB68C |
| 127.0.0.1 | root             | *30657C01D8312B05274147BF51D53702F90CB68C |
| ::1       | root             | *30657C01D8312B05274147BF51D53702F90CB68C |
| localhost |                  |                                           |
| ubuntu    |                  |                                           |
| localhost | debian-sys-maint | *90A841D52ED52171F0500125A2460FA4443BCF7F |
+-----------+------------------+-------------------------------------------+
7 rows in set (0.00 sec)

4. Теперь меняем пароль.

mysql> update user set Password=PASSWORD('alex1111') WHERE User='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4  Changed: 4  Warnings: 0

5. Так как данная информация храниться в mysql кэше — нужно его освободить, иначе пароль останется закешированным и дела не будет

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

6. Теперь останавливаем mysqld, который запускали вручную и запускаем init-скрипт.

kill `pgrep mysql`
/etc/init.d/mysql start
 * Starting MySQL (Percona Server) database server mysqld

В следующей статье пойдет речь о простой и быстрой настройке mysql кластера, используя Percona XtraDB Cluster

Автор: admin, 14 июня 2015
Рубрики: Linux
Метки: ,

Написать комментарий

Последние статьи

Яндекс.Метрика
?>