mongoDB配置主从同步

官方网站:
http://www.mongodb.org/

MongoDB 安裝,主从配置

一 MongoDB 安装

  1. [[email protected]_server src]# wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.0.tgz
  2. [[email protected]_server src]# tar xzvf mongodb-linux-x86_64-2.0.0.tgz
  3. [[email protected]_server src]# mv mongodb-linux-x86_64-2.0.0 /usr/local/mongodb
  4. [[email protected]_server src]# mkdir /usr/local/mongodb/data
  5. [[email protected]_server src]# touch /usr/local/mongodb/logs
  6. [[email protected]_server bin]# /usr/local/mongodb/bin/mongod --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork
  7. [[email protected]_server bin]#./mongo
  8. MongoDB shell version: 2.0.0
  9. connecting to:test
  10. > use test;
  11. switched to db test
  12. > exit
  13. bye
  14. [[email protected]_server bin]# netstat -anlpt | grep mongo
  15. tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 11504/mongod
  16. tcp 0 0 0.0.0.0:28017 0.0.0.0:* LISTEN 11504/mongod

注意:
如果报错
-bash: /usr/local/mongodb/bin/mongod: cannot execute binary file
说明你的服务器和mongodb 的版本不对应, 如果服务器是64位,下载x86_64的mongodb ,如果服务器是32位的, 下载i686的mongodb/

二 MongoDB 主从配置

1)实验环境
主:192.168.0.14
从:192.168.0.64

2)时间同步
两台机器做时间同步
[[email protected]_server src]# ntpdate time.windows.com

3)启动服务
master:192.168.0.14
启动命令
/usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

slave:192.168.0.64
启动命令
/usr/local/mongodb/bin/mongod --slave --source 192.168.0.14:27017 --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

4)测试主从
在主上插入数据
测试1:

  1. 测试1:
  2. 1 在主库上插入数据
  3. [[email protected] bin]#./mongo
  4. MongoDB shell version: 2.0.0
  5. connecting to:test
  6. > db.foo.save({"id":123456,"name":‘lizonggang‘})
  7. > db.foo.find({"id":123456})
  8. { "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }
  9. >
  10. 2 在从上查看数据(已有在主上插入的数据,说明主从成功)
  11. [[email protected]_server bin]#./mongo
  12. MongoDB shell version: 2.0.0
  13. connecting to:test
  14. > db.foo.find({"id":123456})
  15. { "_id": ObjectId("51c3f4b21399022afd992f39"),"id": 123456,"name":"lizonggang" }
  16. >

测试2:

  1. 1 在主库上插入数据
  2. > use elaindb
  3. switched to db elaindb
  4. > db.test.save({title:"This is a test!"})
  5. > db.test.find();
  6. { "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }
  7. >
  8. 2 在从库上验证数据
  9. [[email protected]_server bin]#./mongo
  10. MongoDB shell version: 2.0.0
  11. connecting to:test
  12. > use elaindb
  13. switched to db elaindb
  14. > db.test.find();
  15. { "_id": ObjectId("51c3f8f11a90c8da157c7f64"),"title":"This is a test!" }
  16. > db.printReplicationInfo();
  17. this is a slave, printing slave replication info.
  18. source: 192.168.0.14:27017
  19. syncedTo: Fri Jun 21 2013 14:59:10 GMT+0800 (CST)
  20. = 9 secs ago (0hrs)
  21. >
  22. > db.printSlaveReplicationInfo();
  23. source: 192.168.0.14:27017
  24. syncedTo: Fri Jun 21 2013 14:59:30 GMT+0800 (CST)
  25. = 16 secs ago (0hrs)
  26. >

测试3:

  1. 在这个状态下,slave 下是不可以插入数据的
  2. > db.test.save({title:"This is slave test!"})
  3. not master

5) 一些查询状态的语句

1)查询库

  1. > show dbs;
  2. elaindb 0.0625GB
  3. local 0.125GB
  4. test 0.0625GB

