注意:中文文档有可能未及时更新,请以最新的英文readme为准。
cowsql (/ˈkaʊ,siːkwəl/ listen) 是一个用C语言开发的可嵌入的,支持流复制的数据库引擎,具备高可用性和自动故障转移功能。
cowsql通过网络协议扩展SQLite,将应用程序的各个实例连接在一起,让它们作为一个高可用的集群,而不依赖外部数据库。
"cowsql"名字大致取意"宠物与牲口应用思辨",删除或重建一个存储使用cowsql应用的特定节点,应用基本使用不受影响。
cowsql 是Canonical dqlite项目一个分支,dqlite原先也是cowsql作者自己当时在Canonical工作时候开发的。
cowsql库是在略微修改的 LGPLv3 版本下发布的,其中包括一个版权例外,允许用户在他们的项目中静态链接这个库的代码并按照自己的条款发布最终作品。如有需要,请查看完整license文件。
cowsql 在 Linux 上运行,由于C-raft 的 libuv 后端的实现,需要一个支持 native async I/O 的内核(注意不要和POSIX AIO混淆)。
查看和了解cowsql的最简单方式是使用绑定了Go cowsql的demo样例程序,Go cowsql的使用可以参考它的项目文档relevant documentation。
在 FOSDEM 2020 上有一个关于cowsql的演讲视频,您可以在此处观看。
如果您想编写客户端,请参阅网络协议文档。
如果您使用的是基于 Debian 的系统,您可以从 cowsql 的dev PPA 获得最新的开发版本:
sudo add-apt-repository ppa:cowsql/dev
sudo apt-get update
sudo apt-get install libcowsql-dev
为了编译构建libcowsql,您需要准备:
-
较新版本的libuv(v1.18.0或之后的版本)
-
较新版本的sqlite3-dev
-
构建好的C-raft库
您的linux发行版应该已经为您提供了预构建的 libuv 共享库和 libsqlite3-dev,就不需要在下载了,否则还需要下载这两个依赖。
编译raft库运行如下命令:
git clone https://github.com/cowsql/raft.git
cd raft
autoreconf -i
./configure
make
sudo make install
cd ..
所有依赖的库都下载好后,运行如下命令手动编译cowsql库:
autoreconf -i
./configure
make
sudo make install
当环境变量LIBRAFT_TRACE在启动时被设置,将启用详细跟踪。