Форум OlegON > Компьютеры и Программное обеспечение > Операционные системы и программное обеспечение > MySQL & MariaDB

Как сделать бекап с минимальными блокировками? : MySQL & MariaDB

28.03.2024 14:26


26.11.2020 17:20
OlegON
 
Дано - база olegon.ru, которая вся целиком занимает 16Гб
Бекаплю сейчас
Код:
mariabackup --backup -uroot -pПАРОЛЬ --use-memory=4G --protocol=socket -S /var/mysql.sock --target-dir=/backup/dumps/$DAT/db
что приводит к блокировке базы на две минуты... За эти две минуты, на которые выставляется блокировка по базе, скапливается куча подключений, которые в итоге устраивают почти DDoS...
Есть идеи, как это все бекапить с минимальными блокировками? Основной движок Aria, InnoDB вообще почти нет...
28.11.2020 14:19
OlegON
 
в общем, на моей инсталляции (SSD/8Gb) ключ --rsync замедлил бекап раза в два, после чего база вообще грохнулась и пришлось перезапускать сервис...
--use-memory=4G никакой значимой разницы не дает... в прочем, у меня pagecache те же 4Гб
--parallel=4 никакой значимой разницы не дает
--lock-ddl-per-table от ошибок ERROR 1040 (HY000): Too many connections не спасает :(
28.11.2020 14:53
student
 
Цитата:
OlegON как это все бекапить с минимальными блокировками
а mariabackup обязательно ? Percona XtraBackup вроде позволяет делать архивы на лету без блокировок
28.11.2020 15:04
OlegON
 
не обязательно, просто суть разницы никакой... они обе без блокировок делают InnoDB... а у меня везде Aria... Она на порядок быстрее, но, видимо, с нее придется слезть... :( Я пока решение для бекапа никак найти не могу...
28.11.2020 15:16
student
 
Цитата:
OlegON Я пока решение для бекапа никак найти не мог
а чего нибудь типа зеркала в мс скуле не вариант ? или доп ресурс жалко ?
28.11.2020 15:20
OlegON
 
Цитата:
student а чего нибудь типа зеркала в мс скуле не вариант ? или доп ресурс жалко ?
так у меня сервер-то один, зато баз несколько... были мысли себе на десктоп поднять реплику, но как-то это перебор уже :)
28.11.2020 15:25
student
 
Цитата:
OlegON сервер-то один, зато баз несколько
сделай в лоб :) создай копии баз на сервере и туда запросами, потом сами базы в отключку и зипуй на внешний носитель
28.11.2020 15:37
OlegON
 
Вот как раз предложенный тобой вариант можно сделать без промежуточных баз, т.е. запросы дампить в текст без блокировок таблиц (--lock-tables=false). Я уже как-то спрашивал, насколько это чревато, ответ не нашел... Решил тогда пока сделать так:

Код:
mysqldump -d -S /var/lib/mysql/mysql.sock --protocol=socket -uЮЗЕР -pПароль --quick --lock-tables=false --max-allowed-packet=2G forum | zstd -1 >/backup/dumps/$DAT/forum
mysqldump -S /var/lib/mysql/mysql.sock --protocol=socket -uЮЗЕР -pПароль --quick --lock-tables=false --max-allowed-packet=2G forum | zstd -1 >/backup/dumps/$DAT/forum
с zstd быстрее работает, поскольку копирование с SSD и запись на него же не справлялось с таким потоком...
28.11.2020 16:00
student
 
Цитата:
OlegON без промежуточных баз
мне кажется с ними проще т.к. при восстановлении при необходимости можно не весь дамп выкачивать а только чего не хватает и при этом не понадобится стопить текущее :)
28.11.2020 16:52
OlegON
 
так у меня как раз раздельный по базам бекап... я, видимо, не улавливаю совет... сервер один, беру базу, копирую ее запросами рядом, так? просто основное, что проблема - согласованность разных таблиц без блокировок...
Часовой пояс GMT +3, время: 14:26.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.