MongoDB安装

本次安装操作系统:CentOS7.4,数据库版本:3.6.2企业版

  • 系统升级及依赖安装

# 更新软件包,我的是最小安装的centos7.4(建议操作)

$ yum update

# 安装依赖(必须安装)

$ yum install net-snmp

单实例安装

创建用户及目录


# 切换用户root

$ su root

# 创建用户:mongo_single

$ adduser mongo_single

# 创建日志目录

$ mkdir -p /data/log

# 创建数据库目录

$ mkdir -p /data/db

# 将目录归属者变更为mongo_single

$ chown mongo_single:mongo_single /data/log /data/db

下载及解压


# 切换用户mongo_single

$ su mongo_single

# 切换到目录/home/mongo_single下

$ cd

# 使用wget下载下载软件包

$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 解压

$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 更改解压后目录名称

$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2

创建配置文件

官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/


$ cd mongodb3.6.2/

$ vim mongod.cfg

配置文件内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27017

#以后台进程方式启动fork=true

processManagement:

  fork: true

创建启动脚本


# 切换路径到/home/mongo_single

$ cd

$ vim run_mongod.sh

启动脚本文件内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod.cfg

启动MongoDB


$ chmod 751 run_mongod.sh

$ ./run_mongod.sh

如果启动正常会显示以下内容:


[mongo_single@localhost ~]$ ./run_mongod.sh

about to fork child process, waiting until server is ready for connections.

forked process: 21053

child process started successfully, parent exiting

验证是否启动

  • 端口查看验证

# 已监听27017端口,则启动成功!

$ ss -tanl

single_01.png
  • 登入验证

# 能正常登入,则安装成功!

$ mongodb3.6.2/bin/mongo

single_02.png

复制集安装

使用用户mongo_repl,复制集信息如下:

|复制集名称|节点信息|

|:--|---:|

|myReplSet|192.168.56.101:27007|

|myReplSet|192.168.56.101:27008|

|myReplSet|192.168.56.101:27008|

创建用户及目录


# 切换root用户

$ su root

# 创建用户mongo_repl

$ adduser mongo_repl

# 创建日志目录

$ mkdir -p /data/log07 /data/log08 /data/log09

# 创建数据库目录

$ mkdir -p /data/db07 /data/db08 /data/db09

# 将目录归属者变更为mongo_repl

$ chown mongo_repl:mongo_repl /data/log07 /data/log08 /data/log09 /data/db07 /data/db08 /data/db09

# 查看目录信息

$ ls -l /data

repl_01.png

下载解压


# 切换用户

$ su mongo_repl

# 切换到目录/home/mongo_repl下

$ cd

#使用wget下载下载软件包

$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 解压

$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 更改解压后目录名称

$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2

创建配置文件

官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/

创建命令


$ cd mongodb3.6.2/

# 分别创建mongod07.cfg,mongod08.cfg,mongod09.cfg

$ vim mongod07.cfg

$ vim mongod08.cfg

$ vim mongod09.cfg

mongod07.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log07/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db07

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27007

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: myReplSet

mongod08.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log08/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db08

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27008

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: myReplSet

mongod09.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log09/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db09

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27009

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: myReplSet

创建启动脚本

创建命令


# 切换到目录/home/mongo_repl

$ cd

# 分别创建启动脚本run_mongod07.sh,run_mongod08.sh,run_mongod09.sh

$ vim run_mongod07.sh

$ vim run_mongod08.sh

$ vim run_mongod09.sh

run_mongod07.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod07.cfg

run_mongod08.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod08.cfg

run_mongod09.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod09.cfg

启动MongoDB


$ chmod 751 run_mongod07.sh

$ chmod 751 run_mongod08.sh

$ chmod 751 run_mongod09.sh

$ ./run_mongod07.sh

$ ./run_mongod08.sh

$ ./run_mongod09.sh

如果启动正常会显示以下内容:

repl_02.png

复制集配置


# 连接27007端口的mongodb,-host:IP地址,-port:端口

$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27007

# 复制集初始化

rs.initiate(

  {

      _id: "myReplSet",

      version: 1,

      members: [

        { _id: 0, host : "192.168.56.101:27007" },

        { _id: 1, host : "192.168.56.101:27008" },

        { _id: 2, host : "192.168.56.101:27009" }

      ]

  }

)

如果出现下图则复制集安装成功!

repl_03.png

复制集常用命令

常用命令可以通过rs.help()获取

官方文档:https://docs.mongodb.com/manual/reference/method/js-replication/

| 命令 |介绍 |

|:-----|----------:|

|rs.status()|查看复制集状态

|rs.initiate(cfg)|初始化复制集,本教程采用此方式

|rs.conf()|获取复制集配置信息

|rs.reconfig(cfg)|更新复制集的配置信息

|rs.add(hostportstr)|向复制集添加一个新节点

|rs.remove(hostportstr)|从复制集移除一个节点

