Thursday, May 2, 2019

Script - MongoDB Installation

#!/bin/sh

#Import the public key used by the package management system

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4

#Create a list file for MongoDB

echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list

#Reload local package database

echo "######################################################################"
echo "#                      Updating Repositories                         #"
echo "######################################################################"
sleep 3
sudo apt-get update

#Install the MongoDB packages

echo "######################################################################"
echo "#                      Installing Packages                           #"
echo "######################################################################"
sleep 3
sudo apt-get install -y mongodb-org


echo "###################Starting MonogDB Server##################"
sleep 3
sudo service mongod start

echo "#######################Starting MonogDB Client############################"
sleep 5
mongo

Tuesday, April 30, 2019

MongoDB Installation - Linux + Mongo

MongoDB 4.0.8 -  Installation
--------------------------------------

Install MongoDB and Configure Replica Set

Prerequisite:
---------------

1) create user - mongod
   home directory - /home/mongod

   groupadd -g 490 mongod
   useradd mongod -u 496 -g mongod -c 'mongod User' -s /bin/bash -d /home/mongod
   id mongod

2) Create file in /etc/init.d - /etc/init.d/mongod
   chown mongod:mongod /etc/init.d/mongod
   chmod 775 /etc/init.d/mongod

3) create directory in /var/run/ - /var/run/mongodb/
   chown mongod:mongod /var/run/mongodb/
   chmod 775 /var/run/mongodb/

4) Change ownership and permission for /data
   chown -R mongod:mongod /data
   chmod -R 775 /data

Servers:
-----------

server1:27017 - Pri
server2:27017 - Sec
server3:27017 – Sec

Prerequisites – for all the 3 servers

Create necessary directories
-----------------------------------

# dzdo su - mongod
# mkdir -p /data/usr/conf
# mkdir -p /data/usr/logs/
# mkdir -p /data/usr/mongod_data
# chown -R mongod:mongod /data/usr
# chmod -R 775 /data/usr
# mkdir -p /var/run/mongodb/
# chown mongod:mongod /var/run/mongodb/
# chmod 775 /var/run/mongodb/
# chmod -R 775 /data/usr
# touch /etc/init.d/mongod
# chown mongod:mongod /etc/init.d/mongod
# chmod 775 /etc/init.d/mongod

Copy the Latest copy of binaries
-----------------------------------------

server10

# scp -r /data/usr/mongodb-linux-x86_64-rhel62-4.0.8 user@server1:/tmp
# scp -r /data/usr/mongodb-linux-x86_64-rhel62-4.0.8 user@server2:/tmp
# scp -r /data/usr/mongodb-linux-x86_64-rhel62-4.0.8 user@server3:/tmp

# chmod -R 777 /tmp/mongodb-linux-x86_64-rhel62-4.0.8
# dzdo su - mongod
# cp -r /tmp/mongodb-linux-x86_64-rhel62-4.0.8 /data/usr/

/

# cp -avr /data/usr/mongodb-linux-x86_64-rhel62-3.6.5 /data/usr/
# scp -r user@server10:/data/usr/mongodb-linux-x86_64-rhel62-3.6.5 /data/usr/
# tar -zxvf  mongodb-linux-x86_64-rhel62-3.6.5.tgz


Create Softlink
--------------------

# ln -s /data/usr/mongodb-linux-x86_64-rhel62-4.0.8 /data/usr/mongodb

Create Config File:
-----------------------

# vi /data/usr/conf/mongod.conf

net:
  port: 27017
  bindIpAll: true
processManagement:
  pidFilePath: /var/run/mongodb/mongod.pid
  fork: true
#security:
#  keyFile: /data/usr/keyfile
replication:
  replSetName: Media_Feed_Auto
storage:
  dbPath: /data/usr/mongod_data
systemLog:
  destination: file
  logAppend: true
  logRotate: rename
  path: /data/usr/logs/mongod.log
# :wq!

# chown -R mongod:mongod /data/usr
# chmod -R 775 /data/usr

Create Init.d scripts – to run mongod as a service
-----------------------------------------------------------

# copy the script to the file /etc/init.d/mongod

File Paths
------------

Config File Path: /data/usr/conf/mongod.conf
Log File Path: /data/usr/logs/mongod.log
Binary File Path: /data/usr/mongodb/bin/mongod

Configure Replica Set:
-----------------------------

1) Start each member of the replica set.

# dzdo service mongod start

2) Connect to a member of the replica set.

server1

# /data/usr/mongodb/bin/mongo

3) Initiate the replica set.

# rs.initiate()
# rs.add("server2:27017")
# rs.add("server3:27017")

Login to mongo console
-------------------------------

/data/usr/mongodb/bin/mongo mongodb://server1:27017,server2:27017,server3:27017/admin?replicaSet=Media_Feed_Auto

email warning: - fix

cat /etc/postfix/main.cf|grep -i inet_prot

[x007516a@xsnl11c950w ~]$ cat /etc/postfix/main.cf|grep -i inet_prot
#inet_protocols = all
inet_protocols = ipv4

service postfix restart

Passwordless SSH