2)在从库上查询主库的地址

  1. > use local;
  2. switched to db local
  3. > db.sources.find()
  4. { "_id": ObjectId("51c3f5dd568d10529950b10d"),"host":"192.168.0.14:27017","source":"main","syncedTo": { "t": 1371797300000,"i": 1 } }
  5. >

3)查看主从复制状态

  1. > db.printReplicationInfo();
  2. configured oplog size: 47.6837158203125MB
  3. log length start to end: 1375secs (0.38hrs)
  4. oplog first event time: Fri Jun 21 2013 14:30:35 GMT+0800 (CST)
  5. oplog last event time: Fri Jun 21 2013 14:53:30 GMT+0800 (CST)
  6. now: Fri Jun 21 2013 14:53:32 GMT+0800 (CST)
  7. >

4)查看Collection状态

  1. > db.printCollectionStats();
  2. foo
  3. {
  4. "ns":"test.foo",
  5. "count": 1,
  6. "size": 56,
  7. "avgObjSize": 56,
  8. "storageSize": 4096,
  9. "numExtents": 1,
  10. "nindexes": 1,
  11. "lastExtentSize": 4096,
  12. "paddingFactor": 1,
  13. "flags": 1,
  14. "totalIndexSize": 8176,
  15. "indexSizes": {
  16. "_id_": 8176
  17. },
  18. "ok": 1
  19. }
  20. ---
  21. system.indexes
  22. {
  23. "ns":"test.system.indexes",
  24. "count": 1,
  25. "size": 64,
  26. "avgObjSize": 64,
  27. "storageSize": 4096,
  28. "numExtents": 1,
  29. "nindexes": 0,
  30. "lastExtentSize": 4096,
  31. "paddingFactor": 1,
  32. "flags": 0,
  33. "totalIndexSize": 0,
  34. "indexSizes": {
  35. },
  36. "ok": 1
  37. }
  38. ---
  39. >

6)应急
如果在应用中主挂掉了怎么办?
这个情况就需要,停止从库, 把从库以主库的启动命令起来就可以了。

1)停掉从库

kill -9 进程号

2)删除locat下文件

  1. rm mongodb/db/locat.*-rf

3)启动从库

  1. /usr/local/mongodb/bin/mongod --master --dbpath=/usr/local/mongodb/data --logpath=/usr/local/mongodb/logs --logappend --port=27017 --fork

