• 2012-12-27

    SSDB 已经支持在线备份功能!

    Views: 37783 | 12 Comments

    SSDB 1.1.0 已经发布! 这个版本支持了在线备份功能, 可以在不停止服务的情况下备份服务器数据. 这个功能让 SSDB 更加成为一个真正生产环境的存储服务器!

    备份

    ./tools/ssdb-dump 127.0.0.1 8888 ./backup_dir
    

    这条命令从监听在 127.0.0.1:8888 的 SSDB 服务器上备份全量的数据, 保存到本地新创建的目录 backup_dir, 这个目录其实是一个 LevelDB 的数据库(db).

    恢复

    恢复方案非常简单.

    backup_dir 传输到服务器, 修改新ssdb服务器的配置文件, 将 SSDB 使用的数据库名改为 backup_dir, 然后重启 SSDB 即可.

    下一步

    SSDB 的下一个特性将是同步复制, 也即常说的"主从(Master-Slave)架构", 一旦同步复制功能加入进来, SSDB 将变得更加适合生产环境使用. 毕竟, 单份的数据总是让人不放心, 必须得复制多份保存下来才能让人安心. ssdb-dump 虽然可以达到此目的, 但还是一种被动的备份方式. 而同步复制功能将是分布式的基础. 主从架构还能用作简单的负载均衡.

    SSDB 是一个 LevelDB 服务器, 项目主页: https://code.google.com/p/zdb/

    Posted by ideawu at 2012-12-27 00:10:06 Tags: ,
  • 2012-12-19

    SSDB – 支持 zset 的 LevelDB 服务器

    Views: 36351 | No Comments

    Google 开源的 LevelDB 是一个单纯的 key-value 存储的类库, 可以理解为是一个存储引擎, 并不是常见意义的服务器. 你无法通过网络接口来使用它, 只能用 C/C++ 语言才能使用它.

    LevelDB 速度非常快, 是 Google 内部分布式存储系统 Bigtable 的存储引擎的开源版本, 作为分布式系统的一个存储节点(Tablet). LevelDB 的设计思想和 Google 内部的版本部分相同, 但肯定也被隐藏了一些接口和思想, 而这部分很可能是非常重要和关键的.

    Continue reading »

    Posted by ideawu at 2012-12-19 13:48:10 Tags: ,
  • 2012-11-16

    必须放在循环中的pthread_cond_wait

    Views: 15517 | No Comments

    消费者线程(多个):

    // *错误做法*
    lock(my_lock){
        if(wait = 1){
            pthread_cond_wait(cond, my_lock);
        }
        wait = 1;
    }
    

    生产者线程:

    lock(my_lock){
        wait = 0;
        pthread_cond_signal(cond);
    }
    

    由于在 if(wait=1) 之后和 pthread_cond_wait() 在之前, wait 有可能已经被其它消费者线程更改了.

    所以, 必须把 pthread_cond_wait() 放在循环中:

    // 正确做法
    lock(my_lock){
        while(wait = 1){
            pthread_cond_wait(cond, my_lock);
        }
        wait = 1;
    }
    
    Posted by ideawu at 2012-11-16 18:36:55
  • 2012-11-05

    HBase 在 Linux 下安装和配置

    Views: 38008 | No Comments

    1. 下载安装包

    Hbase 官网下载页面下载安装包, 然后

    tar xfz hbase-0.94.2.tar.gz
    cd hbase-0.94.2
    chmod ugo+x ./bin/*.sh
    

    注意, 要修改 bin/ 目录下的脚本的的权限, 不然启动出错.

    2. 配置 hbase-env.sh 和 hbase-default.xml

    两个配置文件中的一个 hbase-env.sh 已经存在于 conf/ 目录下, 但 hbase-default.xml 并不在 conf/ 目录, 需要从 ./src/main/resources/ 目录拷贝
    Continue reading »

    Posted by ideawu at 2012-11-05 12:10:54 Tags: , , ,
  • 2012-10-17

    转: Unix文本编辑器

    Views: 15560 | 3 Comments

    Unix大师听到学徒学习的计算机机房里出来痛苦的哭啼声,他打算要弄清这是怎么回事。

    他发现学徒明显的满脸痛苦,眼泪在眼圈里直打转。“出了什么事?”大师问道。“你哭什么?”

    “Unix系统太难用了。我每天要用四种不同的编辑器才能把学习任务完成,因为它们每种都不能单独的完成这些事情。”

    大师自信的点了点头,问,“如果让你去解决这个大麻烦,你打算怎么做?”

    学生认真的思考了几分钟,表情一下子多云转晴。他兴奋的说,“这个问题的解决方法很显然:我要开发一个有史以来最好的编辑器。这个编辑器具有目前这四种编辑器的所有功能,而且更好用,速度更快。由于有了我的这个新编辑器,世界将会变得更美好。”

    大师突然举起手,照着这个学徒的脑袋上打了一巴掌。大师年迈而且体弱,学徒并没感觉到很痛,但他对发生的事很震惊。“我做错了什么?”他问。

    “愚蠢!”大师说。“你以为我还想再学一种编辑器吗?”

    一下子,学徒被点化了。

    Posted by ideawu at 2012-10-17 14:25:07
  • 2012-09-07

    MySQL命令行按Delete键输出”~”的问题

    Views: 11327 | No Comments

    MySQL 默认用了一个叫 libedit 的东西来替代 libreadline, 如果按 Delete/Home/End 键, 就会输出 "~", 非常不好用. 解决方法很简单, 只要换回 libreadline 就 OK 了. 编译时加上参数:

     --without-readline\
     --without-libedit\
    

    执行 mysql –version 看输出.

    (正确)mysql Ver … using readline 5.1
    (错误)mysql Ver … using EditLine wrapper

    Posted by ideawu at 2012-09-07 12:26:54
|<<<123456789>>>| 5/15 Pages, 87 Results.