./comments
./contacts telegram: @stikname
email: ;

Блог » MySQL


Чиним таблицу mysql с помощью myisamchk
Туторы, MySQL, Debian
Случилось однажды у меня что полетела таблица в бд, и простые способы починить, проверить, оптимизировать таблицу mysql не помогали. При попытке починить базу, появлялась следующая ошибка:
error : Can't create new tempfile: './mysuperbd/mysupertable.TMD'
status : Operation failed


Я починил mysql таблицу на своём сервере с Debian следующим способом...

1. идем в папку:
cd /var/lib/mysql/<название_базы>

2. и уже там выполняем команду для починки таблицы:
myisamchk -r -v -f ./<название таблицы>

расширение .TMD нам не нужно указывать в названии таблицы.

Я не проверял, но думаю что и в CentOS должно быть примерно так же.
05.01.2016 20:07:53
admin
1849
1
Включаем лог медленных запросов MySQL
Туторы, MySQL
Чтобы включить лог медленных запросов открываем mysql конфиг:
nano /etc/mysql/my.cnf

ищем настройку именяем её на следующие параметры:
log_slow_queries        = /var/log/mysql/mysql-slow.log
long_query_time = 1


log_slow_queries - путь до файла в который будут записываться медленные запросы.
long_query_time - время в секундах, запросы выполняющиеся дольше указанного времени попадут в лог.

перезапускаем mysql
/etc/init.d/mysql restart
04.12.2015 18:26:00
admin
2085
0
Выборка из MySQL по длине строки
MySQL
Простой запрос для выборки из mysql базы по размеру строки.

Выбираем все записи в которых длина данных в ячейке field менее 30 символов:
SELECT * FROM  `table` WHERE CHAR_LENGTH( field ) <30;
17.02.2015 22:43:44
admin
2520
1
Изменить все значения столбца в mysql бд
MySQL
Все значения столбца перевести в нижний регистр
update table set field = lower(field);


Заменить все значения на требуемый текст
update table set field = 'какой-то текст';
21.03.2014 14:01:24
admin
2802
1
Тюнинг тредов (mysql threads tunning)
Туторы, Копипаст, MySQL
Здесь упущено много технических деталей, прошу технарей не сильно докапываться, т.к. информация "для чайников".

Итак. Как известно, mysqld это "один процесс - много тредов". В достаточно приближенном понимании тред (thread) это когда процесс копирует сам себя, и родительский процесс передает треду какую то задачу для решения.
Создание треда отличается от обычного fork() в основном тем, что fork порождает +1 процесс, тогда как деление на треды использует другую, более производительную технологию ветвления без клонирования данных в памяти.

При каждом подключении клиента, mysql создает тред, который это подключение обрабатывает.

Если у вас средне нагруженый mysqld, то убедитесь что mysqld работает на нормальной реализации тредов. К примеру, FreeBSD ниже 6 ветки имеет ненормальную, глючную реализацию тредов pthread. Основные глюки проявляются при работе на SMP (более 1 процессора). pthread "не умеет" нормально раскидывать треды по разным процессорам и в результате мы имеем ситуацию, когда Mysqld висит только на одном процессоре вместе с кучей своих детишек. Все остальные процессоры курят, даже если мускуль съел все процессорное время своего процессора.

Более детальная информация как правильно заставить работать mysql под FreeBSD может быть найдена тут: http://dev.mysql.com/doc/refman/5.1/en/freebsd.html

Итак, посмотрим что у вас творится с тредами.
25.10.2013 19:28:38
admin
2050
0
Описание параметров конфига MySQL
Туторы, Копипаст, MySQL
Вот, приблизительный конфиг для для 2Гб VPS/VDS (2-х ядерного)

Надо сказать, что вариант экспериментальный, но вполне рабочий, допускает корректировки, где-то можно подрезать буфер или наоборот накинуть немного. Замечу, что на каждом сервере должен быть свой конфиг для конкретных задач (сайтов).
25.10.2013 19:19:19
admin
3318
0
Починить/Проверить/Оптимизировать mysql таблицы из консоли
MySQL
Восстановление одной из таблиц
mysqlcheck -uroot -p -r db_name table_name


Все таблицы в базе
mysqlcheck -uroot -p -r db_name


Починить все таблицы, во всех базах данных
mysqlcheck -uroot -p -A --auto-repair или mysqlcheck -uroot -p -A -r


Проверка всех баз данных
mysqlcheck -uroot -p -c  -A


Оптимизация всех баз данных
mysqlcheck -uroot -p -o -A


Иногда при сбое появляется следующее уведомление:
Checking for tables which need an upgrade, are corrupt or were not closed cleanly..

тогда базы нужно проверить вот таким способом
mysql_upgrade --force -u root -p
05.10.2013 18:02:14
admin
2275
0
Рекомендации и тюнинг MySQL
MySQL

Несколько рекомендаций по тюнингу и улучшении работы mysql.
05.10.2013 17:53:38
admin
1471
0
Изменить кодировку mysql таблицы
MySQL
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
17.09.2013 14:02:10
admin
989
0
Скопировать mysql таблицу с индексами
MySQL
create table A like B;
insert into A select * from B;
17.09.2013 12:23:30
admin
979
0