NoSQL(四)

Wesley13
• 阅读 722

mongodb介绍

https://www.yiibai.com/mongodb/mongodb\_drop\_collection.html

1.文档性数据库类似于json对象,分布式

NoSQL(四)

NoSQL(四)

NoSQL(四)

NoSQL(四)

mongodb安装

NoSQL(四)

1.基本思路就是创建一个官方的yum源,我们这里安装最新的3.6版本

[root@centos-02 ~]# cd /etc/yum.repos.d/
[root@centos-02 yum.repos.d]# vim mongodb.repo
[root@centos-02 yum.repos.d]# 
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

2.然后查看下源中有没有mongodb这个包,ok有

[root@centos-02 yum.repos.d]# 
[root@centos-02 yum.repos.d]# yum list|grep mongodb
collectd-write_mongodb.x86_64             5.8.0-1.el7                  epel     
mongodb.x86_64                            2.6.12-6.el7                 epel     
mongodb-org.x86_64                        3.6.3-1.el7                  mongodb-org-3.6
mongodb-org-mongos.x86_64                 3.6.3-1.el7                  mongodb-org-3.6
mongodb-org-server.x86_64                 3.6.3-1.el7                  mongodb-org-3.6
mongodb-org-shell.x86_64                  3.6.3-1.el7                  mongodb-org-3.6
mongodb-org-tools.x86_64                  3.6.3-1.el7                  mongodb-org-3.6
mongodb-server.x86_64                     2.6.12-6.el7                 epel     
mongodb-test.x86_64                       2.6.12-6.el7                 epel     
nodejs-mongodb.noarch                     1.4.7-1.el7                  epel     
php-mongodb.noarch                        1.0.4-1.el7                  epel     
php-pecl-mongodb.x86_64                   1.1.10-1.el7                 epel     
poco-mongodb.x86_64                       1.6.1-3.el7                  epel     
syslog-ng-mongodb.x86_64                  3.5.6-3.el7                  epel     
[root@centos-02 yum.repos.d]#

3.安装mongodb

[root@centos-02 yum.repos.d]# yum install -y mongodb-org

连接mongodb

NoSQL(四)

1.如果想绑定多个ip访问,添加多个ip用逗号分割

bindIp: 127.0.0.1,192.168.133.88

2.启动mongodb

[root@centos-02 yum.repos.d]# systemctl start mongod
[root@centos-02 yum.repos.d]# ps aux|grep mongod
mongod    48151  5.1  4.2 1005608 42792 ?       Sl   17:28   0:03 /usr/bin/mongod -f /etc/mongod.conf
root      48176  0.0  0.0 112680   948 pts/0    R+   17:29   0:00 grep --color=auto mongod
[root@centos-02 yum.repos.d]# netstat -lntp |grep mongod
tcp        0      0 192.168.133.88:27017    0.0.0.0:*               LISTEN      48151/mongod        
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      48151/mongod        
[root@centos-02 yum.repos.d]#

3.在本机直接运行mongo进入到mongodb shell中

[root@centos-02 yum.repos.d]# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2018-04-01T17:28:16.465+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-01T17:28:16.468+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.469+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] 
>

4.连接到指定的ip和端口

[root@centos-02 yum.repos.d]# mongo --host 192.168.133.88 --port 27017
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.88:27017/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-01T17:28:16.465+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-01T17:28:16.468+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.469+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] 
>

5.如果设置了验证,需要输入用户和密码和连接的加密库

[root@centos-02 yum.repos.d]# mongo -uusername -ppassword --authenticationDatabase db

mongodb用户管理

NoSQL(四)

1.如何给用户设置密码,切换到admin库,执行创建用户语句(语句包括,创建的用户名,用户的描述(可以不写),用户密码,什么角色,角色在哪一个库)

[root@centos-02 yum.repos.d]# mongo --host 192.168.133.88 --port 27017
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.88:27017/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-01T17:28:16.465+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-01T17:28:16.467+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-01T17:28:16.468+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.469+0800 I CONTROL  [initandlisten] 
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-01T17:28:16.470+0800 I CONTROL  [initandlisten] 
> use admin
switched to db admin
> db.createUser( { user: "admin", customData: {description: "superuser"}, pwd: "admin122", roles: [ { role: "root", db: "admin" } ] } )
Successfully added user: {
    "user" : "admin",
    "customData" : {
        "description" : "superuser"
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
>

2.列出所有用户,需要事先切换的admin库

> db.system.users.find()
{ "_id" : "admin.test1", "user" : "test1", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "qkIyRd0o38eqKOlEx3vwHA==", "storedKey" : "JVrdMZud+jjZb9awIWxSrLwixxY=", "serverKey" : "vmaJHnyV8tfPyvxqpuF4ipe/MJc=" } }, "roles" : [ { "role" : "readWrite", "db" : "db1" }, { "role" : "read", "db" : "db2" } ] }
{ "_id" : "admin.admin", "user" : "admin", "db" : "admin", "credentials" : { "SCRAM-SHA-1" : { "iterationCount" : 10000, "salt" : "OMpr/hze3FqzgKmv45sUBw==", "storedKey" : "EkLLK+LNAGMVV3ddgxYoZCXGlPU=", "serverKey" : "h1UxGUDeFB9C1N7dRyN30bDhFOA=" } }, "customData" : { "description" : "superuser" }, "roles" : [ { "role" : "root", "db" : "admin" } ] }
>

3.查看当前库下所有的用户

> show users
{
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "customData" : {
        "description" : "superuser"
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.test1",
    "user" : "test1",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        },
        {
            "role" : "read",
            "db" : "db2"
        }
    ]
}
>

4.删除一个用户,怎么删除,首先创建一个测试用户

> db.createUser({user:"linux",pwd:"linux",roles:[{role:"read",db:"testdb"}]})
Successfully added user: {
    "user" : "linux",
    "roles" : [
        {
            "role" : "read",
            "db" : "testdb"
        }
    ]
}
>

5.删除后查看用户,发现linux用户没有了

> db.dropUser('linux')
true
> show users
{
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "customData" : {
        "description" : "superuser"
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.test1",
    "user" : "test1",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        },
        {
            "role" : "read",
            "db" : "db2"
        }
    ]
}
>

6.use一个库,如果这个库不存在,则会创建这个库。

> use testdb
switched to db testdb
>

