[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Master-slave репликация для SQLite - теоретический вопрос.



Hello!

On Thursday 17 December 2009 00:15:38 Nicholas wrote:
> Можно ли сделать реплику в два этапа:
> при работающей базе сделать копию ее файла - пусть это займет время и 
> результат будет гарантированно "битым".
> вторым этапом база переводится в режим ридонли, на короткое время, и 
> копия синхронизируется с оригиналом с помошью rsync.
> 
> В этом случае приостановка базы будет затраченна только на синхронизацию 
> новых данных (и организацию целостности), при этом метод будет 
> универсальным - в ридонли наверно можно перевести любую базу, не сильно 
> погружаясь в ньюансы.

Как уже ответил Артем, в базе выполняется множество служебных процессов,
например, сбор и обработка статистики. Кроме того, происходит 
инкрементальная сборка мусора, сброс журналов на диск... Для 
принудительного сохранения журналов на диск существуют способы, но
при этом для их дальнейшего применения вам все равно понадобится дамп базы 
определенной давности.

Вот при выполнении бэкапа _на логическом уровне_, средствами самой СУБД, мы
можем в единой транзакции сделать дамп всей базы и получить согласованные
данные, в одном файле, без каких-либо дополнительных манипуляций. 
Например, для постгреса я использую стандартный dump, для эскулайта - 
вышеназванную утилиту.

Для встраиваемых баз, в т.ч. эскулайт, действительно существует возможность
перевода базы в read-only режим. Но rsync будет вычислять сигнатуру всего
файла базы целиком, что займет время, сравнимое с затрачиваемым sqlite3-rdiff.
За 1 секунду невозможно вычислить хзш-сумму для гигабайта данных. Вот если
бы nilfs2 работала, мы могли бы делать снапшот и тут же снимать блокировку
базы, а далее выполняя вычисление хэша уже для файла из снапшота ФС. Все к 
тому и идет, в новых ФС, но никак вот не дойдет. Пока что до надежности ext3 
всем новомодным ФС еще предстоит выдержать лет эдак 5 активной их
эксплуатации... если к тому времени что-то от них останется.

> Так можно было бы создавать "ежесуточные" реплики и потом уже с ними 
> работать независимо, если надо их сжать или оформить версионность 
> (rdiff, git).

С _дампами базы_ можно работать с помощью rdiff и проч.

Best regards, Alexey Pechnikov.
http://pechnikov.tel/

Reply to: