mongodb入門からアプリケーション(一)--インストール編


MongoDB4.2.*のインストール
本編内容概要:【長編による不快感を避けるために、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)設計応用と企業実例
異議があれば、交流討論を歓迎します.