7.若要用户生效,还需要编辑配置启动文件,在OPTIONS后面加上--auth,只有加了--auth,才可以用用户名密码登录,重启mongo

[root@centos-02 yum.repos.d]# vim /usr/lib/systemd/system/mongod.service 
[root@centos-02 yum.repos.d]# 
Environment="OPTIONS=--auth -f /etc/mongod.conf"
[root@centos-02 yum.repos.d]# systemctl daemon-reload
[root@centos-02 yum.repos.d]# systemctl restart mongod
[root@centos-02 yum.repos.d]# ps aux|grep mongo
mongod    48251 60.1  4.2 1005608 42600 ?       Sl   18:26   0:25 /usr/bin/mongod --auth -f /etc/mongod.conf
root      48279  0.0  0.0 112680   944 pts/0    R+   18:27   0:00 grep --color=auto mong
[root@centos-02 yum.repos.d]#

8.测试用户密码登录,我们还是用之前不用用户和密码的方式登录查看admin库发现不行了,用用户名密码登录可以

[root@centos-02 yum.repos.d]# mongo --host 192.168.133.88 --port 27017
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.88:27017/
MongoDB server version: 3.6.3
> use admin
switched to db admin
> show users
2018-04-01T18:31:54.272+0800 E QUERY    [thread1] Error: not authorized on admin to execute command { usersInfo: 1.0, $db: "admin" } :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.getUsers@src/mongo/shell/db.js:1686:1
shellHelper.show@src/mongo/shell/utils.js:799:9
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1
>

[root@centos-02 yum.repos.d]# mongo --host 192.168.133.88 --port 27017 -u admin -p 'admin122' --authenticationDatabase "admin"
> use admin
switched to db admin
> show users
{
    "_id" : "admin.admin",
    "user" : "admin",
    "db" : "admin",
    "customData" : {
        "description" : "superuser"
    },
    "roles" : [
        {
            "role" : "root",
            "db" : "admin"
        }
    ]
}
{
    "_id" : "admin.test1",
    "user" : "test1",
    "db" : "admin",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        },
        {
            "role" : "read",
            "db" : "db2"
        }
    ]
}
>

9.大家要记住,创建用户的时候必须要针对一个库,登录的时候也需要针对这个库做认证  

NoSQL(四)

1.创建db1,针对db1授权一个用户

> use db1
switched to db db1
> db.createUser( { user: "test1", pwd: "123aaa", roles: [ { role: "readWrite", db: "db1" }, {role: "read", db: "db2" } ] } )
Successfully added user: {
    "user" : "test1",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        },
        {
            "role" : "read",
            "db" : "db2"
        }
    ]
}
>

2.在db1里show,在哪个库创建就在哪个库show

> show users
{
    "_id" : "db1.test1",
    "user" : "test1",
    "db" : "db1",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "db1"
        },
        {
            "role" : "read",
            "db" : "db2"
        }
    ]
}
>

3.在命令行授权一个用户对db1有权限

> use db1
switched to db db1
> db.auth('test1','123aaa')
1
>

NoSQL(四)

NoSQL(四)

mongodb创建集合、数据管理

NoSQL(四)

1.我们在db1中创建集合

> db.createCollection("mycol", { capped : true, size : 6142800, max : 10000 } )
{ "ok" : 1 }
>

NoSQL(四)

1.查看集合

> show collections
mycol
> show tables
mycol
>

2.集合插入数据,没有集合会自动创建集合

> db.Account.insert({AccountID:1,UserName:"123",password:"123456"}) 
WriteResult({ "nInserted" : 1 })
> show tables
Account
mycol
> db.Account.insert({AccountID:2,UserName:"222",password:"222222"})
WriteResult({ "nInserted" : 1 })
>

3.更新数据并查看结果

> db.Account.update({AccountID:1},{"$set":{"Age":20}})
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })查看所有文档
> db.Account.find()
{ "_id" : ObjectId("5ac23df4fd2577e13af3e0ee"), "AccountID" : 1, "UserName" : "123", "password" : "123456", "Age" : 20 }
{ "_id" : ObjectId("5ac23e19fd2577e13af3e0ef"), "AccountID" : 2, "UserName" : "222", "password" : "222222" }
>

4.根据条件查询

> db.Account.find({AccountID:1})
{ "_id" : ObjectId("5ac23df4fd2577e13af3e0ee"), "AccountID" : 1, "UserName" : "123", "password" : "123456", "Age" : 20 }
>

5.根据条件删除一行

>  db.Account.remove({AccountID:1})
WriteResult({ "nRemoved" : 1 })
> db.Account.find()
{ "_id" : ObjectId("5ac23e19fd2577e13af3e0ef"), "AccountID" : 2, "UserName" : "222", "password" : "222222" }
>

6.删除所有的文档,即删除集合

> db.Account.drop()
true
> db.Account.find()
>

7.查看集合状态

db.printCollectionStats()

PHP的mongodb扩展

NoSQL(四)

NoSQL(四)

1.mongodb对于php有两个扩展,一个是mongo扩展,一个是mongodb扩展,mongo扩展是针对php5.X,mongodb是针对更高版本的

2.我们开始安装mongodb,下载mongodb

[root@centos-02 src]# cd /usr/local/src/
[root@centos-02 src]# wget http://pecl.php.net/get/mongodb-1.4.2.tgz

3.解压

[root@centos-02 src]# tar zxvf mongodb-1.4.2.tgz

4.进入mongodb执行phpize

[root@centos-02 src]# cd mongodb-1.4.2

[root@centos-02 mongodb-1.4.2]# /usr/bin/phpize  (安装php-fpm的执行/usr/local/php-frm/bin/phpize)

5.编译

[root@centos-02 mongodb-1.4.2]# ./configure --with-php-config=/usr/bin/php-config (如果是nginx的php路径为/usr/local/php-fpm/bin/php-conf)

6.哈哈不支持低版本的php,重新下一个mongodb

configure: error: not supported. Need a PHP version >= 5.5.0 (found 5.4.16)
[root@centos-02 mongodb-1.4.2]#

[root@centos-02 src]# wget https://github.com/mongodb/mongo-php-driver-legacy/archive/master.zip

7.解压

[root@centos-02 src]# unzip master.zip

8.进入mongodb执行phpize,编译

[root@centos-02 src]# cd mongo-php-driver-legacy-master/[root@centos-02 mongo-php-driver-legacy-master]# /usr/bin/phpize
[root@centos-02 mongo-php-driver-legacy-master]# ./configure --with-php-config=/usr/bin/php-config

