Docker Mongo数据库主从同步配置方法

一、具体操作方法

1、启两个Mongo容器

docker run --name mongo1 -p 21117:27017 -d mongo --noprealloc --smallfiles --replSet rs1
docker run --name mongo2 -p 22117:27017 -d mongo --noprealloc --smallfiles --replSet rs1

2、查看正在运行的容器

docker ps | grep mongo

3、查看mongo1、mongo2容器ip

docker inspect mongo1 | grep IPA

4、使用本机(宿主机)mongo客户端连接到21117端口(即连接到mongo1容器)

mongo --port 21117

5、开始配置 复制集的成员信息

 myconf = {"_id":"rs1","members":[{"_id":0,"host":"172.17.0.13:27017"},{"_id":1,"host":"172.17.0.14:27017"}]}

6、初始化同步复制集群

rs.initiate(myconf)

注意:在启动容器时,--replSet rs1 这个值mongo1和mongo2要保持一致,否则在初始化同步时,会出错。

7、查看当前复制集的节点信息

rs.isMaster()

可以看出连接到的容器ip是172.17.0.13 也可以看见谁是主节点

查看状态

rs.status()

查看配置

rs.conf()

8、另外在本地再开一个终端 连接到第二个容器

mongo --port 22117

查看当前master

rs.isMaster()

可以看到主节点的信息 和上个容器的信息一致

rs.status()
{
    "set" : "rs1",
    "date" : ISODate("2018-07-07T01:53:14.330Z"),
    "myState" : 2,
    "term" : NumberLong(1),
    "syncingTo" : "172.17.0.13:27017",
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1530928387, 1),
            "t" : NumberLong(1)
        },
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1530928387, 1),
            "t" : NumberLong(1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1530928387, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1530928387, 1),
            "t" : NumberLong(1)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "172.17.0.13:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 310,
            "optime" : {
                "ts" : Timestamp(1530928387, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1530928387, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-07-07T01:53:07Z"),
            "optimeDurableDate" : ISODate("2018-07-07T01:53:07Z"),
            "lastHeartbeat" : ISODate("2018-07-07T01:53:12.960Z"),
            "lastHeartbeatRecv" : ISODate("2018-07-07T01:53:12.960Z"),
            "pingMs" : NumberLong(0),
            "electionTime" : Timestamp(1530928094, 1),
            "electionDate" : ISODate("2018-07-07T01:48:14Z"),
            "configVersion" : 1
        },
        {
            "_id" : 1,
            "name" : "172.17.0.14:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 366,
            "optime" : {
                "ts" : Timestamp(1530928387, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-07-07T01:53:07Z"),
            "syncingTo" : "172.17.0.13:27017",
            "configVersion" : 1,
            "self" : true
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1530928387, 1)
}

9、如果在从节点此时查看数据库会出错 ,信息显示不是主节点

show dbs;

设置从节点可以读

db.getMongo().setSlaveOk();

或者用

rs.slaveOk()

10、在主节点mongo1中插入数据

show dbs;

use test;

db.user1.insert({"name":"mongodb is user1"})

db.user2.insert({"name":"mongodb is user2"})

11、在从节点mongo2中查看

show dbs;

use test;

show collections;

db.user1.find()

db.user2.find()

可以看到在mongo1插入的数据,同步到了mongo2数据库来了~

13、此时如果在mongo2从节点中插入数据

db.user3.insert({"name":"mongodb is user3"})

可以看到提示不是master主节点,无法写数据~

到此,就给大家介绍完了如何通过docker+mongo来实现主从同步的操作方法,喜欢的可以关注公众号哦~

原文地址:https://www.cnblogs.com/jinjiangongzuoshi/p/9301062.html

时间: 2024-11-08 09:51:48

Docker Mongo数据库主从同步配置方法的相关文章

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

linux下mysql数据库主从同步配置

说明: 操作系统:CentOS 5.x 64位 MySQL数据库版本:mysql-5.5.35 MySQL主服务器:192.168.21.128 MySQL从服务器:192.168.21.129 准备篇: 说明:在两台MySQL服务器192.168.21.128和192.168.21.129上分别进行如下操作 备注: 作为主从服务器的MySQL版本建议使用同一版本! 或者必须保证主服务器的MySQL版本要高于从服务器的MySQL版本! 一.配置好IP.DNS .网关,确保使用远程连接工具能够连接

mysql数据库主从同步配置教程--数据库同步

背景: 最近有一个mysql数据库同步的需求,我用了mysql主从同步的方法来实现.下面把步骤记录一下. 环境和拓扑 操作系统:Centos6.6 X64 mysql版本:5.1.73 Master: 10.6.1.210 Slave:  10.6.1.211 需求: 实现Master上test库同步到Slave上,但是禁止同步该库下的AA表 1.配置Master上的my.cnf #vim  /etc/my.cnf 添加内容到[mysqld]下,设定只同步test 数据库: [mysqld] l

MySQL数据库主从同步配置

Mysql主从安装配置 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # 确保有如下行 server-id = 1 log-bin=mysql-bin binlog-do-db=mysql  #需要备份的数据库名,如果备份多个数据库,重复设置这个选项即可 binlog-ignore-db=mysql  #不需要备份的数据库名,如果备份多个数据库,

mysql主从同步配置方法和原理

mysql主从复制试验环境:    1.CentOS5.8 x86_64位 采用最小化安装,系统经过了基本优化篇    2.mysql版本: 5.1.73-log ,同台服务器多实例,安装方法参考:mysql多实例安装方法 3.源码包存放位置:/home/oldboy/tools    4.源码包编译安装位置:/application/一.修改master配置    1.修改my.cnf配置         vi /data/3306/my.cnf         egrep "log-bin|

简单的MySQL数据库主从同步配置

Master配置: 代码如下 复制代码 log-bin = mysql-binserver-id = 1binlog-do-db = powerdns #要同步的数据库 Master新增slave账号: 代码如下 复制代码 mysql> GRANT replication slave ON *.* TO 'slave'@'192.168.1.2' IDENTIFIED BY 'passwd'; mysql> FLUSH privileges; 重启Master MySQL,查看Master状态

centos 5.4中mysql主从同步配置方法

安装环境•centos 5.4•mysql 5.1.xx 采用rpm直接安装•xtrabackup 1.2.22 采用rpm直接安装1. Master:/etc/my.cnf  代码如下 复制代码 [mysqld]server-id = 1log-bininnodb_flush_log_at_trx_commit=1sync_binlog=1datadir=/var/lib/mysql character-set-server=utf8init_connect='SET NAMES utf8'

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

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

MySQL主从同步配置实现数据库备份

作为数据库的主要备份手段,主从同步能实现从主库(即当前使用的业务数据库)异步同步数据到从库(备份库),当主库数据库或主机出现当机不能启动时,可以通过切换到从库实现业务系统的快速恢复. 首先介绍一下我的环境,我有一个已经使用中的MySQL数据库A,然后我新装了一台MySQL数据库B作为A的从库. 一.master库A设置 先修改mysql的配置 vim /etc/my.cnf 插入下面2行 server-id=1   #这个ID是唯一的,不能和其他的主库或者从库一样 log-bin=mysql-b