mongodb入門からアプリケーション(一)--インストール編
MongoDB4.2.*のインストール
本編内容概要:【長編による不快感を避けるために、MongoDBインストール+基本文法とdemo+設計応用と企業例の3つの部分に分けられる】
一、MongoDBのインストール
1. スタンドアロンシングルノードのインストール
2. MongoDBクラスタのインストール(4.2トランザクションのサポートを開始しますが、クラスタをインストールする必要があります.ローカルではシングルマシンマルチポートがクラスタのケースです)
3. MongoDBクラスタはdbを作成し、新しいユーザーを作成します[秘密保護モードでauthパスワード検証が開かれていません]
4. MongoDBレプリカセットのインストール手順
5. MySQLのデータをMongoDBに移行(CSVファイル経由)
一、据付
1.スタンドアロンシングルノードのインストール
2.MongoDBクラスタのインストール(4.2トランザクションのサポートを開始しますが、クラスタをインストールする必要があります.ローカルではシングルマシンのマルチポートがクラスタのケースです)
3.MongoDBクラスタdbを作成し、新しいユーザーを作成する[秘密保護モードでauthパスワード検証がオンになっていない]
4.MongoDBレプリカセットのインストール手順【クラスタモード:一主一従一仲裁、1主2従の採用を提案する(災害対応効果がより良い)】
5.MySQLのデータをMongoDBに移行(CSVファイル経由)
三、MongoDBとMysqlの名詞マッピング
RDBMS(キーワード/解釈)
MongoDB(キーワード/解釈)
データベース(database)
データベース(database)
テーブル
コレクション(collection)
行(row)
ドキュメント(document)
列(column)
フィールド(field)
テーブル結合
埋め込みドキュメント()
インデックス(index)
インデックス(index)
プライマリキー
プライマリ・キー(MongoDBはkeyが_idである)
Mysqld(サービス側エントリファイル)
mongod(サービス側エントリファイル)
2.MongoDBデータベースのいくつかのdbname.system.* コマンドの基本的な意味
集合ネーミングスペース
説明
dbname.system.namespaces
名前空間リスト
dbname.system.indexs
索引リスト
dbname.system.profile
データベース・サマリーを含める
dbname.system.users
データベースにアクセス可能なユーザーのリスト
dbname.local.sources
レプリケーション・ペアを含むサーバ情報とステータス
***【長編による不快感を避けるため、三つの部分に分けます.
1)MongoDBインストール[本編]
2)MongoDB基本構文とdemo
3)設計応用と企業実例
異議があれば、交流討論を歓迎します.
本編内容概要:【長編による不快感を避けるために、MongoDBインストール+基本文法とdemo+設計応用と企業例の3つの部分に分けられる】
一、MongoDBのインストール
1. スタンドアロンシングルノードのインストール
2. MongoDBクラスタのインストール(4.2トランザクションのサポートを開始しますが、クラスタをインストールする必要があります.ローカルではシングルマシンマルチポートがクラスタのケースです)
3. MongoDBクラスタはdbを作成し、新しいユーザーを作成します[秘密保護モードでauthパスワード検証が開かれていません]
4. MongoDBレプリカセットのインストール手順
5. MySQLのデータをMongoDBに移行(CSVファイル経由)
一、据付
1.スタンドアロンシングルノードのインストール
1. :
https://www.mongodb.com/download-center/community
2. :
1)
vim /usr/local/mongodb/mongodb.conf
#
port=27017
#
dbpath=/data/mongodb/db
#
logpath=/data/mongodb/log/mongodb.log
## ID
pidfilepath=/data/mongodb/mongodb.pid
#
fork=true
#
logappend=true
# 2000
maxConns=5000
# IP , , ip
bind_ip=0.0.0.0
#
auth=false
##### [** , , ] #####
# HTTP [** , , ]
# nohttpinterface=true
# rest=false
## , , , 。
# noprealloc=true
## true, 。smallfiles , 512M,
## 128M。 , , mongodb , 。
# smallfiles=true
##### [** , , ] #####
2) /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf # , mongodb
3. ( )
1) vim /lib/systemd/system/mongodb.service
:
[Unit]
Description=mongodb
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongodb.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
:wq
2) systemctl list-unit-files | grep mongodb.service # mongodb
3) cd /lib/systemd/system && systemctl enable mongodb.service # mongodb
4) systemctl start|stop|restart mongodb.service # | | mongodb
4. mongo mongod :
/usr/local/mongodb/bin/mongo #
/usr/local/mongodb/bin/mongod # mongodb shell
: /usr/local/mongodb/ ,
5. mongodb
1)
A)
use admin
db.createUser({user:"adminUser",pwd:"123456",roles: [{role: "userAdminAnyDatabase",db:"admin"}]})
B)
use foo
db.createUser({user:"demoUser",pwd:"123456",roles: ["readWrite","dbAdmin","userAdmin"]})
C) db.system.users.find().pretty() //
D) db.system.users.remove({user:"demoUser"}) //
3)
A) vim /usr/local/mongodb/mongodb.conf
auth=true # mongo ,
, mongodb (systemctl restart mongodb.service)
B) [ : , , amdinUser admin , admin ]
use admin
db.auth("adminUser","123456") //
4)
:read、readWrite;
:dbAdmin、dbOwner、userAdmin;
:clusterAdmin、clusterManager、clusterMonitor、hostManager;
:backup、restore;
:readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
:root // (dbOwner 、userAdmin、userAdminAnyDatabase)
:system
:
Read:
readWrite:
dbAdmin: , 、 , system.profile
userAdmin: system.users , 、
clusterAdmin: admin , 。
readAnyDatabase: admin ,
readWriteAnyDatabase: admin ,
userAdminAnyDatabase: admin , userAdmin
dbAdminAnyDatabase: admin , dbAdmin 。
root: admin 。 ,
2.MongoDBクラスタのインストール(4.2トランザクションのサポートを開始しますが、クラスタをインストールする必要があります.ローカルではシングルマシンのマルチポートがクラスタのケースです)
1) openssl rand -base64 64 > ./mongod-keyfile # 64 ( ) , mongod-keyfile , ( unix ,keyFile , 600)
2) , , ( ), mongod0.conf :
A) vim /usr/local/mongodb/mongod0.conf
:
# mongod0.conf
# for documentation of all options, see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /usr/local/mongodb/mongod0 # ,
#dbPath: /usr/local/mongodb/mongod1 # ,
#dbPath: /usr/local/mongodb/mongod2 # ,
journal:
enabled: true
# engine:
# mmapv1:
# wiredTiger:
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /data/mongodb/log/mongod0.log # ,
#path: /data/mongodb/log/mongod1.log # ,
#path: /data/mongodb/log/mongod2.log # ,
# network interfaces
net:
port: 27017 # , , 27017
#port: 27018 # , ,27018( GUI , )
#port: 27019 # , ,27019
bindIp: 0.0.0.0
# how the process runs
processManagement:
timeZoneInfo: /usr/share/zoneinfo
security:
authorization: enabled
#clusterAuthMode: keyFile
keyFile: /usr/local/mongodb/mongod-keyfile
#operationProfiling:
replication:
replSetName: rs1
#sharding:
## Enterprise-Only Options:
#auditLog:
#snmp:
2) cp /usr/local/mongodb/mongod0.conf /usr/local/mongodb/mongod1.conf && cp /usr/local/mongodb/mongod0.conf /usr/local/mongodb/mongod2.conf # , , ,
3) mongodb
A) vim /lib/systemd/system/mongodbCluster.service
:
[Unit]
Description=mongodbCluster
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod0.conf && /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod1.conf && /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongod2.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongod0.conf && /usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongod1.conf && /usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongod2.conf
PrivateTmp=true
[Install]
WantedBy=multi-user.target
B) systemctl enable mongodbCluster.service #
C) systemctl start|stop|restart|status mongodbCluster.service # | | |
3.MongoDBクラスタdbを作成し、新しいユーザーを作成する[秘密保護モードでauthパスワード検証がオンになっていない]
*** : mongoDB , admin
1.mongodb , db
1) mongo "127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019"; // :mongo "host1,host2,host3,..."; // host , ip:port
2) use admin;
3) db.auth("user","pwd"); //
4) db.createUser({user: "username",pwd: "pwd",roles: [ { role: "readWrite", db: "db_test" } ]} ); // ,db_test db ,mongodb db
5) use admin;
6) db.auth("newUser","newPwd"); //
7) use db_test; // db
8) db.test.insert({"name":"testDemoData"}); // , db
9) show tables; // db_test , show collections;
2. admin
db.createUser({user:"root",pwd:"funplus12365",roles: [{role: "userAdminAnyDatabase",db:"db_isr"}]}) // ,
db.createUser({user:"toDbUser",pwd:"funplus12365",roles: ["readWrite","dbAdmin","userAdmin"]}) //
3. db, db
mongo 127.0.0.1:27017,127.0.0.2:27017,127.0.0.3:27017/admin -u admin -p 123456 // admin , ;
use db_test; //
db.createUser({user:"testAdmin",pwd:"123456",roles: [{role:"dbOwner",db:"db_test"}]});// db_test testAdmin, ,
// mongodb ***( )
systemctl restart /lib/systemd/system/configure.service
systemctl restart /lib/systemd/system/shard01.service
systemctl restart /lib/systemd/system/shard02.service
systemctl restart /lib/systemd/system/shard03.service
systemctl restart /lib/systemd/system/mongos.service
// (testAdmin)
mongo 127.0.0.1:27017,127.0.0.2:27017,127.0.0.3:27017/db_test -u testAdmin -p 123456 // db_test , ;
4. ***** :
1) mongo , session, ( , mongo, mongo )
4.MongoDBレプリカセットのインストール手順【クラスタモード:一主一従一仲裁、1主2従の採用を提案する(災害対応効果がより良い)】
A) master.conf
#master.conf
dbpath=/data/mongodb/mongoShardMode2/data/master
logpath=/data/mongodb/mongoShardMode2/log/master.log
pidfilepath=/data/mongodb/mongoShardMode2/master.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27017
oplogSize=10000
fork=true
#noprealloc=true
B) master.conf
#slaver.conf
dbpath=/data/mongodb/mongoShardMode2/data/slaver
logpath=/data/mongodb/mongoShardMode2/log/slaver.log
pidfilepath=/data/mongodb/mongoShardMode2/slaver.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27018
oplogSize=10000
fork=true
#noprealloc=true
C) arbiter
#arbiter.conf
dbpath=/data/mongodb/mongoShardMode2/data/arbiter
logpath=/data/mongodb/mongoShardMode2/log/arbiter.log
pidfilepath=/data/mongodb/mongoShardMode2/arbiter.pid
directoryperdb=true
logappend=true
replSet=testrs
bind_ip=0.0.0.0
port=27019
oplogSize=10000
fork=true
#noprealloc=true
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongoShardConf2/master.conf && /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongoShardConf2/slaver.conf && /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongoShardConf2/arbiter.conf
/usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongoShardConf2/master.conf && /usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongoShardConf2/slaver.conf && /usr/local/mongodb/bin/mongod --shutdown --config /usr/local/mongodb/mongoShardConf2/arbiter.conf
// dev root ,sudo
sudo /opt/mongodb-linux-x86_64-rhel70-4.2.2/bin/mongod --config /opt/mongodb-linux-x86_64-rhel70-4.2.2/replicaSetConf/master.conf && sudo /opt/mongodb-linux-x86_64-rhel70-4.2.2/bin/mongod --config /opt/mongodb-linux-x86_64-rhel70-4.2.2/replicaSetConf/slaver.conf && sudo /opt/mongodb-linux-x86_64-rhel70-4.2.2/bin/mongod --config /opt/mongodb-linux-x86_64-rhel70-4.2.2/replicaSetConf/arbiter.conf
5.MySQLのデータをMongoDBに移行(CSVファイル経由)
1) mongodb
/usr/local/mongodb/bin/mongoimport --db --collection --type csv --headerline --ignoreBlanks --file # (csv )
:
/usr/local/mongodb/bin/mongoimport --db db_isr --collection tb_isr_visitors --type csv --headerline --ignoreBlanks --file /root/csv/tb_isr_records_1.csv # csv mongodb db_isr.db_isr_visitors
三、MongoDBとMysqlの名詞マッピング
RDBMS(キーワード/解釈)
MongoDB(キーワード/解釈)
データベース(database)
データベース(database)
テーブル
コレクション(collection)
行(row)
ドキュメント(document)
列(column)
フィールド(field)
テーブル結合
埋め込みドキュメント()
インデックス(index)
インデックス(index)
プライマリキー
プライマリ・キー(MongoDBはkeyが_idである)
Mysqld(サービス側エントリファイル)
mongod(サービス側エントリファイル)
2.MongoDBデータベースのいくつかのdbname.system.* コマンドの基本的な意味
集合ネーミングスペース
説明
dbname.system.namespaces
名前空間リスト
dbname.system.indexs
索引リスト
dbname.system.profile
データベース・サマリーを含める
dbname.system.users
データベースにアクセス可能なユーザーのリスト
dbname.local.sources
レプリケーション・ペアを含むサーバ情報とステータス
***【長編による不快感を避けるため、三つの部分に分けます.
1)MongoDBインストール[本編]
2)MongoDB基本構文とdemo
3)設計応用と企業実例
異議があれば、交流討論を歓迎します.