URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 78076
[ Назад ]

Исходное сообщение
"Перенос файлов БД mysql"

Отправлено bda , 28-Дек-07 02:48 
Уважаемые коллеги, большая просьба помочь. Задача: перенести файлы БД mysql 4.3 с одного раздела в другой, т.к. база растет, а текущий раздел ФС оказался недостаточно большим.

Просьба подсказать, правильная ли стратегия.

1. Останов базы
2. Правка конфига, изменение пути на новый.
3. перенос файлов
4. запуск базы.

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


Содержание

Сообщения в этом обсуждении
"Перенос файлов БД mysql"
Отправлено Ночной админ , 28-Дек-07 03:03 
>[оверквотинг удален]
>
>Просьба подсказать, правильная ли стратегия.
>
>1. Останов базы
>2. Правка конфига, изменение пути на новый.
>3. перенос файлов
>4. запуск базы.
>
>Вероятно, этот способ - не правильный, просьба подсказать, как выполнить перенос наиболее
>корректным способом.

А если попробовать сделать дамп базы и потом поменяв настройки сервера из дампа базу восстановить ?


"Перенос файлов БД mysql"
Отправлено bda , 28-Дек-07 03:14 
>[оверквотинг удален]
>>1. Останов базы
>>2. Правка конфига, изменение пути на новый.
>>3. перенос файлов
>>4. запуск базы.
>>
>>Вероятно, этот способ - не правильный, просьба подсказать, как выполнить перенос наиболее
>>корректным способом.
>
>А если попробовать сделать дамп базы и потом поменяв настройки сервера из
>дампа базу восстановить ?

Т.е. это наиболее грациозное решение, через дамп? Может есть какой-либо гайд?

Кстати, как правильно выполнить дамп, чтобы во время его снятия - не помещалось ничего в базы сервера, т.е. не происходило записи в различные базы?


"Перенос файлов БД mysql"
Отправлено Wing , 28-Дек-07 04:16 
>[оверквотинг удален]
>>>корректным способом.
>>
>>А если попробовать сделать дамп базы и потом поменяв настройки сервера из
>>дампа базу восстановить ?
>
>Т.е. это наиболее грациозное решение, через дамп? Может есть какой-либо гайд?
>
>Кстати, как правильно выполнить дамп, чтобы во время его снятия - не
>помещалось ничего в базы сервера, т.е. не происходило записи в различные
>базы?

Если база в MyIsam - должен сработать простой перенос, если innodb - нужно делать дамп..

--
mysqldump --no-autocommit --default-character-set=cp1251 -q -e $DBNAME >  $BACKUPPATH

Таким образом я делаю бекап 11гиговой базы, не останавливая её: mysqldump лочит таблицы на время своей работы.

p.s. Правда, это всё относится к mysql 5.x - но не думаю, что в данной ситуации это играет роль...


"Перенос файлов БД mysql"
Отправлено Wing , 28-Дек-07 04:20 
.

"Перенос файлов БД mysql"
Отправлено bda , 28-Дек-07 07:46 
>[оверквотинг удален]
>нужно делать дамп..
>
>--
>mysqldump --no-autocommit --default-character-set=cp1251 -q -e $DBNAME >  $BACKUPPATH
>
>Таким образом я делаю бекап 11гиговой базы, не останавливая её: mysqldump лочит
>таблицы на время своей работы.
>
>p.s. Правда, это всё относится к mysql 5.x - но не думаю,
>что в данной ситуации это играет роль...

Большое спасибо! Буду сейчас пробовать...


"Перенос файлов БД mysql"
Отправлено deadmoroz2 , 28-Дек-07 09:56 
1. Останавливаем базу
2. Переносим файлы на новой место
3. Делаем символическую ссылку, что бы путь к фалам остался тем же
4. Запускаем базу и радуемся

P.S. Извините, но через дамп делать перенос в пределах одной машины/версии как-то немного глупо что ли, если разве время некуда девать, IMHO.


"Перенос файлов БД mysql"
Отправлено bda , 28-Дек-07 12:34 
>1. Останавливаем базу
>2. Переносим файлы на новой место
>3. Делаем символическую ссылку, что бы путь к фалам остался тем же
>
>4. Запускаем базу и радуемся
>
>P.S. Извините, но через дамп делать перенос в пределах одной машины/версии как-то
>немного глупо что ли, если разве время некуда девать, IMHO.

Ну тогда, все-таки подскажите, как делать правильно - по хрестоматии, так сказать...


