准备环境:
操作系统:Debian
Debian下载地址:
cdimage.debian.org/mirror/cdim…
选择第一个下载
安装好3个Debian虚拟机系统,IP地址设置为
192.168.43.11,192.168.43.12,192.168.43.13。
网络配置设置为桥接模式,ip地址要同一个网段才OK,我的手机热点网段就是192.168.43.xxx的
准备mongodb安装包:mongodb-linux-x86_64-debian92-4.2.1.tgz
链接:pan.baidu.com/s/1HaWJa-EQ… 密码:diil
怎么安装Debian系统:
jingyan.baidu.com/article/6d7…
第一步
为Debian系统添加软件源:
nano /etc/apt/sources.list
添加中科大的源
#科大源
deb http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian/ stretch-backports main non-free contrib
deb http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
deb-src http://mirrors.ustc.edu.cn/debian-security/ stretch/updates main non-free contrib
ctrl+x , 按y保存
第二步
这一步,3台机子都要做下面的操作
注意注意,每一台机子都有shared1,shared2,shared3目录以及配置文件,这只是3个分片,与多少台主机无关!我们也设置成5个分片6个分片也是可以的。
更新源:
apt-get update
安装libcurl4的软件包:
apt-get install libcurl4-openssl-dev
将mongodb-linux-x86_64-debian92-4.2.1.tgz上传至 /usr/local 目录下,然后按照下面命令创建目录:
cd /usr/local
tar -zxvf mongodb-linux-x86_64-debian92-4.2.1.tgz
mv mongodb-linux-x86_64-debian92-4.2.1.tgz mongodb
cd mongodb
mkdir -p /usr/local/mongodb/db
mkdir -p /usr/local/mongodb/log
chmod 777 db log
mkdir -p /usr/local/mongodb/shared1/db
mkdir -p /usr/local/mongodb/shared1/log
mkdir -p /usr/local/mongodb/shared2/db
mkdir -p /usr/local/mongodb/shared2/log
mkdir -p /usr/local/mongodb/shared3/db
mkdir -p /usr/local/mongodb/shared3/log
mkdir -p /usr/local/mongodb/mongos
创建mongodb配置文件,以及分片的3个配置文件,还有路由服务mongos配置文件:
cd /usr/local/mongodb
touch mongodb.conf shared1.conf shared2.conf shared3.conf mongos.conf
接下来编辑配置文件:
cd /usr/local/mongodb
nano mongodb.conf
添加以下内容:
pidfilepath=/usr/local/mongodb/log/configsvr.pid
dbpath=/usr/local/mongodb/db
logpath=/usr/local/mongodb/log/mongodb.log
logappend=true
bind_ip=0.0.0.0
port=27017
fork=true
auth=false
journal=true
storageEngine=wiredTiger
configsvr=true
replSet=configs
maxConns=10000
ctrl+x , 按y保存回车
编辑shared1.conf,shared2.conf,shared3.conf配置文件
nano shared1.conf
添加以下内容:
pidfilepath=/usr/local/mongodb/shared1/log/shared1.pid
dbpath=/usr/local/mongodb/shared1/db
logpath=/usr/local/mongodb/shared1/log/shared1.log
logappend = true
bind_ip = 0.0.0.0
port = 30001
fork = true
replSet=shared1
shardsvr = true
maxConns=10000
storageEngine=wiredTiger
nano shared2.conf
添加以下内容:
pidfilepath=/usr/local/mongodb/shared2/log/shared2.pid
dbpath=/usr/local/mongodb/shared2/db
logpath=/usr/local/mongodb/shared2/log/shared2.log
logappend = true
bind_ip = 0.0.0.0
port = 30002
fork = true
replSet=shared2
shardsvr = true
maxConns=10000
storageEngine=wiredTiger
nano shared3.conf
添加以下内容:
pidfilepath=/usr/local/mongodb/shared3/log/shared3.pid
dbpath=/usr/local/mongodb/shared3/db
logpath=/usr/local/mongodb/shared3/log/shared3.log
logappend = true
bind_ip = 0.0.0.0
port = 30003
fork = true
replSet=shared3
shardsvr = true
maxConns=10000
storageEngine=wiredTiger
配置路由服务的配置文件:
nano mongos.conf
添加以下内容:
pidfilepath = /usr/local/mongodb/mongos/log/mongos.pid
logpath = /usr/local/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 40000
fork = true
configdb = configs/192.168.43.11:27017,192.168.43.12:27017,192.168.43.13:27017
maxConns=10000
以上的配置3台机子都要配置
配置完成以后 3台机子都执行以下命令,以启动mongodb服务:
cd /usr/local/mongodb/bin
./mongod -f /usr/local/mongodb/mongodb.conf
第三步
在其中一个主机,这里选第一个主机
cd /usr/local/mongodb/bin
连接mongo
./mongo --host 192.168.43.11 --port 27017
切换数据库
use admin
初始化复制集
rs.initiate({_id:"configs",members:[{_id:0,host:"192.168.43.11:27017"},{_id:1,host:"192.168.43.12:27017"}, {_id:2,host:"192.168.43.13:27017"}]})
其中_id:"configs"的configs是上面mongodb.conf配置文件里的复制集名称,把三台服务器的配置服务组成复制集
查看状态
rs.status()
等几十秒左右,执行上面的命令查看状态,三台机器的配置服务就已形成复制集,其中1台为PRIMARY,其他2台为SECONDARY
第四步
这一步,3台机子都要做以下操作
./mongod -f /usr/local/mongodb/shared1.conf
./mongod -f /usr/local/mongodb/shared2.conf
./mongod -f /usr/local/mongodb/shared3.conf
第五步
在其中一台主机上操作:
连接mongo:
./mongo --host 192.168.43.11 --port 30001
切换数据库
use admin
初始化复制集
rs.initiate({_id:"shared1",members:[{_id:0,host:"192.168.43.11:30001"},{_id:1,host:"192.168.43.12:30001"},{_id:2,host:"192.168.43.13:30001"}]})
下面同理,只是连接的端口不同而已
./mongo --host 192.168.43.11 --port 30002
use admin
rs.initiate({_id:"shared2",members:[{_id:0,host:"192.168.43.11:30002"},{_id:1,host:"192.168.43.12:30002"},{_id:2,host:"192.168.43.13:30002"}]})
./mongo --host 192.168.43.11 --port 30003
use admin
rs.initiate({_id:"shared3",members:[{_id:0,host:"192.168.43.11:30003"},{_id:1,host:"192.168.43.12:30003"},{_id:2,host:"192.168.43.13:30003"}]})
第六步
这一步要在3台机子执行操作
路由服务部署
./mongos -f /usr/local/mongodb/mongos.conf
第七步
在其中一个主机操作:
启动分片功能:
连接mongo:
./mongo --host 192.168.43.11 --port 40000
切换数据库
use admin
添加分片,只需在一台机器执行即可
sh.addShard("shared1/192.168.43.11:30001,192.168.43.12:30001,192.168.43.13:30001")
sh.addShard("shared2/192.168.43.11:30002,192.168.43.12:30002,192.168.43.13:30002")
sh.addShard("shared3/192.168.43.11:30003,192.168.43.12:30003,192.168.43.13:30003")
查看集群状态:
mongos> sh.status()
如果要创建mongodb的用户名和密码那么必须要把mongos.conf,shared{1/2/3}.conf,配置文件的replSet=xxx这一句注释掉。要看连哪个数据库进行操作,一般对数据库写入操作是连接路由服务的数据库的 这里先不创建用户,直接连接
在192.168.43.13 的路由节点创建一个数据库和表
发现,所有主机,在分片数据库shared2中同步了数据。
到底分配到shared1还是shared2还是shared3是不确定的,随机的。
写入数据测试: use test
for(i=1;i<=30000;i++){db.user.insert({"id":i,"name":"jack"+i})}
也可以3台机子同时执行,一个机子插入10000条数据,可以节省很多时间