powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите по способам бекапирования MariaDB5.5
29 сообщений из 29, показаны все 2 страниц
Подскажите по способам бекапирования MariaDB5.5
    #38858469
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте уважаемые!

Имеем базы на mariadb5.5 стоящих на Win7Pro :)

Подскажите как мне его бэкапировать без остановки?

Почитал документацию, можно делать дамп всех баз в плоский файл через
>mysqldump.exe -uroot -proot --all_databases >allbase.bkp

Вроде делает. Вопрос: когда он создает дамп и параллельно пользователи могут вносить изменения в базу, то дамп получается согласованным и непротиворечивым?

Если нет, то как нужно бекапить?

PS: Хотелось бы так (навеяло ораклом :)):
-Запускаем некую команду заморозки файлов (т.е. изменения начинают попадать в некий лог)
-копируем файлы базы
-размораживаем файлы
-отключаем логирование
-добавляем файл лога к бэкапу

Прошу прощения, но опыта админской работы с MySQL маловато...
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38860494
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Порылся в инeте. База у меня стоит с движком myisam, т.е. транзакции не поддерживает и блокировки идут на уровне таблицы.

При бэкапировании базы через mysqldump утилита последовательно проходит по таблицам, блокируя их, сбрасывает в дамп данные и структуру таблиц базы и разблокирует их. И так для каждой таблицы. Т.е. риск что данные в разных таблицах базы будут несогласованными есть.
Я правильно понял, что mysqldump перед бэкапом базы ее не блокироет на изменение целиком, а блокирует последовательно по мере бэкапирования таблиц?

Есть ли команда блокировки базы целиком на запись перед бекапированием и потом разблокировать?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38860549
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smm,

http://dev.mysql.com/doc/refman/5.1/en/backup-methods.html авторFor storage engines that represent each table using its own files, tables can be backed up by copying those files. For example, MyISAM tables are stored as files, so it is easy to do a backup by copying files (*.frm, *.MYD, and *.MYI files). To get a consistent backup, stop the server or lock and flush the relevant tables:
Код: sql
1.
2.
LOCK TABLES tbl_list READ;
FLUSH TABLES tbl_list;



You need only a read lock; this enables other clients to continue to query the tables while you are making a copy of the files in the database directory. The FLUSH TABLES statement is needed to ensure that the all active index pages are written to disk before you start the backup. See Section 13.3.5, “LOCK TABLES and UNLOCK TABLES Syntax”, and Section 13.7.6.3, “FLUSH Syntax”.

You can also create a binary backup simply by copying all table files, as long as the server isn't updating anything. The mysqlhotcopy script uses this method. (But note that table file copying methods do not work if your database contains InnoDB tables. mysqlhotcopy does not work for InnoDB tables because InnoDB does not necessarily store table contents in database directories. Also, even if the server is not actively updating data, InnoDB may still have modified data cached in memory and not flushed to disk.)
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38860804
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про LOCK TABLE видел, только там нужно все таблицы базы перечислять, а хотелось бы командой сразу все таблицы базы в режим READ LOCK перевести.

Есть такие способы?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38860859
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ли сделать бекап таким образом

1) запускаем батник который подключается к базе и выполняет команду
Код: sql
1.
2.
>FLUSH TABLES WITH READ LOCK;
>exit;



2) командой COPY windows копируем файлы базы в другое место (копируем в т.ч. и системную базу mysql вместе с настроечным файлом my.ini)

3) запускаем батник который подключается к базе и выполняет команду
Код: sql
1.
2.
>UNLOCK TABLES;
>exit;




Типа: "Все правильно сделал"?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38860879
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде еще надо переменную установить...

1) запускаем батник который подключается к базе и выполняет команду
Код: sql
1.
2.
3.
>FLUSH TABLES WITH READ LOCK;
>SET GLOBAL read_only = ON;
>exit;




2) командой COPY windows копируем файлы базы в другое место (копируем в т.ч. и системную базу mysql вместе с настроечным файлом my.ini)

3) запускаем батник который подключается к базе и выполняет команду
Код: sql
1.
2.
3.
>SET GLOBAL read_only = OFF;
>UNLOCK TABLES;
>exit;



Типа: "Все правильно сделал"?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861534
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmЯ правильно понял, что mysqldump перед бэкапом базы ее не блокироет на изменение целиком, а блокирует последовательно по мере бэкапирования таблиц?

А ничего там в инете хорошего не пишутъ с момента появления поисковых систем. Мануал на mysqldump почитали бы :

Есть ключ --lock-tables, -l который и делает блокировки.
Блокирует последовательно, но не занимается в это время выгрузкой данных. Вам будет достаточно.

