Архив рубрики: Базы данных

[mysql] Got fatal error 1236 from master when reading data from binary log

Got fatal error 1236 from master when reading data from binary log: 'Cannot replicate anonymous transaction when AUTO_POSITION = 1, at file /database/mysql/mysql-bin.030053, position 154.; the first event '' at 4, the last event read from 'mysql-bin.030053' at 219, the last byte read from '/database/mysql/mysql-bin.030053' at 219.'

Такую ошибку получили при попытке переключиться по инструкции online migration to GTID replication. Решение не очевидное и нашлось методом гугления, проб.

Читать далее

[mysql] Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used

ERROR 1144 (42000): Illegal GRANT/REVOKE command; please consult the manual to see which privileges can be used

Такая ошибка появляется, когда вы пытаетесь дать права на объект, на который права не могут распространяться. К примеру, нельзя дать права execute, create temporary table на конкретную таблицу. То есть, сначала сверяемся с мануалом , и, если всё правильно, пробуем по одному удалять «гранты» в надежде найти проблемный.

[mysql] Некоторые особенности работы и установки MEM

MEM mysql enterprice monitor. Это такая веб-админка, где можно посмотреть за работой базы mysql и понять, почему она тормозит или посмотреть другую статистику. По большому счёту это приложение на java, которое выгребает статистику из баз perfomance scheme и information scheme и предоставляют её в удобном виде. Так же, время от времени парсится и вывод show engine innodb status на предмет полезной информации.

Читать далее

[mysql] 5.7 и optimizer_switch

Для тех, кто решил обновится с 5.6 на 5.7 ждут «сюрпризы» в виде переработанного оптимизатора запросов. Что такое оптимизатор? Это «помощник», который перед каждым выполнением запросов ищет путь «наилучшего» выполнения запроса. Все есть больше 10-ка различных параметров оптимизатора, которые можно включать/выключать, тем самым меняя логику исполнения запросов. Подробнее о них можно прочесть здесь.

Читать далее

[mysql] Правильно выставляем sql_mode в my.cnf

Сразу замечу, что официальной документации я не нашёл ни единого упоминания  о таком поведении. А оно заключается в следующем: что бы правильно выставить значение sql_mode в my.cnf, нужно поискать, ни где ли в других стандартных конфигах не упоминается ли? В моём случае главный конфиг был в /etc/my.cnf, и базу я стартовал именно с указанием этого конфига. Но! в папке с установленным дистрибутивом mysql был ещё один my.cnf (лежал он в /opt/mysql/mysql/my.cnf, то есть $MYSQL_HOME/my.cnf) в котором и была эта строка, которая перетирала любые правки, внесённые в /etc/my.cnf касательно sql_mode. Возможно это так же влияет и на другие переменные.

После комментирования строки, и выставление нужного значения в /etc/my.cnf (мне нужно было полностью отключить его), всё заработало как надо. Правильно нужно указать так:

sql_mode=

[postgresql] Включаем поддержку mysql через mysql_fdw

Это расширение, которое позволяет использовать таблицы из mysql в postgresql. Подробнее о самом плагине, а так же установке/использованию можно прочесть на официальной страничке проекта

В моём же случае, был апгрейд postgresql с 9.3 до 9.4 с некими «сюрпризами». А сюрпризы заключались в том, что на 9.3 была старая версия mysql_fdw в которой были опции address/query, которых нет в новой. И понятно, что при выполнении pg_upgrade получаем ругань на это. Как быть? А план такой (подсказали на одном из форумов):

1) подсунуть новый модуль mysql_fdw в 9.3.
2) заменить/удалить deprecated опции
3) собственно upgrade.

Читать далее

[mysql] Warning: Using a password on the command line interface can be insecure.

Это сообщение начало появляться в mysql 5.6 если используется ввод пароля прямо в строке с подключением. Что бы убрать это, нужно создать так называемый login-path с нужными параметрами подключения (user,pass,host,db,…) и потом его вызвать непосредственно в скрипте. И так, создаём (будет выдано приглашение на ввод пароля для юзера proftpd):

# mysql_config_editor set --login-path=proftpd --host=localhost --user=proftpd --password
Enter password:

Теперь в скриптах или в оболочке используем такую конструкцию:

# mysql --login-path=proftpd proftpd_admin -N -e "select ..."

Больше вы не будете видеть надоедливые сообщения.

ПС. Если по каким-то причинам это нельзя сделать, то можно просто «подавить» вывод stderr в /dev/null:

$ mysql -uuser -ppass -e "select 1" 2>/dev/null

[mysql] Сброс пароля root’a без рестарта сервера

Данная статья носит вольный перевод статьи.

И так: идея такая: поднять  второй экземпляр mysql, выставить нужный пароль, подменить файлы таблицы user (user.MYD, user.MYI) базы mysql и послать сигнал SIGHUP нашему mysql’ю что бы он заново перечитал grant’ы. Приступим

Читать далее

0xDBE. Новая IDE для разработчиков и админов СУБД от JetBrains

IDE основана на платформе IntelliJ, как и остальные IDE от JetBrains, поддерживает все популярные диалекты SQL, предлагает автодополнения и прочие удобства при работе с кодом SQL, работу со схемами баз данных, интеграцию в VCS и еще кое-что, о чем речь ниже. IDE написана на Java и поддерживает те СУБД, для которых есть драйверы JDBC.

Читать далее