4 个版本

0.2.2 2023年9月30日
0.2.1 2023年9月29日
0.2.0 2023年9月28日
0.1.0 2023年6月17日

#744数据库接口

每月 23 次下载

MIT/Apache

105KB
2K SLoC

Synclite

Synclite 是一个受 Litestream 启发的 SQLite 流式复制 Rust 库。

注意 这个库目前处于实验阶段,包含已知错误,目前不适合用于生产。

开始使用

Synclite 是一个旨在在您的应用程序中使用的库。

首先设置 MinIO 以存储复制的数据

docker run -p 9000:9000 -p 9001:9001 minio/minio:latest server /data --console-address ":9001"

这是如何复制路径为 tmp.db 的 SQLite 数据库

std::env::set_var("AWS_ACCESS_KEY_ID", "minioadmin");
std::env::set_var("AWS_SECRET_ACCESS_KEY", "minioadmin");

let s3_replica_config = synclite::replica::s3::Config {
    bucket: "mybkt".to_string(),
    endpoint: Some("http://localhost:9000".to_string()),
    region: "eu-west-1".to_string(),
    prefix: "tmp.db".to_string(),
};
let config = synclite::config::ReplicateConfig {
    db_path: "tmp.db".to_string(),
    replica: synclite::replica::Config::S3(s3_replica_config.clone()),
    // This should be set if you use SQLCipher
    encryption_key: None,
};


let (stop_tx, stop_rx) = tokio::sync::broadcast::channel(1);

// Start replication in a background task
tokio::spawn({
    let config = config.clone();
    async move {
        synclite::replicate(config.clone(), stop_rx).await.unwrap();
    }
});

这是如何从 MinIO 恢复您的 SQLite 数据库到本地路径 restored.db

std::env::set_var("AWS_ACCESS_KEY_ID", "minioadmin");
std::env::set_var("AWS_SECRET_ACCESS_KEY", "minioadmin");

let s3_replica_config = synclite::replica::s3::Config {
    bucket: "mybkt".to_string(),
    endpoint: Some("http://localhost:9000".to_string()),
    region: "eu-west-1".to_string(),
    prefix: "tmp.db".to_string(),
};
let restore_config = synclite::config::RestoreConfig {
    db_path: "restored.db".to_string(),
    replica: synclite::replica::Config::S3(s3_replica_config.clone()),
    if_not_exists: true,
    encryption_key: None,
};
synclite::restore(restore_config.clone()).await.unwrap();

即将推出的功能

  • 压缩
  • 常规快照
  • 快照保留期
  • 更好的文档和更多示例
  • 支持更多复制后端
  • CLI

依赖项

~66MB
~1M SLoC