9.make && make install

[root@centos-02 mongo-php-driver-legacy-master]# make install
Installing shared extensions:     /usr/lib64/php/modules/
[root@centos-02 mongo-php-driver-legacy-master]# ls /usr/lib64/php/modules/
bcmath.so      json.so        mysqli.so      phar.so        xmlwriter.so
curl.so        ldap.so        mysql.so       redis.so       xsl.so
dom.so         mbstring.so    pdo_mysql.so   sqlite3.so     zip.so
fileinfo.so    memcache.so    pdo.so         wddx.so        
gd.so          mongo.so       pdo_sqlite.so  xmlreader.so   
[root@centos-02 mongo-php-driver-legacy-master]# ls /usr/lib64/php/modules/

10.编辑php.ini增加mongo.so

[root@centos-02 mongo-php-driver-legacy-master]# vim /etc/php.ini (nginx安装的高版本php路径为/usr/local/php-fpm/etc/php.ini)
extension=mongo.so  (高版本的mongodb.so)

11.检测是否加载了mongo模块

[root@centos-02 mongo-php-driver-legacy-master]# /usr/bin/php -m|grep mongo
mongo
[root@centos-02 mongo-php-driver-legacy-master]#

12.重启httpd (如果用的是php-fpm需要重启/etc/init.d/php-fpm restart)

[root@centos-02 mongo-php-driver-legacy-master]# systemctl restart httpd
[root@centos-02 mongo-php-driver-legacy-master]#

NoSQL(四)

NoSQL(四)

1.测试,没有出来我们需要关闭秘钥认证登录

[root@centos-02 ~]# vim /var/www/html/mongo.php (如果是nginx我们放到vim /data/wwwroot/default/mongo.php)
[root@centos-02 ~]# 
<?php
$m = new MongoClient(); // 连接
$db = $m->test; // 获取名称为 "test" 的数据库
$collection = $db->createCollection("runoob");
echo "集合创建成功";
?>

[root@centos-02 ~]# curl localhost/mongo.php
集合创建成功
[root@centos-02 ~]# mongo --host 192.168.133.88 --port 27017 -u admin -p 'admin122' --authenticationDatabase "admin"
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.88:27017/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-01T18:27:05.449+0800 I CONTROL  [initandlisten] 
2018-04-01T18:27:05.450+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-01T18:27:05.450+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-01T18:27:05.450+0800 I CONTROL  [initandlisten] 
> use test
switched to db test
> show tables
>

2.去掉--auth和空格,这样mongodb就不使用用户名密码认证了

[root@centos-02 ~]# vim /usr/lib/systemd/system/mongod.service 
[root@centos-02 ~]# 
Environment="OPTIONS=--auth -f /etc/mongod.conf"

3.重启mongodb

[root@centos-02 ~]# systemctl daemon-reload
[root@centos-02 ~]# systemctl restart mongod

4.再次验证,成功

[root@centos-02 ~]# !curl
curl localhost/mongo.php
集合创建成功
[root@centos-02 ~]# mongo --host 192.168.133.88 --port 27017
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.88:27017/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-03T00:09:20.959+0800 I CONTROL  [initandlisten] 
2018-04-03T00:09:20.960+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-03T00:09:20.960+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-03T00:09:20.960+0800 I CONTROL  [initandlisten] 
2018-04-03T00:09:20.961+0800 I CONTROL  [initandlisten] 
2018-04-03T00:09:20.961+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-03T00:09:20.962+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-03T00:09:20.962+0800 I CONTROL  [initandlisten] 
> use test
switched to db test
> show tables
runoob
>

mongodb副本集介绍 

NoSQL(四)

 NoSQL(四)

NoSQL(四)

 mongodb副本集搭建

NoSQL(四)

1.三台机器都安装mongodb 192.168.133.44(primary)192.168.133.88(secondary)192.168.133.66(secondary)

2.复制mongo yum源的内容到两台没有安装的机器

[root@centos-02 ~]# cd /etc/yum.repos.d/
[root@centos-02 yum.repos.d]# ls
CentOS-Base.repo       CentOS-Media.repo    epel-testing.repo            zabbix.repo.bak
CentOS-CR.repo         CentOS-Sources.repo  mongodb.repo
CentOS-Debuginfo.repo  CentOS-Vault.repo    mysql-community.repo
CentOS-fasttrack.repo  epel.repo            mysql-community-source.repo
[root@centos-02 yum.repos.d]# cat mongodb.repo 
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc
[root@centos-02 yum.repos.d]#

[root@centos-01 ~]# vim /etc/yum.repos.d/mongodb.repo
[root@centos-01 ~]#
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

[root@centos-03 ~]# vim /etc/yum.repos.d/mongodb.repo
[root@centos-03 ~]# 
[mongodb-org-3.6]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

3.yum安装

[root@centos-01 ~]# yum install -y mongodb-org
[root@centos-03 ~]# yum install -y mongodb-org

4.编辑配置文件

[root@centos-01 ~]# vim /etc/mongod.conf 
[root@centos-01 ~]# bindIp: 127.0.0.1,192.168.133.44
replication:
  oplogSizeMB: 20 (相当于mysql中的binlog)
  replSetName: mongodbslave (副本集的名字)

[root@centos-02 yum.repos.d]# vim /etc/mongod.conf 
[root@centos-02 yum.repos.d]#
  bindIp: 127.0.0.1,192.168.133.88 
replication:
  oplogSizeMB: 20
  replSetName: mongodbslave
[root@centos-03 ~]# vim /etc/mongod.conf 
[root@centos-03 ~]# 
  bindIp: 127.0.0.1,192.168.133.66
replication:
  oplogSizeMB: 20
  replSetName: mongodbsla

5.重启mongod

[root@centos-01 ~]# systemctl restart mongod
[root@centos-01 ~]# ps aux|grep mongod
mongod     3169 22.0  4.9 1033844 49960 ?       Sl   06:54   0:02 /usr/bin/mongod -f /etc/mongod.conf
root       3198  0.0  0.0 112664   928 pts/0    S+   06:54   0:00 grep --color=auto mongod
[root@centos-01 ~]#

[root@centos-01 ~]# netstat -lntp |grep mongod
tcp        0      0 192.168.133.44:27017    0.0.0.0:*               LISTEN      3611/mongod         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      3611/mongod         
[root@centos-01 ~]#