Так же есть ключ --lock-all-tables - точно то, что вы хотели, но глобальная блокировка не всегда хороша.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861623
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за пояснение по mysqldump

Я вот думаю использовать все таки не mysqldump, а копировать все файлы баз (пользовательских и системных), предварительно запретив вносить изменения в базу через глобальную переменную.
Глобальную переменную вынужден использовать потому, что после FLUSH делается выход из сессии (батник закрывается) и чтобы запрет на изменения остался.
Далее делаем твердые копии файлов базы и запускаем батник, который открывает новую сессию в которой возвращает глобальную переменную обратно.

Кстати вопрос:
Я так понял, что в последнем батнике (который будет сбрасывать запрет на изменения) запускать команду
UNLOCL TABLES
после сброса глобальной переменной
READ_ONLY=OFF
уже не нужно?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861669
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmЯ вот думаю использовать все таки не mysqldump, а копировать все файлы баз (пользовательских и системных), предварительно запретив вносить изменения в базу через глобальную переменную.Сервер останавливать придётся, а Вы хотите бекапить без остановки сервера.
Можете попробовать использовать mysqlhotcopy, но её собираются выкинуть в обозримом будущем, насколько понимаю.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861699
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmГлобальную переменную вынужден использовать потому, что после FLUSH делается выход из сессии (батник закрывается) и чтобы запрет на изменения остался.

значит вам нужно сделать "батник", который удерживает соединение.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861872
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Win поэтому mysqlhotcopy использовать нет возможности.

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

Или я что-то не понимаю?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38861951
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smm, вроде в windows не только педально-шаговые батники может запускать.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862005
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное да, я просто не в курсе... Подскажите?


И подведя итог, вариант:

1) запускаем первый батник который подключается к базе и выполняет команду
Код: sql
1.
2.
3.
>FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
>exit;



2) командой COPY windows копируем файлы базы в другое место (копируем в т.ч. и системную базу mysql вместе с настроечным файлом my.ini)

3) запускаем второй батник который подключается к базе и выполняет команду
Код: sql
1.
2.
>SET GLOBAL read_only = OFF;
>exit;



Даст нормальный полный бэкап без остановки сервера?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862059
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smm, вообще, я имел ввиду Windows PowerShell. Или любое известное вам средство автоматизации. Зачем себя ограничивать ?
Но для начала можно попробовать из и батника запускать параллельный блокирующий процесс с помощью start.exe, а с помощью taskkill останавливать его.

И больших проблем в использовании mysqldump я не вижу. От прямого копирования выиграете немного, а сами еще понапишите что-нибудь ненадежное.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862854
Фотография Yed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmУ меня Win поэтому mysqlhotcopy использовать нет возможности.
актуально? под Win писал свою утилиту mysqlhotcopy
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862901
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to netwind
Про PowerShell слышал, но еще не пользовался, как-то обычных батников всегда хватало :))
Мне кажется параллельный батник не нужен, если сервер переводится в режим READ_ONLY, ведь это динамическая управляющая переменная сервера.

to Yed
Интересно было бы взглянуть на этот скрипт mysqlhotcopy под Win. Давно уже и в каком режиме пользуетесь?


Хотел бы еще раз повторить вопрос:

Если создали сессию с сервером MySQL и в этой сессии установили глобальную переменную READ_ONLY=ON и закрыли сессию, то сервер останется в режиме read_only и ничего в файлы баз данных и логи писать будет и файлы базы можно безопасно копировать?

Кто-то делал так?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862908
Фотография Yed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmto Yed
Интересно было бы взглянуть на этот скрипт mysqlhotcopy под Win. Давно уже и в каком режиме пользуетесь?
Мне было проще программу на c++ написать, чем скрипт. Так и сделал :)
Работает так: копирует потаблично MyISAM базу. В копию попадают таблицы из вывода "SHOW FULL TABLES FROM <base>", которые имеют тип "BASE TABLE".
Копируются файлы frm, myd, myi с помощью вызовов "copy". Перед копией блокируется конкретная таблицы "LOCK TABLES <table> WRITE".
Делал для своих нужд, работает с марта 2014 года - запускается по расписанию на сервере каждое воскресенье.

