Установка и использование mysqltuner.pl

MySQLTuner — это Perl скрипт, который даст рекомендации по повышению производительности и стабильности MySQL сервера.
Страница на GiHub — https://github.com/major/MySQLTuner-perl

MySQLTuner в Ubuntu можно установить командой:

sudo apt-get install mysqltuner

В CentOS так:

yum install mysqltuner

Читать далее Установка и использование mysqltuner.pl

Изменение значения по умолчанию в MySQL столбцах

Приведу пример указания или изменения значения по умолчанию в MySQL столбце.
Посмотрим список таблиц в базе данных:

SHOW TABLES;

Посмотрим структуру интересующей нас таблицы:

DESCRIBE internet_main;

Допустим колонка activate имеет тип date и значение по умолчанию 0000-00-00, а мы хотим сделать 3000-01-01, то выполним sql запрос:

ALTER TABLE internet_main ALTER activate SET DEFAULT '3000-01-01';

Можно также удалить значение по умолчанию:

ALTER TABLE internet_main ALTER activate DROP DEFAULT;

Или вернуть как было:

ALTER TABLE internet_main ALTER activate SET DEFAULT '0000-00-00';

В строгом режиме MySQL может не дать установить значение 0000-00-00, поэтому можно временно отключить строгий режим:

SET sql_mode = '';

Как запустить MySQL сервер на конкретных IP

Подходящим решением которое я нашел для запуска MySQL сервера на конкретных IP адресах, это запустить его на всех и потом отфильтровать подключаемых клиентов через iptables.

Для теста я использовал Ubuntu Server 16.04.5 LTS, который имел более 200 внешних белых IP и был высоконагруженным.

Читать далее Как запустить MySQL сервер на конкретных IP

SQL запросы для ABillS

В этой статье я приведу примеры некоторых SQL запросов для базы биллинговой системы ABillS.

Первым делом подключимся к MySQL серверу и перейдем к базе abills (либо можно использовать phpmyadmin или внешний MySQL клиент):

mysql -u root
use abills;

Читать далее SQL запросы для ABillS

Скрипт добавления IP адресов из файла в ipset

Понадобилось однажды написать скрипт чтобы добавить в ipset все IP для которых били подняты сессии на сервере доступа, использовался биллинг Abills, поэтому я решил взять IP адреса из MySQL таблицы биллинга.

Первым делом создадим тестовый ipset:

ipset create test iphash

Читать далее Скрипт добавления IP адресов из файла в ipset

Решение MySQL ERROR 1055 (42000)

Недавно выполнял необходимые SQL запросы и заметил следующую ошибку:

ERROR 1055 (42000): Expression #4 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'database_name.table_name.column_name' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

Читать далее Решение MySQL ERROR 1055 (42000)

Как увидеть процесс импорта SQL файла?

Для того чтобы видеть процесс импорта SQL файлов я использую утилиту Pipe Viewer.
Pipe Viewer очень полезен особенно когда SQL файл большого размера, позволяет примерно оценить оставшееся время до завершения импорта файла, отображает процесс импорта в процентах и перешедшее время.

Установить Pipe Viewer в Ubuntu/Debian можно командой:

sudo apt install pv

В Fedora так:

yum install pv

Допустим раньше мы импортировали sql файл и не видели процесс:

mysql -u root DATABASE_NAME < dump.sql

Теперь чтобы увидеть процесс выполним импорт с использованием Pipe Viewer:

pv dump.sql | mysql -u root DATABASE_NAME

Как решить «ERROR 1062 (23000) at line X: Duplicate entry ?????? for key X»

Импортировал недавно дамп в MySQL и обнаружил следующую ошибку:

ERROR 1062 (23000) at line 14096: Duplicate entry '????????' for key 'name'

Читать далее Как решить «ERROR 1062 (23000) at line X: Duplicate entry ?????? for key X»

Решение ошибки с binary-mode при импорте MySQL dump из командной строки

Однажды решил импортировать sql дамп:

mysql -u root database < database.sql.gz

И заметил следующую ошибку:

ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.

Ошибка появляется из-за того что дамп сжат и его необходимо сначала распаковать:

gunzip database.sql.gz

А потом импортировать:

mysql -u root database < database.sql

Смотрите другие мои статьи в категории MySQL

Настройка репликации в MySQL

На тесте выполню настройку репликации в MySQL.

Допустим имеется два сервера с установленной системой Ubuntu Server, на обеих установим MySQL сервер и клиент, если они не установлены:

sudo apt-get install mysql-server mysql-client

Читать далее Настройка репликации в MySQL