如何在Ubuntu 16上设置CouchDB复制
在今天的文章中,我们将在Ubuntu 16.10上设置CouchDB复制。
CouchDB是NoSQL数据库与我们早先写的Cassandra类似。
CourceDB而不是Cassandra的Java,而不是CouchdB,它是自2008年以来的Apache Software Foundation项目。
此数据库是面向文件,与MongoDB不同。
对于本教程,我们需要运行Ubuntu 16.10服务器的两个节点。
我将在笔记本电脑中使用KVM实例,可以使用VM或者物理机器。
所以让我们开始。
在Ubuntu节点上安装和couchdb
允许首先更新源列表
sudo apt update
接下来,我们安装Package Softity-properties-common,它使我们能够添加PPA存储库。
默认情况下可能包含,但如果不是,则需要运行此命令
sudo apt install software-properties-common
接下来,我们为CouchDB添加存储库,我们将从我们安装数据库软件
sudo add-apt-repository ppa:couchdb/stable
然后我们可以使用simple命令安装couchdb:
sudo apt-get install couchdb
执行此命令后,安装CouchDB,我们将在端口5984上运行我们是否可以使用CURL来获取有关数据库的信息
curl localhost:5984
正如我们所看到的,它已经运行了。
如何创建和删除数据库
CouchDB通过HTTP请求进行操作。
当我们想要完成某些内容时,我们将在CouchDB运行的默认端口上对LocalHost进行请求。
出于安全原因,我们只能在LocalHost上执行此操作,在CouchDB正在运行的计算机上执行此操作。
允许添加数据库:
miki@ubuntu-1:~$curl -X PUT localhost:5984/new_database {"ok":true}
现在让我们列出系统上的所有数据库:
miki@ubuntu-1:~$curl -X GET http://127.0.0.1:5984/_all_dbs ["_replicator","_users","new_database"]
前两个默认情况下,new_database是我们创建的。
然后删除它。
使用以下命令删除数据库
miki@ubuntu-1:~$curl -X DELETE http://127.0.0.1:5984/new_database {"ok":true}
现在再次运行第二个命令
miki@ubuntu-1:~$curl -X GET http://127.0.0.1:5984/_all_dbs ["_replicator","_users"]
我们看到新_Database丢失,因为我们删除了它。
蒲团 - Couchdb Gui
如果我们访问"http://localhost:5984/_utils使用浏览器,我们将找到蒲团。
蒲团是Couchdb Gui前端。
但如上所述,CouchDB出于安全原因,只能从LocalHost管理,这意味着我们安装了CouchDB的服务器。
我们无法键入服务器的IP地址而不是localhost。
因此,如果要从笔记本电脑管理服务器,我们需要使用小技巧。
我们需要向服务器制作SSH隧道,使MINI VPN制作并使服务器认为请求来自localhost。
要执行此操作,请在本地计算机上键入以下命令:
miki@ThinkPad-X220T:~$ssh -L5984:127.0.0.1:5984 [email protected]
这将创建我们需要的隧道,然后我们可以触发浏览器并导航到"http://localhost:5984/_utils/index.html"
它将为我们提供类似于此的用户界面
正如我们要在下一章中复制数据库,我们需要将目的地数据库设置为接受副本从localhost以外的位置。
这可以在蒲团配置页面中的bind_address参数中设置。
它需要设置为"0.0.0.0"以侦听所有IP,而不是仅限于localhost。
这样的东西:
我们可以在两个节点上执行此操作(我们需要为另一个节点创建新的SSH隧道),但通常只有副本的目标,需要侦听所有IP地址。
源可以继续侦听localhost。
本地复制数据库
复制数据库,就像CouCDDB中的所有其他内容,也通过HTTP请求完成。
我们需要指定源数据库和目标数据库。
目的地可以是本地或者远程数据库。
由于我们已经设置了Ubuntu-1收听所有IP,因此我们将创建一个DB,我们将在Ubuntu-2主机上复制。
miki@ubuntu-2:~$curl -X PUT localhost:5984/db-replica {"ok":true}
现在让我们了解我们如何在本地复制此数据库。
在同一台服务器上
curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://localhost:5984/foo", "create_target": true, "continuous": true} ' {"ok":true,"_local_id":"f8fa7b615b4e951d7ab7254ed58d049d+continuous+create_target"}
此命令应在本地主机上创建数据库foo,并且源应该占据我们之前创建的数据库DB-replica。
我们也启用了连续的选项,这意味着在制作任何更改源数据库时会定期同步数据库,在这种情况下是DB-replica。
运行此命令后,请检查所有可用的数据库
miki@ubuntu-2:~$curl -X GET localhost:5984/_all_dbs ["_replicator","_users","db-replica","foo"]
Foo数据库已创建。
远程复制
我们现在尝试远程进行操作,我们的来源再次在Ubuntu-2服务器上再次DB-replica,我们的目标将在我们的Ubuntu-1服务器上进行Remotefoo。
如果不存在(Create_target参数),它将创建新数据库,并且它将连续同步副本,因为它们发生了所有更改。
miki@ubuntu-2:~$curl -H 'Content-Type: application/json' -X POST http://localhost:5984/_replicate -d ' {"source": "http://localhost:5984/db-replica", "target": "http://192.168.122.223:5984/remotefoo", "create_target": true, "continuous": true} ' {"ok":true,"_local_id":"cf7f6399835a893ab48282cb269eb1ab+continuous+create_target"}
让我们检查Ubuntu-1服务器中的DBS
miki@ubuntu-1:~$curl -X GET localhost:5984/_all_dbs ["_replicator","_users","dbtest","remotefoo"]
我们可以看到远程复制的工作原理。
如果我们只想要一次性复制,则需要将连续参数更改为false或者只是简单地省略它。
如果我们想查看CouchDB日志,我们可以在/var/log/couchdb/couch.log目录中找到它。
我们需要sudo或者root权限来访问它,如果要交互地观看日志,则此命令将执行此操作
sudo tail -f /var/log/couchdb/couch.log