6.关掉三台机器的iptables和selinux

[root@centos-01 ~]# iptables -F
[root@centos-01 ~]# iptables -nvL
Chain INPUT (policy ACCEPT 7 packets, 468 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 4 packets, 448 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[root@centos-01 ~]#

[root@centos-01 ~]# getenforce 
Disabled
[root@centos-01 ~]#

NoSQL(四)

1.进入mongo

[root@centos-01 ~]# mongo

2.配置副本集

> config={_id:"mongodblinux",members:[{_id:0,host:"192.168.133.44:27017"},{_id:1,host:"192.168.133.88:27017"},{_id:2,host:"192.168.133.66:27017"}]}
{
    "_id" : "mongodblinux",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27017"
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27017"
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27017"
        }
    ]
}
>

3.初始化

> rs.initiate(config)
{
    "ok" : 1,
    "operationTime" : Timestamp(1522799670, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1522799670, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}
mongodbslave:OTHER>

4.查看状态

mongodbslave:OTHER> rs.status()
{
    "set" : "mongodbslave",
    "date" : ISODate("2018-04-03T23:55:50.921Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1522799710, 1),
            "t" : NumberLong(1)
        },
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1522799710, 1),
            "t" : NumberLong(1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1522799710, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1522799710, 1),
            "t" : NumberLong(1)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "192.168.133.44:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 2986,
            "optime" : {
                "ts" : Timestamp(1522799710, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-03T23:55:10Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1522799689, 1),
            "electionDate" : ISODate("2018-04-03T23:54:49Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "192.168.133.88:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 80,
            "optime" : {
                "ts" : Timestamp(1522799710, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1522799710, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-03T23:55:10Z"),
            "optimeDurableDate" : ISODate("2018-04-03T23:55:10Z"),
            "lastHeartbeat" : ISODate("2018-04-03T23:55:50.564Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-03T23:55:50.580Z"),
            "pingMs" : NumberLong(29),
            "syncingTo" : "192.168.133.44:27017",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "192.168.133.66:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 79,
            "optime" : {
                "ts" : Timestamp(1522799710, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1522799710, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-03T23:55:10Z"),
            "optimeDurableDate" : ISODate("2018-04-03T23:55:10Z"),
            "lastHeartbeat" : ISODate("2018-04-03T23:55:50.608Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-03T23:55:49.460Z"),
            "pingMs" : NumberLong(23),
            "syncingTo" : "192.168.133.44:27017",
            "configVersion" : 1
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1522799710, 1),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1522799710, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}
mongodbslave:PRIMARY>

mongodb副本集测试

NoSQL(四)

1.创建一个库,创建一个集合

mongodbslave:PRIMARY> use admin
switched to db admin
mongodbslave:PRIMARY> use mydb
switched to db mydb
mongodbslave:PRIMARY> db.acc.insert({AccountID:1,UserName:"123",password:"123456"})
WriteResult({ "nInserted" : 1 })
mongodbslave:PRIMARY> show dbs;
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB
mongodbslave:PRIMARY> use mydb
switched to db mydb
mongodbslave:PRIMARY> show tables
acc
mongodbslave:PRIMARY>

2.从上查看mydb

[root@centos-02 ~]# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-08T23:52:57.455+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.456+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-08T23:52:57.456+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-08T23:52:57.457+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.457+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.458+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-08T23:52:57.458+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-08T23:52:57.459+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.459+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-08T23:52:57.460+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-08T23:52:57.460+0800 I CONTROL  [initandlisten] 
mongodbslave:SECONDARY> 
mongodbslave:SECONDARY> show dbs
2018-04-09T00:10:50.623+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "operationTime" : Timestamp(1523232527, 1),
    "ok" : 0,
    "errmsg" : "not master and slaveOk=false",
    "code" : 13435,
    "codeName" : "NotMasterNoSlaveOk",
    "$clusterTime" : {
        "clusterTime" : Timestamp(1523232527, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:816:19
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1
mongodbslave:SECONDARY> rs.slaveOk()
mongodbslave:SECONDARY> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB
mongodbslave:SECONDARY> use mydb
switched to db mydb
mongodbslave:SECONDARY> show tables
acc
mongodbslave:SECONDARY>

3.从上查看mydb

[root@centos-03 ~]# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
    http://docs.mongodb.org/
Questions? Try the support group
    http://groups.google.com/group/mongodb-user
Server has startup warnings: 
2018-04-03T23:07:44.471+0800 I CONTROL  [initandlisten] 
2018-04-03T23:07:44.472+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-03T23:07:44.472+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-03T23:07:44.473+0800 I CONTROL  [initandlisten] 
2018-04-03T23:07:44.555+0800 I CONTROL  [initandlisten] 
2018-04-03T23:07:44.555+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-03T23:07:44.555+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-03T23:07:44.589+0800 I CONTROL  [initandlisten] 
2018-04-03T23:07:44.589+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-03T23:07:44.590+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-03T23:07:44.590+0800 I CONTROL  [initandlisten] 
mongodbslave:SECONDARY> 
mongodbslave:SECONDARY> show dbs
2018-04-09T00:12:45.860+0800 E QUERY    [thread1] Error: listDatabases failed:{
    "operationTime" : Timestamp(1523232687, 1),
    "ok" : 0,
    "errmsg" : "not master and slaveOk=false",
    "code" : 13435,
    "codeName" : "NotMasterNoSlaveOk",
    "$clusterTime" : {
        "clusterTime" : Timestamp(1523232687, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
Mongo.prototype.getDBs@src/mongo/shell/mongo.js:65:1
shellHelper.show@src/mongo/shell/utils.js:816:19
shellHelper@src/mongo/shell/utils.js:706:15
@(shellhelp2):1:1
mongodbslave:SECONDARY> rs.slaveOk()
mongodbslave:SECONDARY> show dbs
admin   0.000GB
config  0.000GB
local   0.000GB
mydb    0.000GB
mongodbslave:SECONDARY> use mydb
switched to db mydb
mongodbslave:SECONDARY> show tables
acc
mongodbslave:SECONDARY>

NoSQL(四)

1.查看三个节点的权重

mongodbslave:PRIMARY> rs.config()
{
    "_id" : "mongodbslave",
    "version" : 1,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "catchUpTimeoutMillis" : -1,
        "catchUpTakeoverDelayMillis" : 30000,
        "getLastErrorModes" : {
            
        },
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        },
        "replicaSetId" : ObjectId("5ac4143306d5c156f4c42cd9")
    }
}
mongodbslave:PRIMARY>

2.模拟宕机,过了一会儿发现02变成主了(因为权重都是1这个主是随机的)

[root@centos-01 ~]# iptables -I INPUT -p tcp --dport 27017 -j DROP
[root@centos-02 ~]# mongo
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-08T23:52:57.455+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.456+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-08T23:52:57.456+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-08T23:52:57.457+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.457+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.458+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-08T23:52:57.458+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-08T23:52:57.459+0800 I CONTROL  [initandlisten] 
2018-04-08T23:52:57.459+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-08T23:52:57.460+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-08T23:52:57.460+0800 I CONTROL  [initandlisten] 
mongodbslave:PRIMARY>

3.设置新的权重

[root@centos-01 ~]# iptables -D INPUT -p tcp --dport 27017 -j DROP

mongodbslave:PRIMARY> cfg=rs.conf()
{
    "_id" : "mongodbslave",
    "version" : 1,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "catchUpTimeoutMillis" : -1,
        "catchUpTakeoverDelayMillis" : 30000,
        "getLastErrorModes" : {
            
        },
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        },
        "replicaSetId" : ObjectId("5ac4143306d5c156f4c42cd9")
    }
}
mongodbslave:PRIMARY> cfg.members[0].priority = 3
3
mongodbslave:PRIMARY> cfg.members[1].priority = 2
2
mongodbslave:PRIMARY> cfg.members[2].priority = 1
1
mongodbslave:PRIMARY> rs.reconfig(cfg)
{
    "ok" : 1,
    "operationTime" : Timestamp(1523234054, 33),
    "$clusterTime" : {
        "clusterTime" : Timestamp(1523234054, 33),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}
mongodbslave:PRIMARY> rs.config()
{
    "_id" : "mongodbslave",
    "version" : 2,
    "protocolVersion" : NumberLong(1),
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 3,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 2,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27017",
            "arbiterOnly" : false,
            "buildIndexes" : true,
            "hidden" : false,
            "priority" : 1,
            "tags" : {
                
            },
            "slaveDelay" : NumberLong(0),
            "votes" : 1
        }
    ],
    "settings" : {
        "chainingAllowed" : true,
        "heartbeatIntervalMillis" : 2000,
        "heartbeatTimeoutSecs" : 10,
        "electionTimeoutMillis" : 10000,
        "catchUpTimeoutMillis" : -1,
        "catchUpTakeoverDelayMillis" : 30000,
        "getLastErrorModes" : {
            
        },
        "getLastErrorDefaults" : {
            "w" : 1,
            "wtimeout" : 0
        },
        "replicaSetId" : ObjectId("5ac4143306d5c156f4c42cd9")
    }
}
mongodbslave:PRIMARY>

mongodb分片介绍 

NoSQL(四)

 NoSQL(四)

NoSQL(四)

mongodb分片搭建

NoSQL(四)

NoSQL(四)

1.三台机器分别创建mongos的日志和其他目录

[root@centos-01 ~]# mkdir -p /data/mongodb/mongos/log
[root@centos-01 ~]# mkdir -p /data/mongodb/config/{data,log}
[root@centos-01 ~]# mkdir -p /data/mongodb/shard1/{data,log}
[root@centos-01 ~]# mkdir -p /data/mongodb/shard2/{data,log}
[root@centos-01 ~]# mkdir -p /data/mongodb/shard3/{data,log}
[root@centos-01 ~]#

[root@centos-02 ~]# mkdir -p /data/mongodb/mongos/log
[root@centos-02 ~]# mkdir -p /data/mongodb/config/{data,log}
[root@centos-02 ~]# mkdir -p /data/mongodb/shard1/{data,log}
[root@centos-02 ~]# mkdir -p /data/mongodb/shard2/{data,log}
[root@centos-02 ~]# mkdir -p /data/mongodb/shard3/{data,log}
[root@centos-02 ~]#

[root@centos-03 ~]# mkdir -p /data/mongodb/mongos/log
[root@centos-03 ~]# mkdir -p /data/mongodb/config/{data,log}
[root@centos-03 ~]# mkdir -p /data/mongodb/shard1/{data,log}
[root@centos-03 ~]# mkdir -p /data/mongodb/shard2/{data,log}
[root@centos-03 ~]# mkdir -p /data/mongodb/shard3/{data,log}
[root@centos-03 ~]#

NoSQL(四)

1.创建配置文件的目录

[root@centos-01 ~]# mkdir /etc/mongod/
[root@centos-01 ~]# 
[root@centos-02 ~]# mkdir /etc/mongod/
[root@centos-02 ~]#
[root@centos-03 ~]# mkdir /etc/mongod/
[root@centos-03 ~]#

2.编辑configserver的配置文件

[root@centos-01 ~]# vim /etc/mongod/config.conf
[root@centos-01 ~]# 
pidfilepath = /var/run/mongodb/configsrv.pid
dbpath = /data/mongodb/config/data
logpath = /data/mongodb/config/log/congigsrv.log
logappend = true
bind_ip = 192.168.133.44
port = 21000
fork = true
configsvr = true #declare this is a config db of a cluster;
replSet=configs #副本集名称
maxConns=20000 #设置最大连接数

[root@centos-02 ~]# vim /etc/mongod/config.conf
[root@centos-02 ~]# 
pidfilepath = /var/run/mongodb/configsrv.pid
dbpath = /data/mongodb/config/data
logpath = /data/mongodb/config/log/congigsrv.log
logappend = true
bind_ip = 192.168.133.88
port = 21000
fork = true
configsvr = true #declare this is a config db of a cluster;
replSet=configs #副本集名称
maxConns=20000 #设置最大连接数

[root@centos-03 ~]# vim /etc/mongod/config.conf
[root@centos-03 ~]# 
pidfilepath = /var/run/mongodb/configsrv.pid
dbpath = /data/mongodb/config/data
logpath = /data/mongodb/config/log/congigsrv.log
logappend = true
bind_ip = 192.168.133.66
port = 21000
fork = true
configsvr = true #declare this is a config db of a cluster;
replSet=configs #副本集名称
maxConns=20000 #设置最大连接数

NoSQL(四)

1.启动三台机器的config服务

[root@centos-01 ~]# mongod -f /etc/mongod/config.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 5513
child process started successfully, parent exiting
[root@centos-01 ~]# ps aux|grep mongo
mongod     1838  5.4  7.1 1602768 71468 ?       Sl   20:05   5:17 /usr/bin/mongod -f /etc/mongod.conf
root       5513 41.8  4.5 1074840 45552 ?       Sl   21:41   0:14 mongod -f /etc/mongod/config.conf
root       5553 11.0  0.0 112668   932 pts/0    S+   21:41   0:00 grep --color=auto mong
[root@centos-01 ~]#

[root@centos-01 ~]# netstat -lntp|grep mongod
tcp        0      0 192.168.133.44:21000    0.0.0.0:*               LISTEN      5513/mongod         
tcp        0      0 192.168.133.44:27017    0.0.0.0:*               LISTEN      1838/mongod         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      1838/mongod         
[root@centos-01 ~]#

[root@centos-02 ~]# mongod -f /etc/mongod/config.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 3095
child process started successfully, parent exiting
[root@centos-02 ~]# ps aux|grep mongod
mongod     1327  3.7  9.2 1512172 92884 ?       Sl   20:17   3:19 /usr/bin/mongod -f /etc/mongod.conf
root       3095 31.1  5.0 1074480 50864 ?       Sl   21:46   0:05 mongod -f /etc/mongod/config.conf
root       3127 10.0  0.0 112684   948 pts/0    R+   21:46   0:00 grep --color=auto mongod
[root@centos-02 ~]# netstat -lntp|grep mongod
tcp        0      0 192.168.133.88:21000    0.0.0.0:*               LISTEN      3095/mongod         
tcp        0      0 192.168.133.88:27017    0.0.0.0:*               LISTEN      1327/mongod         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      1327/mongod         
[root@centos-02 ~]#

[root@centos-03 ~]# mongod -f /etc/mongod/config.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 10596
child process started successfully, parent exiting
[root@centos-03 ~]# ps aux|grep mongod
mongod     6498  4.7  9.7 1630304 97188 ?       Sl   18:59   8:04 /usr/bin/mongod -f /etc/mongod.conf
root      10596 36.4  4.5 1071180 45568 ?       Sl   21:48   0:06 mongod -f /etc/mongod/config.conf
root      10632  0.0  0.0 112668   928 pts/0    S+   21:48   0:00 grep --color=auto mongod
[root@centos-03 ~]# netstat -lntp|grep mongod
tcp        0      0 192.168.133.66:21000    0.0.0.0:*               LISTEN      10596/mongod        
tcp        0      0 192.168.133.66:27017    0.0.0.0:*               LISTEN      6498/mongod         
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      6498/mongod         
[root@centos-03 ~]#

2.初始化副本集

[root@centos-01 ~]# mongo --host 192.168.133.44 --port 21000
MongoDB shell version v3.6.3
connecting to: mongodb://192.168.133.44:21000/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-09T21:41:22.102+0800 I CONTROL  [initandlisten] 
2018-04-09T21:41:22.103+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-09T21:41:22.104+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-09T21:41:22.104+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-04-09T21:41:22.104+0800 I CONTROL  [initandlisten] 
2018-04-09T21:41:22.148+0800 I CONTROL  [initandlisten] 
2018-04-09T21:41:22.149+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-09T21:41:22.149+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T21:41:22.150+0800 I CONTROL  [initandlisten] 
2018-04-09T21:41:22.151+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-09T21:41:22.151+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T21:41:22.151+0800 I CONTROL  [initandlisten] 
> config = { _id: "configs", members: [ {_id : 0, host : "192.168.133.44:21000"},{_id : 1, host : "192.168.133.88:21000"},{_id : 2, host : "192.168.133.66:21000"}] }
{
    "_id" : "configs",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:21000"
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:21000"
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:21000"
        }
    ]
}
> rs.initiate(config)
{
    "ok" : 1,
    "operationTime" : Timestamp(1523282429, 1),
    "$gleStats" : {
        "lastOpTime" : Timestamp(1523282429, 1),
        "electionId" : ObjectId("000000000000000000000000")
    },
    "$clusterTime" : {
        "clusterTime" : Timestamp(1523282429, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

3.查看下状态

configs:OTHER> rs.status()
{
    "set" : "configs",
    "date" : ISODate("2018-04-09T14:02:16.668Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "configsvr" : true,
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1523282518, 1),
            "t" : NumberLong(1)
        },
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1523282518, 1),
            "t" : NumberLong(1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1523282518, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1523282518, 1),
            "t" : NumberLong(1)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "192.168.133.44:21000",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1273,
            "optime" : {
                "ts" : Timestamp(1523282518, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-09T14:01:58Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1523282475, 1),
            "electionDate" : ISODate("2018-04-09T14:01:15Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 1,
            "name" : "192.168.133.88:21000",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 106,
            "optime" : {
                "ts" : Timestamp(1523282518, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1523282518, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-09T14:01:58Z"),
            "optimeDurableDate" : ISODate("2018-04-09T14:01:58Z"),
            "lastHeartbeat" : ISODate("2018-04-09T14:02:16.135Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-09T14:02:15.510Z"),
            "pingMs" : NumberLong(37),
            "syncingTo" : "192.168.133.44:21000",
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "192.168.133.66:21000",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 106,
            "optime" : {
                "ts" : Timestamp(1523282518, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1523282518, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-09T14:01:58Z"),
            "optimeDurableDate" : ISODate("2018-04-09T14:01:58Z"),
            "lastHeartbeat" : ISODate("2018-04-09T14:02:14.987Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-09T14:02:16.232Z"),
            "pingMs" : NumberLong(45),
            "syncingTo" : "192.168.133.44:21000",
            "configVersion" : 1
        }
    ],
    "ok" : 1,
    "operationTime" : Timestamp(1523282518, 1),
    "$gleStats" : {
        "lastOpTime" : Timestamp(1523282429, 1),
        "electionId" : ObjectId("7fffffff0000000000000001")
    },
    "$clusterTime" : {
        "clusterTime" : Timestamp(1523282518, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    }
}

4.下面配置mongos和三个shard

NoSQL(四)

[root@centos-01 ~]# vim /etc/mongod/shard1.conf
pidfilepath = /var/run/mongodb/shard1.pid
dbpath = /data/mongodb/shard1/data
logpath = /data/mongodb/shard1/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
httpinterface=true #打开web监控
rest=true
replSet=shard1 #副本集名称
shardsvr = true #declare this is a shard db of a cluster;
maxConns=20000 #设置最大连接数

[root@centos-02 ~]# vim /etc/mongod/shard1.conf
pidfilepath = /var/run/mongodb/shard1.pid
dbpath = /data/mongodb/shard1/data
logpath = /data/mongodb/shard1/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
httpinterface=true #打开web监控
rest=true
replSet=shard1 #副本集名称
shardsvr = true #declare this is a shard db of a cluster;
maxConns=20000 #设置最大连接数

[root@centos-03 ~]# vim /etc/mongod/shard1.conf
pidfilepath = /var/run/mongodb/shard1.pid
dbpath = /data/mongodb/shard1/data
logpath = /data/mongodb/shard1/log/shard1.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
httpinterface=true #打开web监控
rest=true
replSet=shard1 #副本集名称
shardsvr = true #declare this is a shard db of a cluster;
maxConns=20000 #设置最大连接数

[root@centos-01 ~]# cd /etc/mongod/
[root@centos-01 mongod]# cp shard1.conf shard2.conf 
[root@centos-01 mongod]# cp shard1.conf shard3.conf 
[root@centos-01 mongod]# sed -i 's/shard1/shard2/g' shard2.conf
[root@centos-01 mongod]# sed -i 's/shard1/shard3/g' shard3.conf
[root@centos-01 mongod]# cat !$
cat shard3.conf
pidfilepath = /var/run/mongodb/shard3.pid
dbpath = /data/mongodb/shard3/data
logpath = /data/mongodb/shard3/log/shard3.log
logappend = true
bind_ip = 0.0.0.0
port = 27001
fork = true
httpinterface=true #打开web监控
rest=true
replSet=shard3 #副本集名称
shardsvr = true #declare this is a shard db of a cluster;
maxConns=20000 #设置最大连接数

[root@centos-01 mongod]#

[root@centos-01 mongod]# scp shard2.conf shard3.conf 192.168.133.88:/etc/mongod/
The authenticity of host '192.168.133.88 (192.168.133.88)' can't be established.
ECDSA key fingerprint is bf:dc:4b:e3:1c:99:f4:12:6f:d0:a8:e0:13:8a:d0:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.133.88' (ECDSA) to the list of known hosts.
root@192.168.133.88's password: 
shard2.conf                                            100%  358     0.4KB/s   00:00    
shard3.conf                                            100%  358     0.4KB/s   00:00    
[root@centos-01 mongod]# scp shard2.conf shard3.conf 192.168.133.66:/etc/mongod/
The authenticity of host '192.168.133.66 (192.168.133.66)' can't be established.
ECDSA key fingerprint is bf:dc:4b:e3:1c:99:f4:12:6f:d0:a8:e0:13:8a:d0:dd.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.133.66' (ECDSA) to the list of known hosts.
root@192.168.133.66's password: 
shard2.conf                                            100%  358     0.4KB/s   00:00    
shard3.conf                                            100%  358     0.4KB/s   00:00    
[root@centos-01 mongod]#

NoSQL(四)

1.启动服务,搭建副本集(3.6版本的需要把配置文件中的httpinterface和rest注释掉)

[root@centos-01 mongod]# mongod -f /etc/mongod/shard1.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 6581
child process started successfully, parent exiting
[root@centos-01 mongod]#

[root@centos-02 ~]# mongod -f /etc/mongod/shard1.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3338
child process started successfully, parent exiting
[root@centos-02 ~]#

[root@centos-03 ~]# mongod -f /etc/mongod/shard1.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 11921
child process started successfully, parent exiting
[root@centos-03 ~]#

2.搭建shard1的副本集

> use admin
switched to db admin
> config = { _id: "shard1", members: [ {_id : 0, host : "192.168.133.44:27001"}, {_id: 1,host : "192.168.133.88:27001"},{_id : 2, host : "192.168.133.66:27001",arbiterOnly:true}] }
{
    "_id" : "shard1",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27001"
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27001"
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27001",
            "arbiterOnly" : true
        }
    ]
}
>

> rs.initiate(config)
{ "ok" : 1 }
shard1:OTHER> 
shard1:PRIMARY>

NoSQL(四)

1.启动shard2

[root@centos-02 ~]# mongod -f /etc/mongod/shard2.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 3554
child process started successfully, parent exiting
[root@centos-02 ~]# mongo --port 27002
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27002/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-09T23:31:24.947+0800 I CONTROL  [initandlisten] 
2018-04-09T23:31:24.950+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-09T23:31:24.950+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-09T23:31:24.950+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-04-09T23:31:24.951+0800 I CONTROL  [initandlisten] 
2018-04-09T23:31:25.050+0800 I CONTROL  [initandlisten] 
2018-04-09T23:31:25.051+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-09T23:31:25.052+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T23:31:25.052+0800 I CONTROL  [initandlisten] 
2018-04-09T23:31:25.052+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-09T23:31:25.053+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T23:31:25.053+0800 I CONTROL  [initandlisten] 
> config = { _id: "shard2", members: [ {_id : 0, host : "192.168.133.44:27002" ,arbiterOnly:true},{_id : 1, host : "192.168.133.88:27002"},{_id : 2, host : "192.168.133.66:27002"}] }
{
    "_id" : "shard2",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27002",
            "arbiterOnly" : true
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27002"
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27002"
        }
    ]
}
> rs.initiate(config)
{ "ok" : 1 }
shard2:OTHER> shard2:PRIMARY> 

2.配置shard3

[root@centos-01 mongod]# mongod -f /etc/mongod/shard3.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 7281
[root@centos-02 ~]# mongod -f /etc/mongod/shard3.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 3653
[root@centos-03 ~]# mongod -f /etc/mongod/shard3.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 12702

NoSQL(四)

1.启动shard3

[root@centos-03 ~]# mongod -f /etc/mongod/shard3.conf 
about to fork child process, waiting until server is ready for connections.
forked process: 12702
child process started successfully, parent exiting
[root@centos-03 ~]# 
[root@centos-03 ~]# mongo --port 27003
MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27003/
MongoDB server version: 3.6.3
Server has startup warnings: 
2018-04-09T23:38:13.623+0800 I CONTROL  [initandlisten] 
2018-04-09T23:38:13.625+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-04-09T23:38:13.625+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-04-09T23:38:13.625+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
2018-04-09T23:38:13.626+0800 I CONTROL  [initandlisten] 
2018-04-09T23:38:13.627+0800 I CONTROL  [initandlisten] 
2018-04-09T23:38:13.627+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2018-04-09T23:38:13.627+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T23:38:13.628+0800 I CONTROL  [initandlisten] 
2018-04-09T23:38:13.628+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2018-04-09T23:38:13.629+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
2018-04-09T23:38:13.629+0800 I CONTROL  [initandlisten] 
> use admin
switched to db admin
> config = { _id: "shard3", members: [ {_id : 0, host : "192.168.133.44:27003"},  {_id : 1, host : "192.168.133.88:27003", arbiterOnly:true}, {_id : 2, host : "192.168.133.66:27003"}] }
{
    "_id" : "shard3",
    "members" : [
        {
            "_id" : 0,
            "host" : "192.168.133.44:27003"
        },
        {
            "_id" : 1,
            "host" : "192.168.133.88:27003",
            "arbiterOnly" : true
        },
        {
            "_id" : 2,
            "host" : "192.168.133.66:27003"
        }
    ]
}
> rs.initiate(config)
{ "ok" : 1 }
shard3:OTHER> 
shard3:SECONDARY> 
shard3:SECONDARY> rs.status()
{
    "set" : "shard3",
    "date" : ISODate("2018-04-09T15:45:41.536Z"),
    "myState" : 1,
    "term" : NumberLong(1),
    "heartbeatIntervalMillis" : NumberLong(2000),
    "optimes" : {
        "lastCommittedOpTime" : {
            "ts" : Timestamp(1523288734, 1),
            "t" : NumberLong(1)
        },
        "readConcernMajorityOpTime" : {
            "ts" : Timestamp(1523288734, 1),
            "t" : NumberLong(1)
        },
        "appliedOpTime" : {
            "ts" : Timestamp(1523288737, 1),
            "t" : NumberLong(1)
        },
        "durableOpTime" : {
            "ts" : Timestamp(1523288737, 1),
            "t" : NumberLong(1)
        }
    },
    "members" : [
        {
            "_id" : 0,
            "name" : "192.168.133.44:27003",
            "health" : 1,
            "state" : 5,
            "stateStr" : "STARTUP2",
            "uptime" : 80,
            "optime" : {
                "ts" : Timestamp(1523288734, 1),
                "t" : NumberLong(1)
            },
            "optimeDurable" : {
                "ts" : Timestamp(1523288734, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-09T15:45:34Z"),
            "optimeDurableDate" : ISODate("2018-04-09T15:45:34Z"),
            "lastHeartbeat" : ISODate("2018-04-09T15:45:41.157Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-09T15:45:40.902Z"),
            "pingMs" : NumberLong(110),
            "syncingTo" : "192.168.133.66:27003",
            "configVersion" : 1
        },
        {
            "_id" : 1,
            "name" : "192.168.133.88:27003",
            "health" : 1,
            "state" : 7,
            "stateStr" : "ARBITER",
            "uptime" : 80,
            "lastHeartbeat" : ISODate("2018-04-09T15:45:41.170Z"),
            "lastHeartbeatRecv" : ISODate("2018-04-09T15:45:36.949Z"),
            "pingMs" : NumberLong(64),
            "configVersion" : 1
        },
        {
            "_id" : 2,
            "name" : "192.168.133.66:27003",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 519,
            "optime" : {
                "ts" : Timestamp(1523288737, 1),
                "t" : NumberLong(1)
            },
            "optimeDate" : ISODate("2018-04-09T15:45:37Z"),
            "infoMessage" : "could not find member to sync from",
            "electionTime" : Timestamp(1523288730, 1),
            "electionDate" : ISODate("2018-04-09T15:45:30Z"),
            "configVersion" : 1,
            "self" : true
        }
    ],
    "ok" : 1
}
shard3:PRIMARY>

NoSQL(四)

1.为什么将mongos放到最后讲呢,因为mongos想要起来必须先知道configserver和三个shard副本集

2.配置mongos

[root@centos-01 ~]# vim /etc/mongod/mongos.conf
[root@centos-01 ~]# 
pidfilepath = /var/run/mongodb/mongos.pid
logpath = /data/mongodb/mongos/log/mongos.log
logappend = true
bind_ip = 0.0.0.0
port = 20000
fork = true
configdb = configs/192.168.133.44:21000,192.168.133.88:21000,192.168.133.66:21000 #监听的
配置服务器,只能有1个或者3个,configs为配置服务器的副本集名字
maxConns=20000 #设置最大连接数

3.三台机器都配置mongos

[root@centos-01 ~]# scp /etc/mongod/mongos.conf 192.168.133.88:/etc/mongod/
root@192.168.133.88's password: 
mongos.conf                                            100%  364     0.4KB/s   00:00    
[root@centos-01 ~]# scp /etc/mongod/mongos.conf 192.168.133.66:/etc/mongod/
root@192.168.133.66's password: 
mongos.conf                                            100%  364     0.4KB/s   00:00    
[root@centos-01 ~]#

4.启动mongos

[root@centos-01 ~]# mongos -f /etc/mongod/mongos.conf 
[root@centos-02 ~]# mongos -f /etc/mongod/mongos.conf
[root@centos-03 ~]# mongos -f /etc/mongod/mongos.conf

NoSQL(四)

1.登录任何一台机器的20000端口

NoSQL(四)

2.把所有分片的路由器串联(注意IP前不要加空格)

NoSQL(四)

3.查看状态(rs.status是查看副本集,sh.status是查看分片)

NoSQL(四)

mongodb分片测试 

NoSQL(四)

1.登录任意一台20000端口

mongo --port 20000

NoSQL(四)

2.执行sh.statas()

mongodb备份恢复

NoSQL(四)

1.使用了分片了,备份的时候也需要到分片的这个端口里面去备份,创建要备份的文件夹并执行备份命令

NoSQL(四)

NoSQL(四)

2.备份所有的库

NoSQL(四)

3.备份指定的集合

NoSQL(四)

4.导出集合为json文件

NoSQL(四)

5.恢复数据

NoSQL(四)

1.如果恢复备份的文件是json用mongoimport命令否则用mongorestore,先删除库

NoSQL(四)

2.执行恢复操作

NoSQL(四)

3.查看是否恢复成功,结果库又恢复回来了

NoSQL(四)

4.恢复指定库

NoSQL(四)

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这