LINUX.ORG.RU
ФорумAdmin

mysql бекап и восстановление большой(150гб) базы.

 , ,


4

3

Добрый день. имелась связка slave-master, у мастер накрылся медным тазом рейд коннтролер.
в данный момент слейв работает за обе железки. нагрузка довольно велика.
суммарный размер базы порядка 150гб. все таблици в innodb.
чтобы её сдампить через mysqldump нужно порядка 1часа.
чтобы её залить на новый сервер нужно порядка 2 дней.
а развернуть реплику нужно к концу завтрашнего дня.
даунтайм не должен превышать 30 минут и то в ночное время.

может кто подскажет, как это лучше реализовать. как лучше сделать дампить и залить базу на новый мастер.


может есть сторонний софт для таких целей, а то время разворачивания дампа *.sql через чур долгое.

★★

Последнее исправление: kam (всего исправлений: 1)

может есть сторонний софт для таких целей

Есть. Сам не пользовался, но в памяти всплывает что-то вроде percona xtra backup. Но кажется оно ускоряет только дамп. Впрочем не знаю.

Ещё есть хардкорный вариант — скопировать файлы баз.

Для ускорения заливки дампа можно временно отключить индексы, что-бы индекс не пересчитывался при каждом инсерте. Впрочем возможно сейчас это уже делается автоматически.

MrClon ★★★★★
()

Терпеть незаметно

А сделать нынешний slave мастером и реплицировать (условно) неделю в фоновом режиме нельзя?

Camel ★★★★★
()

Банально: если запись не слишком интенсивна, то делаешь снапшот раздела, копируешь раздел, убираешь снапшот. mysqldump не нужен, даунтайм тоже (хотя если записи много — просядет).

чтобы её залить на новый сервер нужно порядка 2 дней.

Звучит бредово.

x3al ★★★★★
()
Последнее исправление: x3al (всего исправлений: 1)

Для начала следует выбросить мускуль и поставить марию на принимающей стороне.
Ну и вцелом пора уже переходить на нормальные облачные виртуалки, чтобы можно было на эти полчаса арендовать сколько надо ядер и iops, а не страдать от ограничения ресурсов.

Goury ★★★★★
()
Ответ на: Терпеть незаметно от Camel

как вариант, но если большие нагрузки, то лучше бинарно скопировать мускуль Xtrabuckup-ом и потом уже реплицировать.

ipeacocks ★★★★★
()

Сбэкапить базу, залить на мастер, сделать его слейвом, запустить репликацию, как завершится, то поменять мастер и слейв местами. А вообще, при таких условиях, может, надо задуматься о мастер-мастер?

turtle_bazon ★★★★★
()
Ответ на: комментарий от Goury

линк между серверам 1гбит
проц
[code]
# cat /proc/cpuinfo |grep name
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz
[/code]
оперативы 32.
две такие железки, одна под мастер вторая под слейв.
ssd 300x2 в рейд1 adaptec

kam ★★
() автор топика
Ответ на: комментарий от turtle_bazon

мастер-мастер - давно уже думаю, но тут он особо не нужен. сейчас главный вопрос - как быстро развернуть бекап на новом сервере и синхронизировать(запустить репликацию) до завтрашнего вечера.

kam ★★
() автор топика
Ответ на: комментарий от kam

Быстро развернуть бекап - это слейв, который сейчас на себя нагрузку принял, в ночное время отдайунтаймить и /var/lib/mysql или где там у тебя скинуть в tar файл. Потом запустить мускул, файлы по сети передать на починенный мастер. Мастер потом должен реплицировать то, что на слейв шло, т.е. слейв тоже должен быть настроен как мастер. А мастер как слейв. После того, как затянет всё, что с момента бекапа было изменено, запросы перенаправить на мастер, слейв сделать опять слейвом. Хотя, бинари логи можно и оставить, чтобы в следующий раз телодвижений было меньше. Только так видится.

turtle_bazon ★★★★★
()
Ответ на: комментарий от kam

ssd 300x2 в рейд1 adaptec

Я на linux серверах давно перешёл на софтварный рейд. Не без своих приколов, но не боится умиранция контроллера рейда.

turtle_bazon ★★★★★
()
Ответ на: комментарий от kam

Да у тебя вообще отличные условия. Тот tar файл менее чем за час зальётся на другой сервак.

turtle_bazon ★★★★★
()
Ответ на: комментарий от kam

мастер-мастер - давно уже думаю

Ну, чтобы было быстро, они должны будут быть в одной сети. И также их нужно не менее 3-х, чтобы мозг не раздвоился. :) Есть и и свои ограничения, конечно.

turtle_bazon ★★★★★
()
Ответ на: комментарий от turtle_bazon

вот я сейчас его и думаю поглядеть и потренироватся на тестовом стенде.

