Резервное копирование базы данных AppEngine (облачное хранилище Google?) - PullRequest
10 голосов
/ 13 октября 2011

У меня есть приложение AppEngine, которое в настоящее время имеет около 15 ГБ данных, и мне кажется нецелесообразным использовать текущие инструменты массового загрузчика AppEngine для резервного копирования наборов данных такого размера.Поэтому я начинаю исследовать другие способы резервного копирования, и мне было бы интересно услышать о практических решениях, которые люди могли бы использовать для резервного копирования своих данных AppEngine.

Помимо этого, я начинаю думать, чтоGoogle Cloud Storage может быть хорошим выбором.Мне любопытно узнать, есть ли у кого-то опыт использования облачного хранилища Google в качестве резервной копии своих данных AppEngine, каков их опыт, и есть ли какие-либо указатели или вещи, о которых я должен знать, прежде чем идти по этому пути.

Независимо от того, какое решение я выбрал, я бы хотел, чтобы решение для резервного копирования отвечало следующим требованиям:

1) Достаточно быстрое резервное копирование и достаточно быстрое восстановление (т. Е. ЕслиСерьезная ошибка / удаление данных / злонамеренная атака попадает на мой веб-сайт, я не хочу останавливать его на несколько дней при восстановлении базы данных - я имею в виду быстрые часы, а не дни).

2) Отдельное местоположение и учетная запись из моих данных AppEngine - т.е.Я не хочу, чтобы кто-то, имеющий доступ администратора к моим данным AppEngine, обязательно имел доступ на запись / удаление к хранилищу резервных данных - например, если моя учетная запись AppEngine была взломана хакером или недовольный сотрудник решил удалить все мои данные.данных, я хотел бы иметь резервные копии, которые отделены от учетных записей администраторов AppEngine.

Подводя итог, учитывая, что получение данных из облака кажется медленным / болезненным, я хотел бы создать облачную резервную копиюрешение, которое эмулирует роль, которую резервные копии на магнитной ленте выполняли в прошлом - если бы у меня была резервная лента, никто не мог бы изменить содержимое этой ленты - но поскольку я не могу получить ленту, я могу сохранить защищенную копиюиз моих данных где-то, что только у меня есть доступ?

С уважением Александр

Ответы [ 2 ]

4 голосов
/ 13 октября 2011

Здесь есть несколько вариантов, но ни один из них (в настоящее время) не совсем то, что вы ищете.

В последней версии SDK версии 1.5.5 мы теперь поддерживаем взаимодействие с Google Storage напрямую - вы можете увидеть, как, здесь . При этом вы можете записывать данные в Google Storage, но, насколько мне известно, нет способа написать файл, который приложение затем не сможет удалить.

Для фактического сбора данных вы можете использовать App Engine mapreduce API . Он имеет встроенную поддержку для записи в Blobstore App Engine; в настоящее время для записи в Google Storage вам потребуется реализовать собственный модуль записи вывода.

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

Одна вещь, которую вы обязательно должны сделать, независимо от того, включить двухфакторную аутентификацию для вашей учетной записи Google; из-за этого кому-либо становится труднее получить контроль над вашей учетной записью, даже если он узнает ваш пароль.

1 голос
/ 13 октября 2011

Навальный загрузчик, вероятно, является одним из самых быстрых способов резервного копирования / восстановления ваших данных.

Проблема с AppEngine заключается в том, что вы должны делать все через представления. Таким образом, у вас есть ограничения, которые есть у представлений ... в результате быстрое резервное копирование / восстановление все равно должно использовать тот же API, что и остальная часть вашего приложения. Так что оптовый загрузчик (возможно, с несколькими модификациями), безусловно, ваш лучший вариант здесь.

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

...