|rs.stepDown|主节点主动放弃主节点位置,提升其余节点为主节点

|rs.slaveOk()|允许从节点查询,默认从节点无法查询

|rs.printReplicationInfo()|查看oplog信息

|rs.printSlaveReplicationInfo()|查看从节点延时

|db.isMaster()|查看谁为主节点

分片安装

概述

使用用户mongo_shard,mongos使用30000端口,

复制集具体内容如下表:

|复制集名 |节点信息|

|:-----|--------:|

|confogRepl|192.168.56.101:27001|

|confogRepl|192.168.56.101:27002|

|confogRepl|192.168.56.101:27003|

|shard1Repl|192.168.56.101:27017|

|shard1Repl|192.168.56.101:27018|

|shard1Repl|192.168.56.101:27019|

|shard2Repl|192.168.56.101:27027|

|shard2Repl|192.168.56.101:27028|

|shard2Repl|192.168.56.101:27029|

创建用户及目录


# 切换root用户

$ su root

# 用户名可随意起,此处使用mongo_shard

$ adduser mongo_shard

# 创建日志目录

$ mkdir -p /data/logs /data/log01 /data/log02 /data/log03 /data/log17 /data/log18 /data/log19 /data/log27 /data/log28 /data/log29

# 创建数据库目录

$ mkdir -p /data/db01 /data/db02 /data/db03 /data/db17 /data/db18 /data/db19 /data/db27 /data/db28 /data/db29

# 将目录归属者变更为mongo_shard

$ cd /data

$ chown mongo_shard:mongo_shard logs log01 log02 log03 log17 log18 log19 log27 log28 log29 db01 db02 db03 db17 db18 db19 db27 db28 db29

# 查看目录信息

$ ls -l /data

shard_01.png

下载解压


# 切换用户

$ su mongo_shard

# 切换到目录/home/mongo_shard

$ cd

#使用wget下载下载软件包

$ wget https://downloads.mongodb.com/linux/mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 解压

$ tar -xzvf mongodb-linux-x86_64-enterprise-rhel70-3.6.2.tgz

# 更改解压后目录名称

$ mv mongodb-linux-x86_64-enterprise-rhel70-3.6.2 mongodb3.6.2

创建配置文件

官方配置文档: https://docs.mongodb.com/manual/reference/configuration-options/

复制集configRepl配置文件

创建命令


$ cd mongodb3.6.2/

# 创建复制集configRepl的三个配置文件mongod01.cfg,mongod02.cfg,mongod03.cfg

$ vim mongod01.cfg

$ vim mongod02.cfg

$ vim mongod03.cfg

mongod01.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log01/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db01

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27001

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: configRepl

#shard配置,角色为配置服务器

sharding:

  clusterRole: configsvr

mongod02.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log02/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db02

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27002

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: configRepl

#shard配置,角色为配置服务器

sharding:

  clusterRole: configsvr

mongod03.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log03/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db03

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27003

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: configRepl

#shard配置,角色为配置服务器

sharding:

  clusterRole: configsvr

复制集shard1Repl配置文件

创建命令


# 创建复制集shard1Repl的三个配置文件mongod17.cfg,mongod18.cfg,mongod19.cfg

$ vim mongod17.cfg

$ vim mongod18.cfg

$ vim mongod19.cfg

mongod17.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log17/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db17

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27017

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard1Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

mongod18.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log18/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db18

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27018

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard1Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

mongod19.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log19/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db19

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27019

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard1Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

复制集shard2Repl配置文件

创建命令


# 创建复制集shard2Repl的三个配置文件mongod27.cfg,mongod28.cfg,mongod29.cfg

$ vim mongod27.cfg

$ vim mongod28.cfg

$ vim mongod29.cfg

mongod27.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log27/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db27

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27027

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard2Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

mongod28.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log28/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db28

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27028

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard2Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

mongod29.cfg内容


systemLog:

    destination: file

#配置日志所在位置

    path: /data/log29/mongod.log

storage:

#配置数据所在位置

    dbPath: /data/db29

net:

#配置IP(自行更改),若不配置访问不通,3.6起新特性

  bindIp: 127.0.0.1,192.168.56.101

  port: 27029

#以后台进程方式启动fork=true

processManagement:

  fork: true

#副本集配置

replication:

  oplogSizeMB: 1024

  replSetName: shard2Repl

#shard配置,角色为分片服务器

sharding:

  clusterRole: shardsvr

mongos配置文件

创建命令


# 创建mongos配置文件mongos.cfg

$ vim mongos.cfg

mongos.cfg内容


systemLog:

    destination: file

    path: /data/logs/mongos.log

processManagement:

    fork: true

net:

    bindIp: 192.168.56.101

    port: 30000

sharding:

    configDB: configRepl/192.168.56.101:27001,192.168.56.101:27002,192.168.56.101:27003

创建启动脚本

复制集configRepl启动脚本

创建命令


# 切换到目录/home/mongo_shard

$ cd

