verfaa
Профессор
- Регистрация
- 29 Янв 2007
- Сообщения
- 417
- Реакции
- 49
- Автор темы
- #1
Есть база данных Mariadb 10.5.8, в ней несколько однотипных таблиц MyISAM такого вида:
В эти таблицы достаточно активно идёт запись и чтение данных. И вот сегодня утром уже не в первый раз столкнулся с тем, что несколько таблиц выдают, что они crashed и нуждаются в repaired.
Кликаю в phpmyadmin для этой таблицы "Repair table" на что мне выдаёт:
И таблица вроде начинает работать, но затем ситуация может повториться снова. Ещё заметил, что после восстановления MAX(`id`) и COUNT(`id`) стали различаться.
Выдаёт:
Не очень давно обновлял Mariadb с 5.5.68 до 10.5.8 (Обновлял через mysqldump, а затем импортировал новый дамп в свежеустановленную БД).
Сервер Centos 7.9 c 32 GB RAM
Все таблицы в БД только типа MyISAM (таблиц InnoDB нет).
Вот конфиг my.cnf
Перед крашем таблиц в логах обнаружил такие записи:
И крашится таблицы начинают по моим ощущениям, когда возрастает нагрузка на БД.
Собственно, вопрос в том, почему это возникает и как с этим бороться? Может в настройках что-то донастроить нужно?
Код:
id Primary int(10) UNSIGNED AUTO_INCREMENT
txt Index varchar(255) utf8_general_ci
tr varchar(255) utf8_general_ci
В эти таблицы достаточно активно идёт запись и чтение данных. И вот сегодня утром уже не в первый раз столкнулся с тем, что несколько таблиц выдают, что они crashed и нуждаются в repaired.
Код:
Table 'trans_it' is marked as crashed and should be repaired
Кликаю в phpmyadmin для этой таблицы "Repair table" на что мне выдаёт:
Код:
manager.trans_it repair info Wrong bytesec: 0- 0- 0 at 4837060; Skipped
manager.trans_it repair status OK
Код:
SELECT MAX(`id`),COUNT(`id`) FROM `trans_it`
Выдаёт:
Код:
MAX(`id`) COUNT(`id`)
75940 75926
Сервер Centos 7.9 c 32 GB RAM
Все таблицы в БД только типа MyISAM (таблиц InnoDB нет).
Вот конфиг my.cnf
Код:
[mysqld]
bind-address = 127.0.0.1
log_error = /var/log/mariadb/mysqld.error.log
general_log_file = /var/log/mariadb/general.log
general_log = 0
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow_queries.log
long_query_time = 1
max_connections = 3984
key_buffer_size = 6000M
query_cache_size = 128M
query_cache_limit = 2M
read_buffer_size = 16M
join_buffer_size = 16M
Перед крашем таблиц в логах обнаружил такие записи:
Код:
2021-01-03 10:49:58 4 [Note] Detected table cache mutex contention at instance 1: 70% waits. Additional table cache instance activated. Number of instances after activation: 2.
2021-01-03 10:49:58 5 [Note] Detected table cache mutex contention at instance 2: 36% waits. Additional table cache instance activated. Number of instances after activation: 3.
2021-01-03 10:49:58 7 [Note] Detected table cache mutex contention at instance 2: 43% waits. Additional table cache instance activated. Number of instances after activation: 4.
2021-01-03 10:49:59 9 [ERROR] mariadbd: Table './manager/domains' is marked as crashed and should be repaired
2021-01-03 10:49:59 53 [ERROR] mariadbd: Table './manager/trans_de' is marked as crashed and should be repaired
Собственно, вопрос в том, почему это возникает и как с этим бороться? Может в настройках что-то донастроить нужно?