Резервное копирование базы данных AppEngine (хранилище облачных хранилищ Google?)

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

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

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

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

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

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

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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