//***************** 10.2.1  ***********************

## Utworzenie trzech katalogów danych w katalogu domowym użytkownika.
mkdir ~/node1
mkdir ~/node2
mkdir ~/arbiter

## Najlepiej wykonać te polecenia w oddzielnych oknach terminala!
mongod --replSet myapp --dbpath ~/node1 --port 40000
mongod --replSet myapp --dbpath ~/node2 --port 40001
mongod --replSet myapp --dbpath ~/arbiter --port 40002

## Nawiązanie połączenia z mongod, a następnie wykonanie poniższych poleceń!
mongo --port 40000

// Wydaj to polecenie w konsoli mongo uruchomionej za pomocą "mongo --port 40000".
// Uruchomienie pierwszej repliki (używając mongod, z którym mamy połączenie przez port 40000).
rs.initiate()

// Dodanie kolejnej repliki.
// UWAGA: zmień wartość "iron.local:40000" 
// na nazwę podaną w komunikatach startowych.
//         "me" : "{nazwaTwojegoSerwera}:40000",

rs.add("iron.local:40001")
// Polecenie dla mojego komputera:    rs.add("D830J:40001")

// Dodanie arbitra.
rs.add("iron.local:40002", {arbiterOnly: true})
// Polecenie dla mojego komputera:   rs.add("D830J:40002", {arbiterOnly: true})

// Sprawdzenie stanu. 
db.isMaster()


// Więcej informacji szczegółowych.
rs.status()

// PRZYJMUJĄC ZAŁOŻENIE, że nadal znajdujesz się w powłoce
// i używasz serwera głównego,
// spróbuj przeprowadzić wstawienie testowe.
use bookstore
db.books.insert({title: "Oliver Twist"})
show dbs


## OTWÓRZ KOLEJNE OKNO TERMINALA (to powinno być teraz piąte)
## i wprowadź poniże polecenie w celu otrzymania drugiego serwera mongod.
mongo --port 40001

// Wydaj te polecenia z poziomu konsoli.
show dbs
use bookstore 
rs.slaveOk()
db.books.find()

## TERAZ - wyłącz serwer GŁÓWNY...
## Przejdź do okna konsoli wyświetlającej główny serwer mongod,
## powinieneś zobaczyć dane podobne do poniższych.
mongo --port 40000

// W znaku zachęty powinno być słowo PRIMARY!
myapp:PRIMARY>

// Wydaj poniższe polecenia.
use admin  
db.shutdownServer()

# Przejdź do terminala wyświetlającego poprzedni serwer "PODLEGŁY" 
# lub w nowym oknie terminala wydaj poniższe polecenie.
mongo --port 40001

// To powinien być teraz serwer główny.
rs.status()

//*************************  10.2.2  ********************************

## OPCJONALNIE? Uruchom ponownie mongod na porcie 40000.
## W nowym oknie terminala (lub użytym poprzednio dla mongod --port 40000)
## wydaj poniższe polecenie.
mongod --replSet myapp --dbpath ~/node1 --port 40000

## W konsoli mongo, jeżeli nie jesteś połączony z żadną, wydaj poniższe
## polecenie, przy założeniu, że 40001 to WCIĄŻ serwer główny.
## Jeżeli nie, użyj 40000.
mongo --port 40001  

// Teraz w konsoli upewnij się, 
// że widzisz poniższy znak zachęty.

myapp:PRIMARY>

// Następnie wydaj polecenia.
user local

show collections

db.oplog.rs.findOne({op: "i"})

// UWAGA: zastąp Timestamp wartością zwróconą przez poprzednie polecenie
// JEŻELI chcesz otrzymać jakikolwiek wynik.
db.oplog.rs.findOne({ts: Timestamp(1383844267, 1)})

// Dodanie kolejnych książek.
use bookstore
db.books.insert({title: "A Tale of Two Cities"})
db.books.insert({title: "Great Expectations"})

db.books.update({}, {$set: {author: "Dickens"}}, {multi:true})

// Spoglądamy do dziennika zdarzeń.
use local
db.oplog.rs.find({op: "u"})

// Pobieramy informacje o replikacji.
db.getReplicationInfo()

// Pobieramy ostatni dokument dziennika zdarzeń replikacji.
db.oplog.rs.find().sort({$natural: -1}).limit(1)