Почему потаблично, а не сразу всю папку? У меня есть большие таблицы, которые копируются достаточно долго, поэтому чтобы не блокировать сразу все таблицы базы сделал так.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38862994
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно. Я тоже думал, что-то мутить с последовательной блокировкой таблиц, потом подумал, что можно использовать управляющую переменную Read_only. Вот пока пытаюсь понять работоспособен и безопасен данный вариант или нет.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863176
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YedКопируются файлы frm, myd, myi с помощью вызовов "copy". Перед копией блокируется конкретная таблицы "LOCK TABLES <table> WRITE".
Делал для своих нужд, работает с марта 2014 года - запускается по расписанию на сервере каждое воскресенье.

не уверен что lock table достаточно для того чтобы все данные вытеснились на диск. потенциально это опасный метод.
вот flush tables with read lock, как это делают утилиты, точно работает.


авторЕсли создали сессию с сервером MySQL и в этой сессии установили глобальную переменную READ_ONLY=ON и закрыли сессию, то сервер останется в режиме read_only и ничего в файлы баз данных и логи писать будет и файлы базы можно безопасно копировать?
он будет ошибки выдавать на обычные запросы и приложению это не понравится.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863189
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про выдачу ошибок при бэкапировании это понятно, но на данный момент это не критично - ночью с базой никто не работает.

А какие еще способы бэкапирования, чтобы приложение могло работать без ошибок?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863200
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smm, я не пойму что вы из мухи слона делаете ? есть mysqldump - разберитесь.

По законам жанра в windows полагается конечно украсть цветастую программку, но внезапно она бесплатна. Вот почитайте как этот процесс предлагают делать devart https://www.devart.com/ru/dbforge/mysql/studio/mysql-backup.html
По мне так совершенно бесполезная фича, но на нее почему-то есть спрос.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863243
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да никто слона не раздувает, вы о чем?

есть утилита mysqldump попробовал ее использовать. Делает sql-ый дамп базы с блокировкой таблиц. Для восстановления базы нужно данные из файла бэкапа заливать в восстанавливаемую базу.

Мне показалось это сложновато по сравнению с простым копированием файлов базы. Опять же восстанавливать просто -скопировал файлы в папку базы и запустил сервис mysql и все работает, а при mysqldump нужно ждать пока зальет, а это дольше чем просто скопировать файл.

и вот об этом варианте я на форуме и написал с вопросом -нормальный ли вариант при условии, что работоспособность приложения на время бекапирования и восстановления не критично.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863259
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smmМне показалось это сложновато по сравнению с простым копированием файлов базы.
ну вы же видите сколько всего вам нужно учесть и написать. это намного более простой и надежный способ чем вам кажется.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863339
Фотография Yed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindне уверен что lock table достаточно для того чтобы все данные вытеснились на диск. потенциально это опасный метод.
вот flush tables with read lock, как это делают утилиты, точно работает.
Конечно, я "флюшу" таблицы, просто забыл написть!
Но, команда выше не поддерживается в MySQL 5.0 так что делаю последовательно - lock, flush для совместимости.

netwindsmm, я не пойму что вы из мухи слона делаете ? есть mysqldump - разберитесь.
Например, в моем случае mysqldump выполняется часами. А файлы таблицы копируются за 10 мин. mysqlhotcopy имеет право на жизнь и развитие :)
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863347
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yedmysqlhotcopy имеет право на жизньДо тех пор, пока не прижмет на InnoDB перейти...
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863364
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yednetwindне уверен что lock table достаточно для того чтобы все данные вытеснились на диск. потенциально это опасный метод.
вот flush tables with read lock, как это делают утилиты, точно работает.
Конечно, я "флюшу" таблицы, просто забыл написть!
Но, команда выше не поддерживается в MySQL 5.0 так что делаю последовательно - lock, flush для совместимости.

Но ведь нет такой команды flush table TTT with read lock; Только глобально - flush table s with read lock.
Вы делаете flush table и тут же запускаете вторую команду.
Значит у вас ненадежный способ, который в ваших условиях пока еще не давал сбоев.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863393
Фотография Yed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindНо ведь нет такой команды flush table TTT with read lock; Только глобально - flush table s with read lock.
Вы делаете flush table и тут же запускаете вторую команду.
Значит у вас ненадежный способ, который в ваших условиях пока еще не давал сбоев.
Я делаю так:
LOCK TABLES tbl_name
FLUSH TABLES tbl_name
copy...
UNLOCK TABLES

разве не верно?
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863404
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yed, А, понятно. Вроде должно работать.
...
Рейтинг: 0 / 0
Подскажите по способам бекапирования MariaDB5.5
    #38863405
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя, конечно, из-за раздельного копирования может нарушиться связность данных в таблицах, но вас это не беспокоит, судя по описанию.
...
Рейтинг: 0 / 0
29 сообщений из 29, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подскажите по способам бекапирования MariaDB5.5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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