MySQL

Даты

Разница дат:

select (UNIX_TIMESTAMP(now())-UNIX_TIMESTAMP(block_date))/(3600*24) as days from vgroups limit 1;

Первое число текущего месяца:

DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY) AS 'month_create'

Первое число следующего месяца:

date_add(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY),interval 1 month) AS 'month_pay'

Последний день месяца следующего месяца:

date_add(date_add(DATE_SUB(now(),INTERVAL DAYOFMONTH(now())-1 DAY),interval 2 month),interval -1 day) AS 'month_free'

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

Создадим пользователя test с localhost и паролем ‘password’.

create user 'test'@'localhost' identified by 'password';

Пользователь создан. Для проверки посмотрим список пользователей:

select user,host,password from mysql.user;

Создадим базу данных testdb.

create database testdb;

Дадим пользователю test полные права на базу testdb

grant all on testdb.* to 'test'@'localhost'

Удалим пользователя ‘test’@’localhost’

drop user 'test'@'localhost'

Работа с IP адресами MySQL:

Оптимально хранить ip-адреса не как строки (varchar), а как числа. Для этого существует две функции mySQL — INET_ATON и INET_NTOA, первая преобразует 4 байтную последовательность ip-адреса в число, вторая преобразует обратно.

SELECT INET_NTOA(ip)
 FROM `ip_s`
 WHERE `ip_s`.ip > INET_ATON('255.255.0.0')

Работа с бекапами:

Простой бекап

mysqldump -u USER -pPASSWORD DATABASE > /path/to/file/dump.sql

Бекап с процедурами:

mysqldump —routines —extended-insert berserk > outputfile.sql

Бекап со структурой без данных

mysqldump —no-data — u USER -pPASSWORD DATABASE > /path/to/file/schema.sql

Следующая команда выгрузит дамп базы данных с триггреми, процедурами, таблицами НО! без данных в таблицах.

mysqldump --routines --no-data --no-create-db --skip-opt billing > onlytriggers.sql

Если нужно сделать дамп только одной или нескольких таблиц
mysqldump -u USER -pPASSWORD DATABASE TABLE1 TABLE2 TABLE3 > /path/to/file/dump_table.sql

Бекап в архив

mysqldump -u USER -pPASSWORD DATABASE | gzip > /path/to/outputfile.sql.gz

Создание бекапа с указанием его даты
mysqldump -u USER -pPASSWORD DATABASE | gzip > `date +/path/to/outputfile.sql.%Y%m%d.%H%M%S.gz`

Заливаем бекап в базу данных
mysql -u USER -pPASSWORD DATABASE < /path/to/dump.sql

Из архива в базу

gunzip < /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE
или так
zcat /path/to/outputfile.sql.gz | mysql -u USER -pPASSWORD DATABASE

Создаём новую базу данных
mysqladmin -u USER -pPASSWORD create NEWDATABASE

Работа с процедурами:

Посмотреть список всех процедур:

SHOW PROCEDURE STATUS;

Посмотреть код конкретной процедуры:

SHOW create PROCEDURE PORT_CONDITION_1;

Только body:

select body from mysql.proc where name='PORT_CONDITION_1';

Вставить процедуру в базу:

delimiter //
create PROCEDURE `PORT_CONDITION_4`(IN in_port int, OUT out_state int)
BEGIN
DECLARE CONTINUE HANDLER FOR NOT FOUND SET out_state = 0;
SELECT IF(`vgroups`.`blocked`, 2, 1) INTO out_state FROM `vgroups`,`ports` WHERE `vgroups`.`vg_id` = `ports`.`vg_id` AND `ports`.`port_id`= in_port;
END
//
delimiter ;

Список процессов:

SHOW FULL PROCESSLIST;

Убить запрос:

kill query <id>;

Определение размера таблиц:

SELECT
        count(*) TABLES,
        table_schema,concat(round(sum(table_rows)/1000000,2),'M') rows,
        concat(round(sum(data_length)/(1024*1024*1024),2),'G') DATA,
        concat(round(sum(index_length)/(1024*1024*1024),2),'G') idx,
        concat(round(sum(data_length+index_length)/(1024*1024*1024),2),'G') total_size,
        round(sum(index_length)/sum(data_length),2) idxfrac
        FROM information_schema.TABLES
        GROUP BY table_schema
        ORDER BY sum(data_length+index_length) DESC LIMIT 10;
SHOW DATABASES; - список баз данных
SHOW TABLES [FROM db_name]; -  список таблиц в базе 
SHOW COLUMNS FROM таблица [FROM db_name]; - список столбцов в таблице
SHOW CREATE TABLE table_name; - показать структуру таблицы в формате "CREATE TABLE"
SHOW INDEX FROM tbl_name; - список индексов
SHOW GRANTS FOR user [FROM db_name]; - привилегии для пользователя.


SHOW VARIABLES; - значения системных переменных
SHOW [FULL] PROCESSLIST; - статистика по mysqld процессам
SHOW STATUS; - общая статистика
SHOW TABLE STATUS [FROM db_name]; - статистика по всем таблицам в базе

Комментарии:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Жизнь замечательных грибов