Крашатся таблицы в базе данных

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Есть база данных Mariadb 10.5.8, в ней несколько однотипных таблиц MyISAM такого вида:

Код:
    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
И таблица вроде начинает работать, но затем ситуация может повториться снова. Ещё заметил, что после восстановления MAX(`id`) и COUNT(`id`) стали различаться.

Код:
    SELECT MAX(`id`),COUNT(`id`) FROM `trans_it`

Выдаёт:
Код:
    MAX(`id`)      COUNT(`id`)
        75940            75926
Не очень давно обновлял Mariadb с 5.5.68 до 10.5.8 (Обновлял через mysqldump, а затем импортировал новый дамп в свежеустановленную БД).
Сервер 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
И крашится таблицы начинают по моим ощущениям, когда возрастает нагрузка на БД.
Собственно, вопрос в том, почему это возникает и как с этим бороться? Может в настройках что-то донастроить нужно?
 
У меня было подобное несколько лет назад, таблицы рушились даже без особой нагрузки, тоже MyISAM ... крутил-вертел конфиги в результате ни к чему так и не пришел ... через некоторое время перешел на innodb и проблема как-то сама исчезла, причем настройки innodb дефолтные, вообще там ничего не менял
 
Назад
Сверху