Tokyo Cabinet & Tyrant 多服务器节点master-master部署思考
2010-08-04 17:14
465 查看
Tokyo Cabinet & Tyrant支持master-slaver和master-master两种分布式方式的部署,但是由于master-slaver在master宕机后需要重新手动设置master,这种冷启动的方式不是特别好;而且master-slaver的方式基本上是用来处理多读少写的操作,对于读写比例不大的我们的项目,感觉更适合使用master-master的方式。
假设有两台机器作为分布式中的两个master服务器,取名为TT1和TT2,假设IP为10.10.13.11和10.10.13.12。
安装完TC和TT后,直接运行TTserver,脚本为:
TT1:
Shell代码
mkdir ulog ttserver -port 1977 -ulog ulog -sid 1 -mhost 10.10.13.12 -mport 1978 -rts 1.rts casket-1.tch
TT2:
Shell代码
mkdir ulog ttserver -port 1978 -ulog ulog -sid 2 -mhost 10.10.13.11 -mport 1977 -rts 2.rts casket-2.tch
启动后,日志显示如
Log代码
2010-06-02T10:12:11+08:00 INFO connected: 10.10.13.12:60330 2010-06-02T10:12:11+08:00 INFO doing repl command 2010-06-02T10:12:11+08:00 INFO replicating to sid=2 after 1275379364260424 2010-06-02T10:12:12+08:00 INFO replicating from sid=2 (10.10.13.11:1977) after 1275443629795059
启动完成后,master-master方式的TTserver就可以运行了。根据TT的自动复制策略,写入到TT1上的数据会被复制到TT2上去,反之亦然。
一些参数说明,具体参考http://1978th.net/tokyotyrant/spex.html:
Tt代码
-ulog path : specify the update log directory. -sid num : specify the server ID. -mhost name : specify the host name of the replication master server. -mport num : specify the port number of the replication master server. -rts path : specify the replication time stamp file. ".tch", the database will be a hash database.
需要注意的是,如果TT1宕机并且持久化文件casket-1.tch丢失,重启后可能有数据无法从TT2上同步的问题,原因是rts的时间戳设置的太大了,修改1.rts中的值为0,则会从TT2上获取所有的数据。新加入的节点,首次创建时其rts中的值默认为0,所以会同步到所有的数据。
TTmaster-master的介绍并不多,只找到了双机做master的情况,而且他们之间的复制是互为master-slaver的复制方式。并且单个节点只能与一个节点作master-slaver,这样的话,暂时只能为环状方式的复制;而且只要其中一个节点坏掉,都会有数据过期的可能。robbin大哥说的没错,TT&TC确实不是用来作为分布式数据库存在的。
综合TT和master-slaver和master-master方式,完全可以做到mysql的双机做master,然后每个master后面挂slaver的方式了,不需要额外的代码。
真正作为服务器运行的话,还需要加入一些额外的参数,如持久化文件的压缩,曾经有同事在作测试时发现文件大小一直增加的情况,加入压缩的参数情况得到好转。
假设有两台机器作为分布式中的两个master服务器,取名为TT1和TT2,假设IP为10.10.13.11和10.10.13.12。
安装完TC和TT后,直接运行TTserver,脚本为:
TT1:
Shell代码
mkdir ulog ttserver -port 1977 -ulog ulog -sid 1 -mhost 10.10.13.12 -mport 1978 -rts 1.rts casket-1.tch
mkdir ulog ttserver -port 1977 -ulog ulog -sid 1 -mhost 10.10.13.12 -mport 1978 -rts 1.rts casket-1.tch
TT2:
Shell代码
mkdir ulog ttserver -port 1978 -ulog ulog -sid 2 -mhost 10.10.13.11 -mport 1977 -rts 2.rts casket-2.tch
mkdir ulog ttserver -port 1978 -ulog ulog -sid 2 -mhost 10.10.13.11 -mport 1977 -rts 2.rts casket-2.tch
启动后,日志显示如
Log代码
2010-06-02T10:12:11+08:00 INFO connected: 10.10.13.12:60330 2010-06-02T10:12:11+08:00 INFO doing repl command 2010-06-02T10:12:11+08:00 INFO replicating to sid=2 after 1275379364260424 2010-06-02T10:12:12+08:00 INFO replicating from sid=2 (10.10.13.11:1977) after 1275443629795059
2010-06-02T10:12:11+08:00 INFO connected: 10.10.13.12:60330 2010-06-02T10:12:11+08:00 INFO doing repl command 2010-06-02T10:12:11+08:00 INFO replicating to sid=2 after 1275379364260424 2010-06-02T10:12:12+08:00 INFO replicating from sid=2 (10.10.13.11:1977) after 1275443629795059
启动完成后,master-master方式的TTserver就可以运行了。根据TT的自动复制策略,写入到TT1上的数据会被复制到TT2上去,反之亦然。
一些参数说明,具体参考http://1978th.net/tokyotyrant/spex.html:
Tt代码
-ulog path : specify the update log directory. -sid num : specify the server ID. -mhost name : specify the host name of the replication master server. -mport num : specify the port number of the replication master server. -rts path : specify the replication time stamp file. ".tch", the database will be a hash database.
-ulog path : specify the update log directory. -sid num : specify the server ID. -mhost name : specify the host name of the replication master server. -mport num : specify the port number of the replication master server. -rts path : specify the replication time stamp file. ".tch", the database will be a hash database.
需要注意的是,如果TT1宕机并且持久化文件casket-1.tch丢失,重启后可能有数据无法从TT2上同步的问题,原因是rts的时间戳设置的太大了,修改1.rts中的值为0,则会从TT2上获取所有的数据。新加入的节点,首次创建时其rts中的值默认为0,所以会同步到所有的数据。
TTmaster-master的介绍并不多,只找到了双机做master的情况,而且他们之间的复制是互为master-slaver的复制方式。并且单个节点只能与一个节点作master-slaver,这样的话,暂时只能为环状方式的复制;而且只要其中一个节点坏掉,都会有数据过期的可能。robbin大哥说的没错,TT&TC确实不是用来作为分布式数据库存在的。
综合TT和master-slaver和master-master方式,完全可以做到mysql的双机做master,然后每个master后面挂slaver的方式了,不需要额外的代码。
真正作为服务器运行的话,还需要加入一些额外的参数,如持久化文件的压缩,曾经有同事在作测试时发现文件大小一直增加的情况,加入压缩的参数情况得到好转。
相关文章推荐
- Oracle--> 如何解决odp.net 部署到64位服务器上
- storm1.x支持主节点nimbus高可用 多master集群部署
- Hadoop集群Master节点部署方案
- ElasticSearch 5学习(3)——单台服务器部署多个节点
- 开发环境部署到服务器:An internal error occurred during: "Redeploy"
- 【转】Tokyocabinet/Tokyotyrant文档大合集
- Mesos&PaaS系列文章之二——Master节点安装
- k8s-02-一键部署etcd(master节点)
- 阿里云服务器部署分布式hadoop 2.7时,NameNode启动报Problem binding to [master:9000]问题
- 在一台服务器部署多个elasticsearche节点
- OpenStack多节点部署(一)——服务器选型
- TokyoTyrant & memcached 启动命令
- Kubernetes部署master节点
- openstack安装部署5——计算服务(控制节点&计算节点)
- 利用 Docker 包 Laradock 服务器部署 Laravel & ThinkSNS+ 等程序实战(多项目)
- 单台服务器部署多个节点
- Tokyocabinet/Tokyotyrant文档大合集
- Service部署到服务器后出现"The test form is only available for requests from the local machine"解决方法
- Kubernetes(k8s)集群部署(k8s企业级Docker容器集群管理)系列之部署master/node节点组件(四)
- Service部署到服务器后出现"The test form is only available for requests from the local machine"解决方法