直接输入tcrmgr查看用户帮助

----------------------------------------------------------------------

1.先启动一个测试用的ttserver

注意使用的所有路径都是绝对路径!

补充:目录temp和ulog需要自己手动提前创建

#mkdir temp ulog

ttserver -host 172.31.0.11 -port 2001 -thnum 4 -dmn -ulim 1m -ulog $(pwd)/ulog/ -log $(pwd)/temp/test.log -pid $(pwd)/temp/test.pid -uas -sid 9 $(pwd)/temp/test_data.tch#bnum=1000#rcnum=0#xmsiz=0m


2. 查看服务器统计信息

tcrmgr inform -port 1001 -st 172.31.0.11


3. 写入数据(如果已存在该键,则更新值)

tcrmgr put -port 1001 172.31.0.11 test1 value1


4. 读取数据某个键(无pv选项,默认输出:值)

tcrmgr get -port 1001 172.31.0.11 key1-1 

读取多个键(无pv选项,默认输出:键 值)

tcrmgr mget -port 1001 172.31.0.11 key1-1 key1-2 

key1-1

key1-2 a


5. 删除数据-某个键

tcrmgr out -port 1001 172.31.0.11 test1

清空实例(所有键)

tcrmgr vanish -port 1001 172.31.0.11


6. 查看

查看所有的键

tcrmgr list -port 1001 172.31.0.11

key1

查看所有键和值

tcrmgr list -port 1001 -pv 172.31.0.11

key1 value1

 列出指定键前缀的键值

[root@centos-6 ~]# tcrmgr list -port 1001 -fm 1key -pv 172.31.0.11 

1key-2

1key-1

 列出指定键前缀的键值只输出一行

tcrmgr list -port 1001 -fm 1key -pv -m 1 172.31.0.11 

1key-2 a



7. 使用copy的备份、还原(写锁定、读不受影响)

备份(copy)

注意:路径是服务器上的绝对路径,否则显示“./tcrmgr: error: 9999: miscellaneous error”(经测试新版本不报错,但是备份失败)

tcrmgr copy -port 1001 172.31.0.11 $(pwd)/temp/test2.tch_`date +%s%N|head -c16`

注:上面为30个线程数据文件,如果只有一个线和,则test2.tch会直接生成文件


第一种情况:只使用copy完全备份还原

测试恢复到1002实例

停止1002,如果正在运行

因为启动脚本的数据库文件目录名为port.tch所以改为1002.tch,替换现在有的1002.tch目录(或只拷贝里面的文件到现在有1002.tch)

脚本启动

完成,查看数据

注:如果30个实例的备份 还原到10个实例上,结果是10个实例上启动脚本指定10实例启用,还是会使用这30个备份文件存取。


第二种情况:配置一个从(在数据较大的时候推荐先使用copy备份数据还原,再启动实例,如果不设置默认启用后从头开始同步)

1、如果要创建新实例,请先默认初始化目录等,如果是老实例,停止实例

2、把备份数据导入到从tt,进行还原

3、修改rts文件把备份文件名的时间部分16位秒,写入rts文件(启动后从该点开始取主的ulog)

3、修改启动脚本主服务器信息

4、启动,

5、查看 信息

tcrmgr inform -st -port 3001 172.31.0.12


第三种情况:tt挂掉,有copy备份和ulog备份,两者结合最大化还原数据(ulog脚本可以只备份到最后更新文件的前一个文件)

1、如果要创建新实例,请先默认初始化目录等,如果是老实例,停止实例

2、把备份数据( copy备份和ulog)导入到从tt

3、修改rts文件把备份文件名的时间部分16位秒数,写入rts文件(启动后从该点开始取主的ulog)

4、还原copy备份

5、启动实例

6、还原ulog(copy时间后的ulog),根据备份 目录中的ulog文件(勿直接放到现在实例目录中)

7、tcrmgr restore -rcc -port 3001 172.31.0.12 `pwd`/ulog-bak

8、完成,查看数据



8. 日志导出(屏幕上打印,十六进制字符串格式)

注意:命令不同了

注意:目录是服务器上的ulog的绝对路径

ttulmgr export $(pwd)/ulog/


9. 同步内存数据到磁盘(没搞懂有什么特别之处,可能是当ttserver使用-uas参数异步写入日志的时候起作用)

tcrmgr sync -port 20000 192.168.0.100


10. 数据导入

注意:tsv格式的文件以TAB分隔,如:test2\tvalue2\n

注意:路径是本地路径,所以不必是绝对路径

tcrmgr importtsv -port 20000 192.168.0.100 temp/2.tsv


11. 通过ulog日志恢复数据(如果有所有ulog备份可以不用copy,但是一般不建议这么做,数据太大的情况下)

注意:路径是服务器上的绝对路径

tcrmgr restore -port 20000 192.168.0.100 $(pwd)/old_ulog/


12. 打印更新日志(挂起,一直显示日志)

可能是用于实时查看ttserver有哪些操作,相当于tail -f

tcrmgr repl -port 1005 -ph 172.31.0.11


13. 下一个实验:启动一个带复制功能的ttserver,以前面启动的ttserver为master

ttserver -host 192.168.0.100 -port 20001 -mhost 192.168.0.100 -mport 20000 -rcc -rts $(pwd)/temp_1/test_1.rts -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/temp_1/ -log $(pwd)/temp_1/test_1.log -pid $(pwd)/temp_1/test_1.pid -sid 10 $(pwd)/temp_1/test_1.tch#bnum=1000#rcnum=0#xmsiz=0m


14. 再启动一个普通的ttserver,不与其他服务器相关

ttserver -host 192.168.0.100 -port 20002 -thnum 4 -dmn -ulim 1024m -ulog $(pwd)/ulog_2/ -log $(pwd)/temp_2/test_2.log -pid $(pwd)/temp_2/test_2.pid -sid 11 $(pwd)/temp_2/test_data_2.tch#bnum=1000#rcnum=0#xmsiz=0m


15. 修改某个ttserver的master(只换端口也需要指定master IP)

主从时间一致,取时间date +%s%N | head -c 16,修改从的rts文件(这个时间之前的日志将不会在从上执行)

tcrmgr setmst -port 20001 -mport 20002 192.168.0.100 192.168.0.100

注意:只有以复制方式启动的ttserver,修改master后才能从新的数据库复制数据


18、优化

tcrmgr optimize -port 1001 172.31.0.11

执行优化操作之后,会挨个对数据文件中的无效数据进行清洗,并且期间数据库 处于锁定状态,不可进行读写操作 。

执行过程可看到数据文件逐个被更新,新的数据文件生后,旧数据文件将被删除。从也受影响?

注:out操作需要优化,vanish操作不需要使用该选项优化


参考博文:http://sndapk.blog.51cto.com/5385144/1546603