Skip to main content

SqliteReplicatorConfig

Struct SqliteReplicatorConfig 

Source
pub struct SqliteReplicatorConfig {
    pub db_path: PathBuf,
    pub s3_bucket: String,
    pub s3_prefix: String,
    pub cache_dir: PathBuf,
    pub max_cache_size: u64,
    pub auto_restore: bool,
    pub snapshot_interval_secs: u64,
}
Expand description

Configuration for SQLite WAL-based replication to S3

This configuration controls how the SQLite replicator monitors database changes and syncs them to S3 for persistence and disaster recovery.

§Example

use zlayer_storage::config::SqliteReplicatorConfig;
use std::path::PathBuf;

let config = SqliteReplicatorConfig {
    db_path: PathBuf::from("/var/lib/myapp/data.db"),
    s3_bucket: "my-bucket".to_string(),
    s3_prefix: "sqlite-backups/myapp/".to_string(),
    cache_dir: PathBuf::from("/tmp/zlayer-replicator/cache"),
    max_cache_size: 100 * 1024 * 1024, // 100MB
    auto_restore: true,
    snapshot_interval_secs: 3600,
};

Fields§

§db_path: PathBuf

Path to the SQLite database file to replicate

§s3_bucket: String

S3 bucket for storing backups

§s3_prefix: String

S3 key prefix for this database’s backups

The replicator will create the following structure under this prefix:

  • {prefix}/snapshots/ - Full database snapshots
  • {prefix}/wal/ - WAL segments
  • {prefix}/metadata.json - Replication metadata
§cache_dir: PathBuf

Local directory for caching WAL segments before upload

This provides network tolerance - if S3 is temporarily unavailable, WAL segments are cached here and uploaded when connectivity returns.

§max_cache_size: u64

Maximum size of the local cache in bytes

When the cache exceeds this size, the oldest entries will be evicted (and lost if not yet uploaded). Default: 100MB

§auto_restore: bool

Whether to automatically restore from S3 on startup if local DB is missing

When enabled, the replicator will download and restore the database from S3 if the local file doesn’t exist. Default: true

§snapshot_interval_secs: u64

Interval between full database snapshots in seconds

Snapshots provide a restore point and allow cleanup of old WAL segments. Default: 3600 (1 hour)

Implementations§

Source§

impl SqliteReplicatorConfig

Source

pub fn new( db_path: impl Into<PathBuf>, s3_bucket: impl Into<String>, s3_prefix: impl Into<String>, ) -> Self

Create a new config with the required fields

Source

pub fn with_cache_dir(self, cache_dir: impl Into<PathBuf>) -> Self

Set the cache directory

Source

pub fn with_max_cache_size(self, size: u64) -> Self

Set the maximum cache size

Source

pub fn with_auto_restore(self, auto_restore: bool) -> Self

Set whether to auto-restore on startup

Source

pub fn with_snapshot_interval(self, interval_secs: u64) -> Self

Set the snapshot interval

Trait Implementations§

Source§

impl Clone for SqliteReplicatorConfig

Source§

fn clone(&self) -> SqliteReplicatorConfig

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SqliteReplicatorConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for SqliteReplicatorConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for SqliteReplicatorConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for SqliteReplicatorConfig

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,