Как изменить движок таблицы amazon rds mysql.slow_log на myisam

У меня есть экземпляр Aurora mysql RDS на AWS. Я включил general_logs на пару дней, чтобы проанализировать некоторые проблемы с помощью общих журналов. Эти журналы огромны для запроса и фильтрации определенных записей. Так как механизмом по умолчанию для таблицы общего журнала является CSV, поиск требуемых данных происходит очень медленно. Я читал, что мы можем изменить движок general_log на MyISAM и проиндексировать столбец event_time. Но я не могу найти вариант для этого на консоли AWS. Кто-нибудь может помочь с этим?

1 ответ

Я не думаю, что вы можете изменить это. Даже если вы, я настоятельно советую против этого. ( Написал об этом в DBA StackExchange кратко) Почему???

AMAZON RDS

Я думаю, что Amazon будет вращать медленный журнал для вас. Это требует, чтобы механизм хранения оставался CSV, .CSV Это просто файл CRLF с полями, разделенными запятыми и символьными строками, заключенными в двойные кавычки ( см. мой старый пост в DBA StackExchange, где я создал таблицу CSV, загрузил ее с данными и просмотрел в командной строке Windows).

Вращение медленного журнала как CSV таблица может быть сделана с файловым усечением .CSV за пределами mysqld с последующим FLUSH TABLES mysql.slow_log;

# echo -n > slow_log.CSV
# mysql -ANe"SET GLOBAL slow_query_log=0;FLUSH TABLES mysql.slow_log;SET GLOBAL slow_query_log=1;"

или же:

mysql> SET GLOBAL slow_query_log = 0;
mysql> TRUNCATE TABLE mysql.slow_log;
mysql> SET GLOBAL slow_query_log = 1;

или же

mysql> SET GLOBAL slow_query_log = 0;
mysql> CREATE TABLE mysql.slow_log_new LIKE mysql.slow_log;
mysql> RENAME TABLE mysql.slow_log LIKE mysql.slow_log_old;
mysql> RENAME TABLE mysql.slow_log_new LIKE mysql.slow_log;
mysql> SET GLOBAL slow_query_log = 1;
mysql> RENAME TABLE mysql.slow_log_old;

Если Amazon допустит медленный журнал как таблицу MyISAM, вышеуказанные операции будут медленнее или просто невозможны. В любом случае вы не можете сделать это, потому что Amazon не позволяет никому иметь привилегию SUPER.

ЧТО ТЫ МОЖЕШЬ СДЕЛАТЬ

Возможно, вы можете создать копию медленного журнала (если у вас есть место в экземпляре RDS)

Во-первых, отключите медленный журнал в группе параметров БД (я надеюсь, что RDS не сбрасывает медленный журнал при отключении медленного медленного. Будем надеяться, что это не так).

Затем запустите эти:

CREATE DATABASE mylogs;
CREATE TABLE mylogs.my_slow_log LIKE mysql.slow_log;
ALTER TABLE mylogs.my_slow_log ENGINE=MyISAM;
INSERT INTO mylogs.my_slow_log SELECT * FROM mysql.slow_log;
ALTER TABLE mylogs.my_slow_log ADD INDEX (start_time);

Затем снова включите медленный журнал.

Теперь вы можете запросить вашу копию медленного журнала по дате и времени (время начала индексировано), а также по пользователю и хосту.

Как только вы закончите анализ, вы можете оставить свой стол.

Что об общем журнале???

Не беспокойся Вам лучше использовать медленный журнал. Пожалуйста, смотрите мой старый пост о том, почему лучше использовать медленный журнал (с long_query_time, установленным в 0 ) чем общий лог.

ПРЕДУПРЕЖДЕНИЕ

Пожалуйста, не делайте свою копию медленного журнала в виде таблицы InnoDB. Вы рискуете большой транзакцией, загружающей журналы отмены. Если вы все еще хотите попробовать это как InnoDB, RDS может ответить GODSPEED, SPIDERMAN!!!

Другие вопросы по тегам