目录结构:
- 基础使用
- Daemon
- 备份和恢复
- 更新日志
- 主备复制
- 按需复制
- HTTP方式访问
[一]、基础使用
1.内存中哈希数据库
打开一个终端1,输入以下命令回车即运行:
1 |
[terminal-1]$ ttserver |
默认启动监听端口:1978,并且以内存哈希数据库的方式。
再打开另一个终端2运用“ tcrmgr put” 命令向数据库插入测试数据:
1 2 3 4 |
[terminal-2]$ tcrmgr put -port 1978 localhost firstname Sun [terminal-2]$ tcrmgr put -port 1978 localhost lastname Michael [terminal-2]$ tcrmgr put -port 1978 localhost blogurl www.micmiu.com [terminal-2]$ tcrmgr put -port 1978 localhost weibo www.sina.com/ctosun |
再用命令:“tcrmgr get” 、“tcrmgr mget” 验证刚插入的数据:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[terminal-2]$ tcrmgr get -port 1978 localhost firstname Sun [terminal-2]$ tcrmgr get -port 1978 localhost lastname Michael [terminal-2]$ tcrmgr get -port 1978 localhost blogurl www.micmiu.com [terminal-2]$ tcrmgr get -port 1978 localhost weibo www.sina.com/ctosun [terminal-2]$ tcrmgr mget -port 1978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun [terminal-2]$ |
在之前启动服务的终端1里,按 Ctrl+C 可以终止服务,由于是内存方式的,刚插入的数据已经没有了,重启后不会再查询到数据。
2.哈希数据库
以哈希数据方式启动服务,数据库文件名称为:casket.tch,在终端1里输入如下命令回车:
1 |
[terminal-1]$ ttserver casket.tch |
在另一个终端2,向数据库插入测试记录:
1 2 3 4 |
[terminal-2]$ tcrmgr put -port 1978 localhost firstname Sun [terminal-2]$ tcrmgr put -port 1978 localhost lastname Michael [terminal-2]$ tcrmgr put -port 1978 localhost blogurl www.micmiu.com [terminal-2]$ tcrmgr put -port 1978 localhost weibo www.sina.com/ctosun |
在之前启动服务的终端1里 按 Ctrl+C 终止服务,再重新启动服务:ttserver casket.tch。在另一个终端2中验证数据是否被持久化到文件中,执行下面的查询语句进行验证:
1 2 3 4 5 |
[terminal-2]$ tcrmgr mget -port 1978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun |
验证成功,表示数据正确存储到 casket.tch 文件中。
在启动服务的终端1里按 Ctrl+C 终止服务,然后删除测试的数据库文件:
1 |
[terminal-1]$ rm casket.tch |
[二]、Daemon使用
打开一个终端1,以守护进程的方式启动服务,执行如下命令:
1 |
[terminal-1]$ttserver -dmn -pid /tmp/ttserver.pid /tmp/casket.tch |
可以验证进程是否启动:
1 2 3 4 5 |
[terminal-1]$ ps -ef|grep ttserver michael 10959 1 0 06:55 ? 00:00:00 ttserver -dmn -pid /tmp/ttserver.pid /tmp/casket.tch michael 10981 10645 0 06:57 pts/0 00:00:00 grep --color=auto ttserver [terminal-1]$ cat /tmp/ttserver.pid 10959 |
ps 命令的结果表示服务已经正常启动了,可以执行 kill -TERM 命令停止服务,同时也可以验证是否正常被终止:
1 2 3 |
[terminal-1]$ kill -TERM `cat /tmp/ttserver.pid` [terminal-1]$ ps -ef|grep ttserver michael 11005 10645 0 07:00 pts/0 00:00:00 grep --color=auto ttserver |
[三]、备份和恢复
以哈希数据方式启动服务,数据库文件名称为:casket.tch,打开终端里输入如下命令回车:
1 |
[terminal-1]$ ttserver casket.tch |
在另一个终端2,向数据库插入测试记录:
1 2 3 4 |
[terminal-2]$ tcrmgr put -port 1978 localhost firstname Sun [terminal-2]$ tcrmgr put -port 1978 localhost lastname Michael [terminal-2]$ tcrmgr put -port 1978 localhost blogurl www.micmiu.com [terminal-2]$ tcrmgr put -port 1978 localhost weibo www.sina.com/ctosun |
执行命令 tcrmgr copy 进行备份:
1 |
[terminal-2]$tcrmgr copy -port 1978 localhost backup.tch |
在之前启动服务的终端1里 按 Ctrl+C 终止服务,并删除数据库文件,再从备份文件恢复,重启服务:
1 2 3 |
[terminal-1]$ rm casket.tch [terminal-1]$ cp backup.tch casket.tch [terminal-1]$ ttserver casket.tch |
在另一个终端2中验证数据恢复是否正常:
1 2 3 4 5 |
[terminal-2]$ tcrmgr mget -port 1978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun |
从上面的信息可见已经验证成功。
[四]、更新日志
在终端1中,启动服务,开启更新日志记录:
1 2 |
[terminal-1]$ mkdir ulog [terminal-1]$ ttserver -ulog ulog -sid 1 casket.tch |
在另一个终端2,向数据库插入测试记录:
1 2 3 4 |
[terminal-2]$ tcrmgr put -port 1978 localhost firstname Sun [terminal-2]$ tcrmgr put -port 1978 localhost lastname Michael [terminal-2]$ tcrmgr put -port 1978 localhost blogurl www.micmiu.com [terminal-2]$ tcrmgr put -port 1978 localhost weibo www.sina.com/ctosun |
在终端1中,按 Ctrl + C停止服务,删除数据库文件:
1 |
[terminal-1]$ rm casket.tch |
在终端1中,转移更新日志文件,重新启动服务:
1 2 3 |
[terminal-1]$ mv ulog ulog-back [terminal-1]$ mkdir ulog [terminal-1]$ ttserver -ulog ulog -sid 1 casket.tch |
在另一个终端2中,运用命令:“tcrmgr restore” 重新恢复数据并进行相关测试验证:
1 2 3 4 5 6 7 |
[terminal-2]$ tcrmgr mget -port 1978 localhost firstname lastname blogurl weibo [terminal-2]$ tcrmgr restore localhost ulog-back [terminal-2]$ tcrmgr mget -port 1978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun |
[五]、主备复制
复制是一种同步两个或两个以上的数据库服务器的高可用性和高完整性的机制。复制源服务器被称为“主”,每个目标服务器被称为“备”,复制机制需要以下先决条件:
- 主机必须记录更新日志。
- 主机必须指定唯一的服务ID。
- 每个备机必须记录更新日志,因为主机失败转移后它可能会成为新的主服务。
- 每个备机必须指定唯一的服务ID,因为主机失败转移后它可能会成为新的主服务
- 每个备机必须指定主服务的地址和端口号。
- 每个备机必须指定复制时间戳文件。
首先打开终端1,启动主服务指定端口为:11978,日志目录:ulog-1 :
1 2 |
[terminal-1]$ mkdir ulog-1 [terminal-1]$ ttserver -port 11978 -ulog ulog-1 -sid 1 casket-1.tch |
再打开另一个终端2,启动主服务指定端口为:21978,日志目录:ulog-2 :
1 2 |
[terminal-2]$ mkdir ulog-2 [terminal-2]$ ttserver -port 21978 -ulog ulog-2 -sid 2 -mhost localhost -mport 11978 -rts 2.rts casket-2.tch |
再打开另一个终端3,向主数据库中插入测试数据:
1 2 3 4 |
[terminal-3]tcrmgr put -port 11978 localhost firstname Sun [terminal-3]tcrmgr put -port 11978 localhost lastname Michael [terminal-3]tcrmgr put -port 11978 localhost blogurl www.micmiu.com [terminal-3]tcrmgr put -port 11978 localhost weibo www.sina.com/ctosun |
在终端3中检查主备数据库的数据一致性:
1 2 3 4 5 6 7 8 9 10 |
[terminal-3]$ tcrmgr mget -port 11978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun [terminal-3]$ tcrmgr mget -port 21978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun |
下面模拟主数据库服务崩溃,在终端1中 Ctrl+C停止服务 删除相关数据库文件:
1 |
[terminal-1]$ rm casket-1.tch |
在终端2中Ctrl+C 停止备用服务,重新以主数据库的形式启动:
1 |
[terminal-2]$ ttserver -port 21978 -ulog ulog-2 -sid 2 casket-2.tch |
在终端1中再重新启动一个新的备用服务,以端口31978为例:
1 2 |
[terminal-1]$ mkdir ulog-3 [terminal-1]$ ttserver -port 31978 -ulog ulog-3 -sid 3 -mhost localhost -mport 21978 -rts 3.rts casket-3.tch |
在终端3中检查主备数据库的数据一致性:
1 2 3 4 5 6 7 8 9 10 |
[terminal-3]$ tcrmgr mget -port 21978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun [terminal-3]$ tcrmgr mget -port 31978 localhost firstname lastname blogurl weibo firstname Sun lastname Michael blogurl www.micmiu.com weibo www.sina.com/ctosun |
从上面的验证信息可见,测试结果正确。
[六]、按需复制
可以在不停止数据库服务的基础上进行复制。首先创建如下脚本文件 ttbackup.sh ,赋权限 0755:
1 2 3 4 5 |
#! /bin/sh srcpath="$1" destpath="$1.$2" rm -f "$destpath" cp -f "$srcpath" "$destpath" |
在终端1中启动服务,开启更新日志:
1 2 |
[terminal-1]$ mkdir ulog-1 [terminal-1]$ ttserver -port 11978 -ulog ulog-1 -sid 1 casket-1.tch |
在另一个终端中插入测试数据:
1 |
[terminal-2]$ tcrtest write -port 11978 localhost 10000 |
检查插入的数据:
1 |
[terminal-2]$ tcrmgr list -port 11978 -pv localhost |
备份数据库:
1 |
[terminal-2]$ tcrmgr copy -port 11978 localhost '@./ttbackup.sh' |
确认备份文件被保存,类似文件格式:casket-1.tch.xxxxx:
1 2 3 |
[terminal-2]$ ls |grep casket casket-1.tch casket-1.tch.1338793574058643 |
以刚备份的文件启动另一个新服务,命令里的xxxxx替换为1338793574058643:
1 2 3 4 |
[terminal-2]$ cp casket-1.tch.xxxxx casket-2.tch [terminal-2]$ echo xxxxx > 2.rts [terminal-2]$ mkdir ulog-2 [terminal-2]$ ttserver -port 21978 -ulog ulog-2 -sid 2 -rts 2.rts casket-2.tch |
再打开一个终端3,向第一个数据库 11978 中插入测试数据:
1 2 3 4 |
[terminal-3]$ tcrmgr put -port 11978 localhost firstname Sun [terminal-3]$ tcrmgr put -port 11978 localhost lastname Michael [terminal-3]$ tcrmgr put -port 11978 localhost blogurl www.micmiu.com [terminal-3]$ tcrmgr put -port 11978 localhost weibo www.sina.com/ctosun |
对比两个数据库的数据差异性:
1 2 3 4 5 6 |
[terminal-3]$ tcrmgr inform -port 11978 localhost record number: 10004 file size: 848864 [terminal-3]$ tcrmgr inform -port 21978 localhost record number: 10000 file size: 848704 |
在终端3中指定21978的数据库的主数据库是 11978,实现数据同步复制:
1 |
[terminal-3]$ tcrmgr setmst -port 21978 -mport 11978 localhost localhost |
再一次对比两个数据库的数据差异性:
1 2 3 4 5 6 |
[terminal-3]$ tcrmgr inform -port 11978 localhost record number: 10004 file size: 848864 [terminal-3]$ tcrmgr inform -port 21978 localhost record number: 10004 file size: 848864 |
从上面的测试信息可以看出第二次对比的结果数据一致了,验证成功。
[七]、HTTP方式访问
插入
1 2 |
michael@ubuntu:~$ curl -X PUT http://127.0.0.1:11978/myblog -d "www.micmiu.com" Created |
读取
1 2 |
michael@ubuntu:~$ curl http://127.0.0.1:11978/myblog www.micmiu.com |
删除
1 2 3 4 |
michael@ubuntu:~$ curl -X DELETE http://127.0.0.1:11978/myblog OK michael@ubuntu:~$ curl http://127.0.0.1:11978/myblog Not Found |
到此基本使用教程介绍结束。
原创文章,转载请注明: 转载自micmiu – 软件开发+生活点滴[ http://www.micmiu.com/ ]
0 条评论。