ttserver 常见操作

直接输入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

a

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

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

key1-1 a

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

列出指定键前缀的键值

[[email protected] ~]# tcrmgr list -port 1001 -fm 1key -pv 172.31.0.11

1key-2 a

1key-1 a

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

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

时间: 2024-10-01 00:29:18

ttserver 常见操作的相关文章

C#路径/文件/目录/I/O常见操作汇总

文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供给你一点有益的思路,如果你有好的建议,恳请能够留言,使这些内容更加完善. 主要内容:一.路径的相关操作, 如判断路径是否合法,路径类型,路径的特定部分,合并路径,系统文件夹路径等内容:二.相关通用文件对话框,这些对话框可以帮助我们操作文件系统中的文件和目录:三.文件.目录.驱动器的操作,如获取它们的

【代码学习】MYSQL数据库的常见操作

============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服务器位置 -u:数据库的用户名 -p:数据库的密码 1 mysql -u 用户名 -p //连接数据库 2 密码 3 exit //关闭数据库 1 mysql_connect($host,$user,$password); //连接数据库 2 mysql_close() //关闭数据库 二.创建数据

杂【第一天】包括eclipse常见操作,程序调试模式

观看传智播客视频笔记,感谢 eclipse的常见操作: 1.当即热版本低于编译器版本是,会出现bad Vresion number in class file的错误: 2.快捷键: alt+/:模板键 ctrl+1:快速修复 ctrl+shift+o:导包 设置代码阿保存的时候自动格式化:windows->首选项->Java->Editor->save Actions 代码移动:alt+上下键 重置视图:window->reset perspective... 3.典型的字节

[java学习笔记]java语言基础概述之数组的定义&常见操作(遍历、排序、查找)&二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

ArcGIS for Android地图控件的5大常见操作

原文地址: ArcGIS for Android地图控件的5大常见操作 - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/7801467   GIS的开发中,什么时候都少不了地图操作.ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for

动态单链表的传统存储方式和10种常见操作-C语言实现

顺序线性表的优点:方便存取(随机的),特点是物理位置和逻辑为主都是连续的(相邻).但是也有不足,比如:前面的插入和删除算法,需要移动大量元素,浪费时间,那么链式线性表 (简称链表) 就能解决这个问题. 一般链表的存储方法 一组物理位置任意的存储单元来存放线性表的数据元素,当然物理位置可以连续,也可以不连续,或者离散的分配到内存中的任意位置上都是可以的.故链表的逻辑顺序和物理顺序不一定一样. 因为,链表的逻辑关系和物理关系没有必然联系,那么表示数据元素之间的逻辑映象就要使用指针,每一个存储数据元素

java实现二叉树的常见操作

本文转自:红客联盟 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合. 递归的三个条件: 边界条件 递归前进段 递归返回段 当边界条件不

数组常见操作_使用字母打印正三角形

数组常见操作: 使用字母打印正三角形 public class fifty { public static void main(String[] args) { char[] c = {'A','B','C','D','E','F','G'}; //要打印的行数 for(int i = 0;i<c.length; i++){ //打印每一行空格 for(int j = i; j<c.length-1; j++){ System.out.print(" "); } //打印每

MFC各种控件的常见操作(逐步添加中......)

由于经常切换系统或界面框架进行编程,难免有时会忘记之前的编程函数等等.所有在此自己做一个备份,以防止重新充电带来的痛苦! 1.CButton 1.1 在VC中编程实现按钮的启用(enable)和禁用(disable) 1.1.1 方式1:在对控件添加变量以后 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQuit.EnableWindow(TRUE); //启用按钮 m_btnQuit.EnableWindow(FALSE); //禁用按钮 m_btnQu