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 次下载
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