"Перенос файлов БД mysql"
Отправлено idle , 28-Дек-07 12:48 
>[оверквотинг удален]
>>2. Переносим файлы на новой место
>>3. Делаем символическую ссылку, что бы путь к фалам остался тем же
>>
>>4. Запускаем базу и радуемся
>>
>>P.S. Извините, но через дамп делать перенос в пределах одной машины/версии как-то
>>немного глупо что ли, если разве время некуда девать, IMHO.
>
>Ну тогда, все-таки подскажите, как делать правильно - по хрестоматии, так сказать...
>

Не множьте сущностей...
Делайте как написали в первом посте.


"Перенос файлов БД mysql"
Отправлено Arifolth , 28-Дек-07 13:04 
>[оверквотинг удален]
>
>Просьба подсказать, правильная ли стратегия.
>
>1. Останов базы
>2. Правка конфига, изменение пути на новый.
>3. перенос файлов
>4. запуск базы.
>
>Вероятно, этот способ - не правильный, просьба подсказать, как выполнить перенос наиболее
>корректным способом.

когда у вас база ещё увеличиться - будете повторять это шаманство?
IMHO Volume Managers (типа lvm/gvinum и т.п.) - единственный правильный способ. туда можно допихивать диски и увеличивать разделы (resize2fs, growfs) до безобразия

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

впоследствии прийдётся только стопить базу допихивать диски расширять партицию и снова запускать базу.

вроде всё

а чтобы дампить инодбшную базу по быстрому используйте
--opt --single-transaction --flush-logs


"Перенос файлов БД mysql"
Отправлено bda , 28-Дек-07 13:45 
>[оверквотинг удален]
>расширить партицию на кот сидит база (может расширить слайс/раздел)
>запустить базу.
>
>впоследствии прийдётся только стопить базу допихивать диски расширять партицию и снова запускать
>базу.
>
>вроде всё
>
>а чтобы дампить инодбшную базу по быстрому используйте
>--opt --single-transaction --flush-logs

Спасибо большое за  развернутый ответ! Единственно, он вызывает у меня массу других вопросов. Если не сложно, подскажите хотя бы на следующий:

1. Есть ли возможность перейти на LVM, при этом нет свободного места, т.е. нет ли какого хитрого способа?


"Перенос файлов БД mysql"
Отправлено Arifolth , 28-Дек-07 14:53 
>[оверквотинг удален]
>>вроде всё
>>
>>а чтобы дампить инодбшную базу по быстрому используйте
>>--opt --single-transaction --flush-logs
>
>Спасибо большое за  развернутый ответ! Единственно, он вызывает у меня массу
>других вопросов. Если не сложно, подскажите хотя бы на следующий:
>
>1. Есть ли возможность перейти на LVM, при этом нет свободного места,
>т.е. нет ли какого хитрого способа?

свободное место всё таки нужно, так как партиции прийдётся переразмечать перед добавлением. правда нужно его ровно столько сколько база занимает (примерно).
почитайте lvm howto там всё это есть в подробностях

грубый пример - сперва берём пустую, скажем /dev/hdb1
база например на /dev/hda3
fdisk'ом ставим тип партиции 8e
создаём physical volume - pvcreate /dev/hdb1
создаём volume group - vgcreate vg00 /dev/hdb1
создаём logical volume - lvcreate --name lv00 --size 1G vg00
затем создать ext3/reiserfs на /dev/vg00/lv00
>затем её замонтировать и скопировать содержимое раздела с базой<

fdisk'ом ставим тип партиции 8e на ту где раньше была база
добавляем vgextend vg00 /dev/hda3
потом экстендим logical volume - lvextend --size +1G /dev/vg00/lv00
а потом ресайзим /dev/vg00/lv00 -resize2fs/resize_reiserfs
всё

уф
вроде фсё
может где то ошибся но в общем примерно так


"Перенос файлов БД mysql"
Отправлено angra , 30-Дек-07 08:48 
Вы не указали основной момент - насколько критичен по времени простой сервера, а также размер и тип баз. Если время простоя равное времени копирования сырых файлов вас устраивает, то делаем следующим образом
1. запрос flush tables with read lock
2. копирование всех файлов относящихся к базам(в общем случае все в /var/lib/mysql)
3. запрос unlock tables
4. запуск второго экземпляра сервера с соответствующими опциями и проверка работоспособности
5. если все в порядке правим конфиг с рестартом основного сервера.

Не надо использовать mysqldump. Это очень медленно и при неверном использовании может привести к искажению информации, также требует уйму дополнительного места.