7) MongoDB 增,删,改,查

  1. [[email protected] bin]#./mongo

  2. MongoDB shell version: 2.0.0
  3. connecting to:test
  4. > db.test.insert({"Name":"ymind","age": 8 }); #在test数据库里插入数据
  5. >
  6. > db.test.find({"Name":"ymind" } ); #查询数据
  7. { "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }
  8. > db.test.find({"age": 8} ); #查询数据
  9. { "_id": ObjectId("51c4187090db4e4751a3cd05"),"Name":"ymind","age": 8 }
  10. >
  11. >
  12. > db.test.update({"Name":"ymind"}, { "$set": { "age":"5" } } ); #修改数据
  13. > db.test.find({"Name":"ymind" } );
  14. { "Name":"ymind","_id": ObjectId("51c4187090db4e4751a3cd05"),"age":"5" }
  15. >
  16. > db.test.remove({"Name":"ymind" } ); #删除数据
  17. > db.test.find({"Name":"ymind" } );
  18. >
  19. >
时间: 2024-11-07 05:49:59

mongoDB配置主从同步的相关文章

Linux下Mongodb数据库主从同步配置

说明: 有两台已经安装完成的Mongodb数据库服务器,现在需要把一台设置为主库,另一台设置为从库,实现主从同步. 操作系统:CentOS 7.0 64位 MongoDB数据库版本:mongodb-linux-x86_64-2.6.5 准备工作:MongoDB数据库安装 具体操作: 一.配置MongoDB主库 以下操作在MongoDB主库服务器上进行 1.cd  /usr/local/mongodb/ #进入MongoDB安装目录 vi /usr/local/mongodb/mongodb.co

MYSQL配置主从同步

MYSQL配置主从同步 mysql主服务器配置 vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-links=0 lower_case_table_names=1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES #设置数据库标识 server-id=2 #任何一个事务提交之后就立即写入到磁盘中的二进制文件 syn

mongodb配置主从(官方已经不建议使用)

官方网站:http://www.mongodb.org/ 关于mongodb的主从,官方已经不建议使用,目前建议使用副本集: 但由于公司现有环境的原因,如果改用副本集,则需要修改数据,受限于现实的种种原因,只能做主从同步配置,所以这里记录一下mongodb的主从: mongodb的主从要注意的事项: 1.主服务器挂掉,从服务器不会自动取代主服务器. 2.主服务器挂掉后重启,从服务器则会重新同步数据,之前同步过来的数据被初始化. 3.综合以上两点,mongodb要随时做好数据备份,以免造成无法弥补

MySQL数据库配置主从同步

1.环境说明:DB master: 172.16.1.55 DB slave: 172.16.1.56 2.Server-id 配置(/etc/my.cnf): 主库配置server-id要比从库的ID小. 主库ID设置:Server-id=55 从库ID设置:Server-id=56 3.日志格式设置(/etc/my.cnf): log-bin=mysql-bin (主库.从库都设置) 4.主库授权从库的权限设置: grant replication slave on *.* to 'slav

MySQL配置主从同步过程记录

今天由于工作需要,配置了一下主从同步,这里记录一下配置过程,以备查阅. 事先度娘了一番,主从同步需要保证主从服务器MySQL版本一致(我的略有差别,主服务器版本5.5.31,从服务器版本5.5.19). 1.初始化表结构,将主服务器上的表结构全部备份导入到从服务器上,之后,之后主服务器暂时不要做数据修改操作. 2.下载备份文件,并导入到从服务器,方式有很多,这里不再赘述. 3.修改主服务器master的MySQL配置文件,开启主服务器二进制日志,并设置服务器唯一ID,编辑/etc/my.cnf,

详细配置主从同步的方法

1)安装mysql 我们在ubuntu中已经有安装一台mysql了,现在使用docker安装另外一台mysql 获取mysql的镜像,主从同步尽量保证多台mysql的版本相同,我们的ubuntu中存在的mysql是5.7.22版本,所以获取5.7.22版本的镜像 docker image pull mysql:5.7.22 或 docker load -i mysql_docker_5722.tar 运行mysql docker镜像,需要在宿主机中建立文件目录用于mysql容器保存数据和读取配置

centos下面安装mysql 配置主从同步

步骤1: 假设    192.168.20.52是主库.    192.168.20.53是主库. 可变部分   192.168.20根据您Ip自己设置 . p4ssword 密码   repl 账户名 在哪里执行? 登陆mysql 执行 GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* TO [email protected]'192.168.20.%' IDENTIFIED BY 'p4ssword'; 步骤2 vim /etc/my.cnf    新增

MySQL主从同步(复制)的配置

1.主从复制的原理: *Master,记录数据更改操作 - 启用binlog记录模式 - 允许Slave读取binlog日志 *Slave运行2个同步线程 - Slave_IO:负责连接Master,复制其binlog日志文件到本机的relay-log文件 - Slave_SQL:执行本机relay-log文件里的SQL语句,重现Master的数据操作 2.基本构建思路: 1)初始化现有库:将主库导入从库,确保数据一致性 2)配置Master,主服务器:调整运行参数,授权一个同步用户 3)配置S

Linux服务器集群架构部署搭建(六)数据库服务器MySQL编译安装及主从同步配置(1)

命运是大海,当你能够畅游时,你就要纵情游向你的所爱,因为你不知道狂流什么会到来,卷走一切希望与梦想. 作者:燁未央_Estelle声明:测试学习,不足之处,欢迎指正. 第一章 数据库企业应用场景 1.1 数据库的企业应用 MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言.MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小.速度快.总