Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> частичный дамп БД 
:(
    Опции темы
bars80080
Дата 14.12.2010, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



возник вопрос о сливе данных между серверами.

к примеру, есть сайтА, который пользуется некоторой базой. база постепенно растёт и перерастает объём, исчисляемый мегабайтами (возможно даже сотнями).
хочется иметь дамп (копию БД) на сайтеБ, расположенном на другом сервере. причём достаточно актуальную. допустим раз в шесть часов будет происходить с сайтаБ на сайтА и скрипты будут сливать данные. однако, учитывая полный объём базы, не хотелось бы вешать систему перегоном лишних мегабайт, ведь за прошедшие шесть часов база могла прирасти всего на сотню килобайт, а скорее и того меньше.

как сделать подобный частичный слив базы?

пока единственное, что крутится в голове - задать каждой таблице поле с датой последней вставки/обновления и сливать строчки, основываясь на этой колонке.
в связи с этим вопрос: не проставляется ли в таблице уже в каком-нибудь параметре (по дефолту) дата последнего обновления конкретной строки?
PM MAIL WWW   Вверх
skyboy
Дата 14.12.2010, 16:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



то, что ты хочешь сделать - переизобрести репликацию. 
PM MAIL   Вверх
bars80080
Дата 14.12.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



воооот, есть качественная статья по этому поводу?
PM MAIL WWW   Вверх
bars80080
Дата 14.12.2010, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



репликация, судя по этому http://habrahabr.ru/blogs/mysql/56702/ , не совсем то

там под репликацией больше понимается полная синхронизация баз ради распределения нагрузки. плюс надо ещё сервер останавливать. я не думаю, что у меня будет такой глубокий доступ к серверу mysql, чтобы писать в нём всякие команды

с другой стороны мне нужно гораздо проще - дамп на случай повреждения сервера, его блокады и полной потери данных. нужен всего лишь "примерно" актуальный дамп для последующего восстановления. и при этом ни в коем случае нигде на сайтеА или сервереА не должен быть прописан ip-адрес или ещё какие-нибудь данные сервера с сохранённым дампом. плюс, серверов скачивающих себе дамп может быть несколько
PM MAIL WWW   Вверх
bars80080
Дата 11.10.2011, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



в общем, может я чего-то не дочитал, но у меня складывается такая вариация на данную тему

добавляем в таблицах, которые мы хотим дампить дополнительное поле - upd int. в конфиге прописываем список этих таблиц. далее, учитывая, что у меня все запросы INSERT и UPDATE идут через класс работы с БД, легко дописываем обновление поля upd для таблиц, которые его имеют, при каждой вставке или обновлении записи в таблице, записываем туда результат time(). теперь мы всегда имеем дату последней модификации строки.

теперь остаётся реализовать сам процесс копирования. внешний серверБ периодически будет отправлять запрос, вроде 
siteA.ru/party_dump.php?password=qwer&start=1234567890
в ответ серверА будет совершать выборку тех строк, что имеют upd >= start

прежде чем я стал формировать систему в данном виде, есть ли претензии?

плюс, возникла парочка вопросов.

1. стоит ли вешать на поле upd индекс? запрос дампа будет не частый, всего несколько раз в день. 
таблицы разные, есть такие, что пополняются редко и имеют небольшой объём, а есть такие, которые получают по нескольку записей в секунду. количество строк в одной такой таблице уже доросло 500 тыс и далее будет идти на миллионы.

2. в каком виде лучше отдавать данные?
xml даст готовые средства обработки и корректный парсинг, однако, в случае некоторых таблиц будет передаваться большой объём структурной информации. если же выдавать простой текст, с разделителями, то придётся ставить костыль, в виде замены разделителей в тексте. что в редких случаях, но всё же чревато.


PM MAIL WWW   Вверх
MuToGeN
Дата 14.10.2011, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: нет
Всего: 32



Т.к. СУБД не указана, думаю, что это MySQL, она умеет складывать все правки в бинарный лог. Репликации работают именно на этом, некоторые админы ещё используют эту фишку для бекапов. Кто мешает настроить всё и скармливать слейву запрос типа LOAD DATA FROM MASTER; раз в 6 часов по крону?


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
bars80080
Дата 14.10.2011, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 9
Всего: 315



Цитата(MuToGeN @  14.10.2011,  11:14 Найти цитируемый пост)
Кто мешает настроить всё и скармливать слейву запрос типа LOAD DATA FROM MASTER; раз в 6 часов по крону? 

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

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0488 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.