# 创建configRepl的三个run_mongod01.sh,run_mongod02.sh,run_mongod03.sh

$ vim run_mongod01.sh

$ vim run_mongod02.sh

$ vim run_mongod03.sh

run_mongod01.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod01.cfg

run_mongod02.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod02.cfg

run_mongod03.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod03.cfg

复制集shard1Repl启动脚本

创建命令


# 创建shard1Repl的三个run_mongod17.sh,run_mongod18.sh,run_mongod19.sh

$ vim run_mongod17.sh

$ vim run_mongod18.sh

$ vim run_mongod19.sh

run_mongod17.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod17.cfg

run_mongod18.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod18.cfg

run_mongod19.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod19.cfg

复制集shard2Repl启动脚本

创建命令


# 创建shard2Repl的三个run_mongod27.sh,run_mongod28.sh,run_mongod29.sh

$ vim run_mongod27.sh

$ vim run_mongod28.sh

$ vim run_mongod29.sh

run_mongod27.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod27.cfg

run_mongod28.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod28.cfg

run_mongod29.sh内容


mongodb3.6.2/bin/mongod --config mongodb3.6.2/mongod29.cfg

mongos启动脚本

创建命令


# 创建mongos启动脚本run_mongos.sh

$ vim run_mongos.sh

run_mongos.sh内容


mongodb3.6.2/bin/mongos --config mongodb3.6.2/mongos.cfg

启动MongoDB


$ chmod 751 run_mongod01.sh run_mongod02.sh run_mongod03.sh run_mongod17.sh run_mongod18.sh run_mongod19.sh run_mongod27.sh run_mongod28.sh run_mongod29.sh run_mongos.sh

$ ./run_mongod01.sh

$ ./run_mongod02.sh

$ ./run_mongod03.sh

$ ./run_mongod17.sh

$ ./run_mongod18.sh

$ ./run_mongod19.sh

$ ./run_mongod27.sh

$ ./run_mongod28.sh

$ ./run_mongod29.sh

如果启动正常会显示以下内容:

shard_02.png

复制集配置

初始化configRepl


# 连接27001端口的mongodb,-host:IP地址,-port:端口

$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27001

# 复制集初始化

rs.initiate(

  {

      _id: "configRepl",

      version: 1,

      members: [

        { _id: 0, host : "192.168.56.101:27001" },

        { _id: 1, host : "192.168.56.101:27002" },

        { _id: 2, host : "192.168.56.101:27003" }

      ]

  }

)

如果出现下图则复制集安装成功!

shard_03.png

初始化shard1Repl


# 按Ctrl+c断开mongo连接

# 连接27017端口的mongodb,-host:IP地址,-port:端口

$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27017

# 复制集初始化

rs.initiate(

  {

      _id: "shard1Repl",

      version: 1,

      members: [

        { _id: 0, host : "192.168.56.101:27017" },

        { _id: 1, host : "192.168.56.101:27018" },

        { _id: 2, host : "192.168.56.101:27019" }

      ]

  }

)

如果出现下图则复制集安装成功!

shard_03_1.png

初始化shard2Repl


# 按Ctrl+c断开mongo连接

# 连接27027端口的mongodb,-host:IP地址,-port:端口

$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 27027

# 复制集初始化

rs.initiate(

  {

      _id: "shard2Repl",

      version: 1,

      members: [

        { _id: 0, host : "192.168.56.101:27027" },

        { _id: 1, host : "192.168.56.101:27028" },

        { _id: 2, host : "192.168.56.101:27029" }

      ]

  }

)

如果出现下图则复制集安装成功!

shard_03_2.png

启动Mongos


$ ./run_mongos.sh

如果出现下图则mongos启动成功~

shard_04.png

配置分片


# 连接到mongos

$ mongodb3.6.2/bin/mongo -host 192.168.56.101 -port 30000

# 添加分片

MongoDB Enterprise mongos> sh.addShard("shard1Repl/192.168.56.101:27017")

MongoDB Enterprise mongos> sh.addShard("shard2Repl/192.168.56.101:27027")

执行效果图:

shard_05.png

至此,分片安装结束!

分片常用命令

常用命令可以通过sh.help()获取

官方文档:https://docs.mongodb.com/manual/reference/method/js-sharding/

| 命令 |介绍 |

|:-----|-------:|

|sh.addShard(host)|向集群中添加分片

|sh.enableSharding(dbname)|开启某一数据库的分片功能

|sh.getBalancerState()|获取均衡器状态

|sh.setBalancerState(false)|设置均衡器状态

|sh.shardCollection(fullName,key,unique,options)|设置集合分片策略

|sh.addShardTag("shardName", "tagName");|添加tag

|sh.addTagRange();|设定tag范围

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,589评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,615评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,933评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,976评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,999评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,775评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,474评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,359评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,854评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,007评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,146评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,826评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,484评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,029评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,153评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,420评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,107评论 2 356

推荐阅读更多精彩内容