Восстановление базы данных ERROR 2013 (HY000) на строке 68497: Lost connection to MySQL server during query mariadb

У меня есть база данных 150G - 300 Mio записей и я хочу восстановить ее (gz SQL Dump) на MariaDB 10.3, но восстановление не удалось, потому что sql сервер ушел. Я пытался увеличить max_allowed_packet до максимума в 1G, это занимает на 20G больше, чем раньше, но каждый раз получал одну и ту же ошибку.

error.log

--Thread 140190396552960 has waited at btr0cur.cc line 1357 for 241.00 seconds the semaphore: SX-lock on RW-latch at 0x7f65a0265500 создан в файле dict0dict.cc line 2130 писатель (id потока 140075647571712) зарезервировал его в режиме SX количество читателей 0, флаг ожидания 1, слово_блокировки: 10000000 Последний раз запись была заблокирована в файле dict0stats.cc строка 1969 2020-11-09 23:12:33 0 [Note] InnoDB: Ожидание семафора: --Thread 140190396552960 ждал семафор в btr0cur.cc line 1357 в течение 241.00 секунд: SX-lock на RW-защелке по адресу 0x7f65a0265500 создан в файле dict0dict.cc строка 2130 писатель (id потока 140075647571712) зарезервировал его в режиме SX количество читателей 0, флаг ожидания 1, слово_блокировки: 10000000 Последний раз запись была заблокирована в файле dict0stats.cc строка 1969 InnoDB: ###### Запуск InnoDB Monitor на 30 секунд для печати диагностической информации: InnoDB: Pending reads 0, writes

Есть ли другая переменная, которую я могу настроить.

max_connections     = 2000
connect_timeout     = 15
wait_timeout        = 1200
max_allowed_packet  = 1G
thread_cache_size       = 128
sort_buffer_size    = 9M
bulk_insert_buffer_size = 32M
tmp_table_size      = 2G
max_heap_table_size = 2G

myisam_recover_options = BACKUP
key_buffer_size     = 128M
open-files-limit    = 5000
table_open_cache    = 4000
myisam_sort_buffer_size = 512M
concurrent_insert   = 2
read_buffer_size    = 2M
read_rnd_buffer_size    = 1M
net_read_timeout    = 15600 
net_write_timeout   = 15600

default_storage_engine  = InnoDB
innodb_buffer_pool_size = 100G
innodb_log_buffer_size  = 1G
innodb_file_per_table   = 1
innodb_open_files   = 4000
innodb_io_capacity  = 200000
innodb_flush_method = O_DIRECT
0
задан 10 November 2020 в 10:51
2 ответа

Вы пытались установить эти переменные:

innodb_stats_presistent='OFF'
innodb_lock_mode=2 

обеспечение в ваших таблицах нет значений автоинкремента, и посмотрите, исчезла ли проблема, приведенный выше журнал ошибок, похоже, является проблемой для SX-lock. В основном InnoDB внутренне использует реализацию rw-lock для обеспечения согласованности внутренних ресурсов и rw -lock имеет 2 типа S-lock (общий) и X-lock (исключенный). Таким образом, согласно вашему журналу ошибок, мы видим SX-lock в семафоре, поэтому, если предположить, что это может быть конфликтом при записи в таблицу Innodb. Попробуйте и посмотрите, поможет ли это.

0
ответ дан 10 February 2021 в 23:23

Попробуйте уменьшить переменные буферного пула Innodb до тех пор, пока данные не будут загружены, например, поскольку у вас выделено 100G, поэтому уменьшите его до 5G размера innodb-buffer-pool-size , завершите загрузку данных, а затем вернитесь к тому же значению, которое было 100G, посмотрим, поможет ли это.

1
ответ дан 12 February 2021 в 05:03

Теги

Похожие вопросы