и да, мастер-слейв находятся в одной сети(192.168.х.х), в соседних стояках, пинг меньше 1мс.
вот наверно ночью буду снимать дамп перконой и tar`ом.

kam ★★
() автор топика
Ответ на: комментарий от hidden_4003

ты процесс импорта базы mysql -uxxx -pxxx < dump.sql возьми в расчет. перекинуть то не проблема. а вот импортировтаь быстро - это попа.

kam ★★
() автор топика
Ответ на: комментарий от kam

Так не надо импортировать. Просто файлы положи и всё ок будет. Правда, там будет то же, что и на том, некоторые настройки нужно будет перебить.

turtle_bazon ★★★★★
()
Ответ на: комментарий от kam

Зачем импортировать если

все таблици в innodb

достаточно сделать снапшот и скопировать файлы

hidden_4003
()
Ответ на: комментарий от kam

Значит хреновый адаптек или хреновые ssd.
По гигабитке за полчаса максимум должен дамп слиться, раздампливаться на такой жэелезке он должен за пару часов максимум.

Goury ★★★★★
()
Ответ на: комментарий от Goury

Значит хреновый адаптек или хреновые ssd.

Написано же, что сгорел контроллер. То есть хреновый адаптек. Но и вообще, аппаратные контроллеры - буэээ... Хотя, иногда, в них есть смысл.

turtle_bazon ★★★★★
()

mysql размер базы порядка 150гб

Ни хрена себе. Mysql для таких БД не лучшее решение.

King_Carlo ★★★★★
()

все ответы кроме xtrabackup неверные

anonymous
()
Ответ на: комментарий от x3al

Сколько ошибок в слове postgresql.

У него этот процесс быстрее ?

AS ★★★★★
()
Ответ на: комментарий от Alternating_Current

Ну так у тебя и ядер вдвое меньше и эсэсди вдвое меньше.
И база, возможно, не лучшим образом оптимизирована для разворотов.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)

Тупо скопировать /var/lib/mysql с одного сервера на другой уже предлагали?

generator ★★★
()
Ответ на: комментарий от x3al

то делаешь снапшот раздела, копируешь раздел, убираешь снапшот

Не лучшее решение делать снапшот lvm, если ты о нём (а автор даже не сказал, что у него там LVM есть), на единственном оставшемся в живых сервере, снепшоты lvm умеют очень хорошо ложить I/O на сервере полностью до ребута.
Варианта тут только 2:
1. Копия /var/lib/mysql (предварительно надо не забыть запомнить позицию в бинлоге), как раз за полчаса скопируется, и будет получасовой даунтайм.
2. innobackupex. Даунтайма не будет, одни профиты. Единственное что вроде бы для этого нужен патченный перконой mysql, без него может не взлететь.

Prius
()
Последнее исправление: Prius (всего исправлений: 1)
Ответ на: комментарий от Prius

Эм... А зачем позицию запоминать?

Мастер останавливается, копия переливается на слэйв, потом - поднимаются оба сервера (если там кластер на pacemaker'е - ресурс запускается, и пофиг кто из них станет мастером а кто слэйвом - копии идентичны).

Давеча пришлось такое делать на 120ГБ БД, на которой произошел сплит брэйн в процессе апдейта (и некорректной остановки) pacemaker'а.

NiTr0 ★★★★★
()
Последнее исправление: NiTr0 (всего исправлений: 1)

xtrabackup и никаких даунтаймов. тыщу раз так делал.

tazhate ★★★★★
()
Ответ на: комментарий от NiTr0

Эм... А зачем позицию запоминать?

Я рассматриваю такой вариант развития событий (как бы делал я, по крайней мере):
1. Мастер переводится в RO (запоминается позиция в бинлоге), и останавливается.
2. Делается локально копия /var/lib/mysql (чтоб быстрее).
3. Мастер снова запускается.
4. На вторую машину переливается сделанная копия /var/lib/mysql.
5. На второй машине запускается mysql (с параметром read-only) и делается слейвом на основе позиции из п.1.
6. Слейв догоняется, и после этого мастер переключается на этот слейв.
Такой подход минимизирует даунтайм и позволит избежать сплит-брейнов, когда у тебя поднимется сразу 2 мастера и всё сойдет с ума потенциально.

Prius
()
Последнее исправление: Prius (всего исправлений: 1)
Ответ на: комментарий от NiTr0

что ты имеешь в виду? Вдруг там у ОПа стоит haproxy, с round-robin балансировкой на мастеры, он же этого не уточнял, так что спокойно могут запросы политься в 2 мастера одновременно. В моей схеме сплитбрейна не случится 100% да ещё и даунтайм минимален (для способа без xtrabackup). А у тебя после поднятия второго мастера случится непонятно что, да ещё и часть запросов потеряется, если ты старый мастер предлагаешь просто прибить.

Prius
()
Ответ на: комментарий от Prius

Какой раунд-робин на мастеры, вы о чем? У ТСа стандартный мастер-слэйв. С каким-то CRM или его подобием для переключения мастер-слэйв.

NiTr0 ★★★★★
()
Ответ на: комментарий от turtle_bazon

аппаратные контроллеры хорошая вещь, но когда они стоят 600-3000$, а когда покупают контроллер за 100 баксов естественно всё дохнет.

erzent ☆☆
()
Ответ на: комментарий от turtle_bazon

те что стоят от 2000, тебе о своей смерти скажут заранее,а вот за 100 баксов сначала пару раз убьют рейды, а уже потом здохнут.

erzent ☆☆
()
Ответ на: комментарий от erzent

Ну тогда ок. Но всё равно, как я и писал, использование аппаратных рейдов не всегда оправдано. И если оправдано их использование, то тогда брать надо тот, который от 2000 для снижения рисков.

turtle_bazon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.