• CentOS6 安装MongoDB及服务器端配置

    运行yum命令查看MongoDB的包信息

    um info mongo-10gen

    (提示没有相关匹配的信息,) 说明你的centos系统中的yum源不包含MongoDB的相关资源,所以要在使用yum命令安装MongoDB前需要增加yum源,也就是在 /etc/yum.repos.d/目录中增加 *.repo yum源配置文件

    vi /etc/yum.repos.d/10gen.repo,输入下面的语句:

    [10gen]
    
    name=10gen Repository
    
    baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
    
    gpgcheck=0

    做好yum源的配置后,如果配置正确执行下面的命令便可以查询MongoDB相关的信息:

    查看mongoDB的服务器包的信息

    yum info mongo-10gen-server

    安装MongoDB的服务器端和客户端工具

    yum install mongo-10gen-server
    
    yum install mongo-10gen
  • centos 6.4 安装Atomic源

    centos6.4 默认源,163源都不给力

    安装Atomic源

    wget -q -O – http://www.atomicorp.com/installers/atomic | sh

    安装完后在/etc/yum.repos.d/目录会有一个atomic.repo文件。
    Atomic仓库支持哪些软件可以到这个地址查看:http://www.atomicorp.com/channels/atomic/
    有php、mysql、nginx、openvas、memcached、php-zend-guard-loader等软件,版本也比较新
  • MongoDB 地理位置索引的实现原理

    地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B+Tree的形式,下文将为你描述。

    首先假设我们将需要索引的整个地图分成16×16的方格,如下图(左下角为坐标0,0 右上角为坐标16,16):

    map1

    单纯的[x,y]的数据是无法建立索引的,所以MongoDB在建立索引的时候,会根据相应字段的坐标计算一个可以用来做索引的hash值,这个值叫做geohash,下面我们以地图上坐标为[4,6]的点(图中红叉位置)为例。

    我们第一步将整个地图分成等大小的四块,如下图:

    map2

    划分成四块后我们可以定义这四块的值,如下(左下为00,左上为01,右下为10,右上为11):

    01 11
    00 10

    这样[4,6]点的geohash值目前为 00

    然后再将四个小块每一块进行切割,如下:

    map3

    这时[4,6]点位于右上区域,右上的值为11,这样[4,6]点的geohash值变为:0011

    继续往下做两次切分:

    map4

    map5

    最终得到[4,6]点的geohash值为:00110100

    这样我们用这个值来做索引,则地图上点相近的点就可以转化成有相同前缀的geohash值了。

    我们可以看到,这个geohash值的精确度是与划分地图的次数成正比的,上例对地图划分了四次。而MongoDB默认是进行26次划分,这个值在建立索引时是可控的。具体建立二维地理位置索引的命令如下:

    db.map.ensureIndex({point : "2d"}, {min : 0, max : 16, bits : 4})

    其中的bits参数就是划分几次,默认为26次。

  • mongoDB主从同步笔记

    同步之前做个笔记

    centos下yum方式安装最新版本的mongodb

    vi /etc/yum.repos.d/10gen.repo,输入下面的语句:

    [10gen]
    
    name=10gen Repository
    
    baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
    
    gpgcheck=0

    查看最新版本信息:

    yum info mongo-10gen-server

    安装:

    yum install mongo-10gen-server

    升级:

    yum update mongo-10gen mongo-10gen-server

    启动:service mongod start


    主从服务器各自安装好带连接认证的mongodb

    use admin
    
    db.addUser('sa','sa')

    1.首先我们备份好数据库

    备份数据库foo

    mongodump -uroot -p -d foo -o /data/backup/database/

    附带一个还原命令:

    (mongorestore  -uroot -p -d foo –drop /data/backup/database/)

    2.主从加同步认证账号:

    主服务器和从服务器必须开启安全认证:–auth, 主服务器和从服务器的admin数据库中必须有全局用户, 然后主服务器的local数据库和从服务器的local数据均有名为repl且密码相同的用户名。

    use local
    db.addUser('repl','repl')

    主服务器:
    vi /etc/mongo.conf

    master = true
    source = 172.16.1.22,172.16.1.23(从库ip)

    从服务器:

    vi /etc/mongo.conf<
    slave = true
    source =172.16.1.11:27017

    各自重启服务器:

    3.查看数据是否全部同步过来了

    附上:mongodb的备份脚本

    #!/bin/sh
    
    today=$(date +"%Y%m%d")
    
    old7day=$(date -d "7 days ago" +"%Y%m%d")
    
    cd /data/backup/database/
    
    /usr/local/mongodb/bin/mongodump -uroot -ppassword -o /data/backup/database/
    
    zip -rP 888888 /data/backup/database/xz_ad_db_${today}.zip foo
    
    zip -rP 888888 /data/backup/database/admin_db_${today}.zip admin
    
    rm -rf /data/backup/database/foo
    
    rm -rf /data/backup/database/admin
  • 利用Bucardo 将PostgresSQL数据同步到MongoDB

    Bucardo 是一个用 Perl 语言编写的 PostgreSQL的多Master节点复制系统
    它支持任意方式的同步,以下是同步到mongodb的说明
    参考:http://blog.endpoint.com/2011/06/mongodb-replication-from-postgres-using.html