https://www.tecmint.com/ssh-passwordless-login-using-ssh-keygen-in-5-easy-steps/
-------------------------------------------------------------------------------------------------------

SSH Passwordless Login

Step 1: Create Authentication SSH-Kegen Keys on – (xsnl11c949k)

ssh-keygen -t rsa

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.

Step 2: Create .ssh Directory on – xsnl11c951b

ssh x007516a@xsnl11c951b mkdir -p .ssh

Step 3: Upload Generated Public Keys to – xsnl11c951b

cat .ssh/id_rsa.pub | ssh x007516a@xsnl11c951b 'cat >> .ssh/authorized_keys'

Step 4: Set Permissions on – xsnl11c951b

ssh x007516a@xsnl11c951b "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"

Step 5: Login from xsnl11c949k to xsnl11c951b Server without Password

----------------------------------------------------------------------------------------------------

#!/bin/bash
servers="/home/servers.txt"
for server in `cat $servers`
do
ssh tommy@$server mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh tommy@$server 'cat >> .ssh/authorized_keys'
ssh tommy@$server "chmod 700 .ssh; chmod 640 .ssh/authorized_keys"
done

Get Size in MongoDB

Collections Size of a DB
-------------------------

var collectionNames = db.getCollectionNames(), stats = [];
collectionNames.forEach(function (n) { stats.push(db[n].stats()); });
var stats = stats.sort(function(a, b) { return b['size'] - a['size']; });
for (var c in stats) { print(stats[c]['ns'] + ": " + stats[c]['size'] + " (" + stats[c]['storageSize'] + ")"); }

DB size
--------

db.adminCommand("listDatabases").databases.sort(function(l, r) {
         return r.sizeOnDisk - l.sizeOnDisk}).forEach(function(d) {
         print(d.name + " - " + d.sizeOnDisk)});

(OR)

db = db.getSiblingDB("admin");
dbs = db.runCommand({ "listDatabases": 1 }).databases;
var sum1=0;dbs.forEach(function(database) { sum1+=db.getMongo().getDB(database.name).stats().dataSize }); print(sum1);

Total Size of all DBs
---------------------

var sum = 0; db.getMongo().getDBs()["databases"].forEach(function(x) { sum += db.getMongo().getDB(x.name).stats().dataSize}); print(sum );


Saturday, April 20, 2019

Connection String - MongoDB

Replica Set - Connection String:
-----------------------------------

/data/usr/mongodb/bin/mongo --host rs0/server1:27018,server2:27018 -u user_name -p password --authenticationDatabase admin

/data/usr/mongodb/bin/mongo mongodb://user_name:password@server1:27018,server2:27018/admin?replicaSet=rs0

-----------------------------------------------------------

Sharded Cluster - Connection String:
--------------------------------------

/data/usr/mongodb/bin/mongo --port 27017 -u user_name -p password --authenticationDatabase admin
/data/usr/mongodb/bin/mongo mongodb://user_name:password@server1:27017/admin

-----------------------------------------------------------

Authenticate and connect to test DB
--------------------------------------

/data/usr/mongodb/bin/mongo mongodb://user_name:password@server1:27017/test?authSource=admin

-----------------------------------------------------------

without Authentication:
----------------------------

/data/usr/mongodb/bin/mongo mongodb://server1:27017,server2:27017,server3:27017/admin?replicaSet=rs0

------------------------------------------------------------

Friday, April 19, 2019

Config Files - MongoDB - Samples

mongos:
--------

net:
  port: 27017
processManagement:
  pidFilePath: /var/run/mongodb/mongod.pid
  fork: true
security:
  keyFile: /data/usr/keyfile
sharding:
  configDB: CSRS/server1:27019,server2:27019,server3:27019
systemLog:
  destination: file
  logAppend: true
  logRotate: rename
  path: /data/usr/logs/mongos.log


Config Servers:
----------------

net:
  port: 27019
processManagement:
  pidFilePath: /var/run/mongodb/mongod.pid
  fork: true
security:
  keyFile: /data/usr/keyfile
sharding:
  clusterRole: configsvr
replication:
   replSetName: CSRS
storage:
  dbPath: /data/usr/mongod_config_data
systemLog:
  destination: file
  logAppend: true
  logRotate: rename
  path: /data/usr/logs/mongod_config.log


mongod servers:
----------------

net:
  port: 27017
processManagement:
  pidFilePath: /var/run/mongodb/mongod.pid
  fork: true
security:
  keyFile: /data/usr/keyfile
sharding:
  clusterRole: shardsvr
replication:
  replSetName: rs0
storage:
  dbPath: /data/usr/mongod_data
systemLog:
  destination: file
  logAppend: true
  logRotate: rename
  path: /data/usr/logs/mongod.log


From 3.6 Versions:
-------------------

net:
  port: 27017
  bindIpAll: true
processManagement:
  pidFilePath: /var/run/mongodb/mongod.pid
  fork: true
#security:
#  keyFile: /data/usr/keyfile
replication:
  replSetName: rs0
storage:
  dbPath: /data/usr/mongod_data
systemLog:
  destination: file
  logAppend: true
  logRotate: rename
  path: /data/usr/logs/mongod.log