Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL при импорте не хватает памяти / 7 сообщений из 7, страница 1 из 1
20.09.2016, 17:31
    #39312133
Алекс М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Привет тебе, непобедимый All!

Есть MariaDB:
авторmysql Ver 15.1 Distrib 10.1.12-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
которая крутится на слабеньком виртуальном сервере. Памяти на этом сервере 2 Гб.

Иногда нужно засунуть в эту MariaDB SQL-дамп размером 200-250 Мб.
При попытке сделать это вываливается ошибка:
авторERROR 2013 (HY000) at line 1040: Lost connection to MySQL server during query
MariaDB издыхает. Как выясняется, её прибивает OOM killer, потому что в момент импорта дампа свободная память сжирается до нуля. Происходит это не всегда; иногда дамп всё же проскакивает. Но в большинстве случаев заканчивается именно этой печальной ошибкой.

Можно ли как-то заставить MariaDB кушать постепенно? Или это вообще аномальное поведение и дело тут в чём-то другом?
...
Рейтинг: 0 / 0
20.09.2016, 18:17
    #39312175
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Алекс М.SQL-дамп размером 200-250 МбЭто одна таблица? Может, можно поделить дамп на части? как вариант - в дамп включать только структуру, а данные переносить в виде outfile.

Хотя... знать, что узким местом является объём оперативы, и искать решения за пределами увеличения RAM...
...
Рейтинг: 0 / 0
20.09.2016, 19:01
    #39312217
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Алекс М.её прибивает OOM killer, потому что в момент импорта дампа свободная память сжирается до нуляТочно именно из-за памяти?

Показывайте в спойлере конфиг и результат mysqltuner.pl
...
Рейтинг: 0 / 0
20.09.2016, 21:05
    #39312278
Алекс М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
В дампе целая пачка таблиц. Но он снимается на удалённой машине. Можно, конечно, разбить этот дамп на пачку файлов и потом их тянуть по scp... или делать tar cf / tar xf... не знаю, как-то кривовато выглядит, по-моему :) Да и поможет ли?

Проблема точно с памятью.
авторOut of memory in UB 49984: OOM killed process 3505 (mysqld) score 0 vm:1823436kB, rss:910004kB, swap:0kB
...
Рейтинг: 0 / 0
21.09.2016, 06:50
    #39312354
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Алекс М.Проблема точно с памятью.Ну тогда в конфиге уменьшайте расход памяти.
...
Рейтинг: 0 / 0
08.10.2016, 09:53
    #39323175
Алекс М.
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Вот куски из конфига, имеющие хоть какое-то отношение к памяти и производительности:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
max_connections         = 100
connect_timeout         = 5
wait_timeout            = 600
max_allowed_packet      = 16M
thread_cache_size       = 128
sort_buffer_size        = 4M
bulk_insert_buffer_size = 16M
tmp_table_size          = 32M
max_heap_table_size     = 32M

Таблицы хранятся в MyISAM (х.з. почему). MyISAM в конфиге представлен так:

Код: plaintext
1.
2.
3.
4.
5.
6.
myisam_recover_options = BACKUP
key_buffer_size         = 128M
table_open_cache        = 400
myisam_sort_buffer_size = 512M
concurrent_insert       = 2
read_buffer_size        = 2M
read_rnd_buffer_size    = 1M

На всякий случай InnoDB:

Код: plaintext
1.
2.
3.
4.
5.
innodb_buffer_pool_size = 256M
innodb_log_buffer_size  = 8M
innodb_file_per_table   = 1
innodb_open_files       = 400
innodb_io_capacity      = 400
innodb_flush_method     = O_DIRECT

А также:

Код: plaintext
1.
2.
3.
[mysqldump]
quick
quote-names
max_allowed_packet      = 16M

Сделали так. Дамп выполняем с ключиком --skip-extended-insert, а импорт делаем так:

Код: plaintext
cat dump.sql | mysql --quick --unbuffered --max_allowed_packet=1M database

Валится раз через раз. Иногда отрабатывает нормально, иногда падает по нехватке памяти.
...
Рейтинг: 0 / 0
08.10.2016, 13:44
    #39323207
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MySQL при импорте не хватает памяти
Алекс М.
Код: plaintext
myisam_sort_buffer_size = 512M
Уменьшайте в разы.
Алекс М.
Код: plaintext
innodb_buffer_pool_size = 256M
Если InnoDB не используется, то либо уменьшайте до почти нуля, либо InnoDB выключайте вовсе.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MySQL при импорте не хватает памяти / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]