MongoDBいじり 3台構成のレプリカセット その1のつづき
【いじり7】
「レプリカセットメンバーとしてインスタンスを起動した時」と、「各メンバーをスタンドアロンでインスタンスを起動した時」で、DBデータに相違点があるか?
1.スタンドアロンでmongodbインスタンスを起動
[pc3_centos7_k2]$ mkdir /tmp/0_0
[pc3_centos7_k2]$ mongod --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/0_0 &
1-1.スタンドアロン状態でただ起動してるだけでクライアントからのアクセス無し
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 16:48:42 JST
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 16:51:31 JST
・起動しっぱなしでただ3分間経過しただけでなんにもしてないDBデータどうしを比較。
[pc3_centos7_k2]$ diff 0_0_16:48:42.txt 0_0_16:51:31.txt
2c2
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 59e1694f9004e97a86687eae1ecc960f
---
> /tmp/0_0/journal/WiredTigerLog.0000000002 100M d4524257548ae55279a8e825e3896bd1
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K 2f546d4ba522f052912ff99276f561fb
< /tmp/0_0/WiredTiger.turtle 1.3K 80d90079f3c6c024964c5710b1aced9c
---
> /tmp/0_0/WiredTiger.wt 60K e818b4e92c7503b73e8ddc52b3eee890
> /tmp/0_0/WiredTiger.turtle 1.3K b632a62cb6b6a15e0623c7cdfac6f5af
21,22c21,22
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 94K 7f3b82c9ba8facc185e220f663c4c522
< /tmp/0_0/diagnostic.data/metrics.interim 18K 04c9faa935d1678a347d9d6b2e7e18e9
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 114K b800906cc08a3358ad636f9445f26b70
> /tmp/0_0/diagnostic.data/metrics.interim 15K 72c28b6424d15e7abd1d201e85ee9a93
→上記のように何にもしてないのに下記の5ファイルに勝手に変更がかかる
journal/WiredTigerLog.0000000002
WiredTiger.wt
WiredTiger.turtle
diagnostic.data/metrics.2020-10-23T07-28-58Z-00000
diagnostic.data/metrics.interim
1-2.スタンドアロン状態のインスタンスにクライアントからの接続直後
[pc3_centos7_k3]$ mongo --host 192.168.101.32 --port 27021
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 17:02:14 JST
[pc3_centos7_k2]$ diff 0_0_16:48:42.txt 0_0_17:02:14.txt
2c2
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 59e1694f9004e97a86687eae1ecc960f
---
> /tmp/0_0/journal/WiredTigerLog.0000000002 100M ebfaf7c93a4829e1268957012a34291a
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K 2f546d4ba522f052912ff99276f561fb
< /tmp/0_0/WiredTiger.turtle 1.3K 80d90079f3c6c024964c5710b1aced9c
---
> /tmp/0_0/WiredTiger.wt 60K 43f6e375b4af433019ca54acd9db02f3
> /tmp/0_0/WiredTiger.turtle 1.3K 15471d8ef1ab9dea4034961823460a82
21,22c21,22
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 94K 7f3b82c9ba8facc185e220f663c4c522
< /tmp/0_0/diagnostic.data/metrics.interim 18K 04c9faa935d1678a347d9d6b2e7e18e9
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 151K 1afc9079c737b41b58f2833c67630861
> /tmp/0_0/diagnostic.data/metrics.interim 16K a76760b082d9b9ddb0ee0a6323bb9452
→変更がかかってるファイルのメンツはクライアントからアクセスが無い時と同じ
1-3.スタンドアロン状態のインスタンスをkillで終了後
[pc3_centos7_k2]$ kill 15127
----(略)----
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 17:09:41 JST
[pc3_centos7_k2]$ diff 0_0_16:48:42.txt 0_0_17:09:41.txt
1,2c1,2
< /tmp/0_0/mongod.lock 6 0d287036f592eff3b90b3b43afdf9284
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 59e1694f9004e97a86687eae1ecc960f
---
> /tmp/0_0/mongod.lock 0 d41d8cd98f00b204e9800998ecf8427e
> /tmp/0_0/journal/WiredTigerLog.0000000002 100M 879d26e9f782d47b5637ed19cbbef66d
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K 2f546d4ba522f052912ff99276f561fb
< /tmp/0_0/WiredTiger.turtle 1.3K 80d90079f3c6c024964c5710b1aced9c
---
> /tmp/0_0/WiredTiger.wt 60K b770bae7bc900f2d800fdc20498fb831
> /tmp/0_0/WiredTiger.turtle 1.3K 5602c6a1be93be63170c5df392aea0fd
10c10
< /tmp/0_0/sizeStorer.wt 36K 9823249038e82a2d227f726d10ec4672
---
> /tmp/0_0/sizeStorer.wt 36K b3fad8318d9abe14e3f66de2647062dd
17,19c17,19
< /tmp/0_0/collection-4-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-5-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-6-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
---
> /tmp/0_0/collection-4-932399827175288110.wt 20K 1532ff93b2c967cfc79619588d39354d
> /tmp/0_0/index-5-932399827175288110.wt 20K 8c5dbcab0f234fab955f1b25436ccf33
> /tmp/0_0/index-6-932399827175288110.wt 20K 8fedf958d23b057fa90648577c4952ee
21,22c21
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 94K 7f3b82c9ba8facc185e220f663c4c522
< /tmp/0_0/diagnostic.data/metrics.interim 18K 04c9faa935d1678a347d9d6b2e7e18e9
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 188K be9c5451db5f0dd6c3edfa687fc0c22a
→変更がかかってるファイルのメンツが5つ増えた
(ただ起動してるだけとの差分はオレンジと赤)
※collection-4とindex-5,index-6は管理用データベースのもの(ユーザデータがまだないので)
1-4.スタンドアロン状態のインスタンスをもう一回起動
[pc3_centos7_k2]$ mongod --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/0_0 &
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 17:23:34 JST
・初回起動したときとの差分
[pc3_centos7_k2]$ diff 0_0_16:48:42.txt 0_0_17:23:34.txt
1,2c1,2
< /tmp/0_0/mongod.lock 6 0d287036f592eff3b90b3b43afdf9284
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 59e1694f9004e97a86687eae1ecc960f
---
> /tmp/0_0/mongod.lock 6 5094de2b44ddc828d26d19d9eac1cf74
> /tmp/0_0/journal/WiredTigerLog.0000000003 100M 0b95db517ea40bc47aaeccaadee4de11
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K 2f546d4ba522f052912ff99276f561fb
< /tmp/0_0/WiredTiger.turtle 1.3K 80d90079f3c6c024964c5710b1aced9c
---
> /tmp/0_0/WiredTiger.wt 60K caf870225f155b99fb3abb7e979e877e
> /tmp/0_0/WiredTiger.turtle 1.3K 1d76609596846c565703a52ca7993f80
10c10
< /tmp/0_0/sizeStorer.wt 36K 9823249038e82a2d227f726d10ec4672
---
> /tmp/0_0/sizeStorer.wt 36K 4db1e6ce5188d8b10b7718f8d7496e57
15,19c15,19
< /tmp/0_0/collection-2-932399827175288110.wt 36K 354b57d646e69635a8bafd0941266090
< /tmp/0_0/index-3-932399827175288110.wt 36K 21ae0e4b6da52cf2a5091a2fd5e4a59a
< /tmp/0_0/collection-4-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-5-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-6-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
---
> /tmp/0_0/collection-2-932399827175288110.wt 36K f24a9c6ad5cfd552b7633dff05999e96
> /tmp/0_0/index-3-932399827175288110.wt 36K f326b075ec720a2e4d8f60ac7ce99bc7
> /tmp/0_0/collection-4-932399827175288110.wt 20K 1532ff93b2c967cfc79619588d39354d
> /tmp/0_0/index-5-932399827175288110.wt 20K 8c5dbcab0f234fab955f1b25436ccf33
> /tmp/0_0/index-6-932399827175288110.wt 20K 8fedf958d23b057fa90648577c4952ee
21,22c21,23
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 94K 7f3b82c9ba8facc185e220f663c4c522
< /tmp/0_0/diagnostic.data/metrics.interim 18K 04c9faa935d1678a347d9d6b2e7e18e9
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 188K be9c5451db5f0dd6c3edfa687fc0c22a
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-20-57Z-00000 35K c5783cba0f8b94cca9e47a18f5bb5021
> /tmp/0_0/diagnostic.data/metrics.interim 15K 1bd0907f9a704af0dab29bd51d961bd4
(初回起動したときとの差分は黄緑と緑)
journal/WiredTigerLog.000000000番号の「番号」が1つ繰り上がった
・前回killした直後との差分
[pc3_centos7_k2]$ diff 0_0_17:09:41.txt 0_0_17:23:34.txt
1,2c1,2
< /tmp/0_0/mongod.lock 0 d41d8cd98f00b204e9800998ecf8427e
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 879d26e9f782d47b5637ed19cbbef66d
---
> /tmp/0_0/mongod.lock 6 5094de2b44ddc828d26d19d9eac1cf74
> /tmp/0_0/journal/WiredTigerLog.0000000003 100M 0b95db517ea40bc47aaeccaadee4de11
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K b770bae7bc900f2d800fdc20498fb831
< /tmp/0_0/WiredTiger.turtle 1.3K 5602c6a1be93be63170c5df392aea0fd
---
> /tmp/0_0/WiredTiger.wt 60K caf870225f155b99fb3abb7e979e877e
> /tmp/0_0/WiredTiger.turtle 1.3K 1d76609596846c565703a52ca7993f80
10c10
< /tmp/0_0/sizeStorer.wt 36K b3fad8318d9abe14e3f66de2647062dd
---
> /tmp/0_0/sizeStorer.wt 36K 4db1e6ce5188d8b10b7718f8d7496e57
15,16c15,16
< /tmp/0_0/collection-2-932399827175288110.wt 36K 354b57d646e69635a8bafd0941266090
< /tmp/0_0/index-3-932399827175288110.wt 36K 21ae0e4b6da52cf2a5091a2fd5e4a59a
---
> /tmp/0_0/collection-2-932399827175288110.wt 36K f24a9c6ad5cfd552b7633dff05999e96
> /tmp/0_0/index-3-932399827175288110.wt 36K f326b075ec720a2e4d8f60ac7ce99bc7
21a22,23
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-20-57Z-00000 35K c5783cba0f8b94cca9e47a18f5bb5021
> /tmp/0_0/diagnostic.data/metrics.interim 15K 1bd0907f9a704af0dab29bd51d961bd4
/tmp/0_0/diagnostic.data/metrics.interim はインスタンスが起動してる時しか居ない?
ちなみに一回killしてから起動した後のファイル構成は下記の通り
[pc3_centos7_k2]$ date;ls -lhAR /tmp/0_0/
2020年 10月 23日 金曜日 17:51:44 JST
/tmp/0_0/:
合計 312K
-rw-------. 1 root root 47 10月 23 16:28 WiredTiger
-rw-------. 1 root root 21 10月 23 16:28 WiredTiger.lock
-rw-------. 1 root root 1.3K 10月 23 17:50 WiredTiger.turtle
-rw-------. 1 root root 60K 10月 23 17:50 WiredTiger.wt
-rw-------. 1 root root 4.0K 10月 23 17:20 WiredTigerHS.wt
-rw-------. 1 root root 20K 10月 23 17:20 _mdb_catalog.wt
-rw-------. 1 root root 20K 10月 23 17:20 collection-0-932399827175288110.wt
-rw-------. 1 root root 36K 10月 23 17:21 collection-2-932399827175288110.wt
-rw-------. 1 root root 24K 10月 23 17:35 collection-4-932399827175288110.wt
drwx------. 2 root root 155 10月 23 17:51 diagnostic.data
-rw-------. 1 root root 20K 10月 23 17:20 index-1-932399827175288110.wt
-rw-------. 1 root root 36K 10月 23 17:21 index-3-932399827175288110.wt
-rw-------. 1 root root 24K 10月 23 17:35 index-5-932399827175288110.wt
-rw-------. 1 root root 12K 10月 23 17:50 index-6-932399827175288110.wt
drwx------. 2 root root 110 10月 23 17:20 journal
-rw-------. 1 root root 6 10月 23 17:20 mongod.lock
-rw-------. 1 root root 36K 10月 23 17:34 sizeStorer.wt
-rw-------. 1 root root 114 10月 23 16:28 storage.bson
/tmp/0_0/diagnostic.data:
合計 372K
-rw-------. 1 root root 33K 10月 23 16:28 metrics.2020-10-23T07-28-48Z-00000
-rw-------. 1 root root 188K 10月 23 17:08 metrics.2020-10-23T07-28-58Z-00000
-rw-------. 1 root root 128K 10月 23 17:46 metrics.2020-10-23T08-20-57Z-00000
-rw-------. 1 root root 19K 10月 23 17:51 metrics.interim
/tmp/0_0/journal:
合計 300M
-rw-------. 1 root root 100M 10月 23 17:50 WiredTigerLog.0000000003
-rw-------. 1 root root 100M 10月 23 17:20 WiredTigerPreplog.0000000001
-rw-------. 1 root root 100M 10月 23 17:20 WiredTigerPreplog.0000000002
1-5.スタンドアロン状態のインスタンスをもう一回killして起動(しつこいw)
[pc3_centos7_k2]$ kill 16704;sleep 1;mongod --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/0_0 &
・初回起動したときと比較
[pc3_centos7_k2]$ diff 0_0_16:48:42.txt 0_0_17:58:34.txt
1,2c1,2
< /tmp/0_0/mongod.lock 6 0d287036f592eff3b90b3b43afdf9284
< /tmp/0_0/journal/WiredTigerLog.0000000002 100M 59e1694f9004e97a86687eae1ecc960f
---
> /tmp/0_0/mongod.lock 6 90715fb9db0771823073f06d8290e7ae
> /tmp/0_0/journal/WiredTigerLog.0000000004 100M 2a370038567484aebf152b084125d2cc
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K 2f546d4ba522f052912ff99276f561fb
< /tmp/0_0/WiredTiger.turtle 1.3K 80d90079f3c6c024964c5710b1aced9c
---
> /tmp/0_0/WiredTiger.wt 60K e422e233cca1000a7233c3e13cf899d0
> /tmp/0_0/WiredTiger.turtle 1.3K c08caf991e884acc644ab803ccc41f85
10c10
< /tmp/0_0/sizeStorer.wt 36K 9823249038e82a2d227f726d10ec4672
---
> /tmp/0_0/sizeStorer.wt 36K 8fa6b2fa78909ea0df44ae3783709180
15,19c15,19
< /tmp/0_0/collection-2-932399827175288110.wt 36K 354b57d646e69635a8bafd0941266090
< /tmp/0_0/index-3-932399827175288110.wt 36K 21ae0e4b6da52cf2a5091a2fd5e4a59a
< /tmp/0_0/collection-4-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-5-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
< /tmp/0_0/index-6-932399827175288110.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
---
> /tmp/0_0/collection-2-932399827175288110.wt 36K 583f8f1bdd999d809b7a4068f2a0740c
> /tmp/0_0/index-3-932399827175288110.wt 36K 6a670884e34c9f0583e437b37ea9e327
> /tmp/0_0/collection-4-932399827175288110.wt 24K 61173f5cc110a668b459e27b45f39bf5
> /tmp/0_0/index-5-932399827175288110.wt 24K b122ca04c3ee19fa5e1b1ee7d42e2d06
> /tmp/0_0/index-6-932399827175288110.wt 12K fc7788cb3e36891a4ad864a1337d26ef
21,22c21,24
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 94K 7f3b82c9ba8facc185e220f663c4c522
< /tmp/0_0/diagnostic.data/metrics.interim 18K 04c9faa935d1678a347d9d6b2e7e18e9
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T07-28-58Z-00000 188K be9c5451db5f0dd6c3edfa687fc0c22a
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-20-57Z-00000 166K 5cda5796dcfe5c6bef29899684e31e99
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-56-49Z-00000 35K 73dfa5d52eb16ab0e99b3375fdecf170
> /tmp/0_0/diagnostic.data/metrics.interim 13K a7b80e057f04f54081abb9b334beb2b0
→やはり、journal/WiredTigerLog.0000000004 が繰り上がった。まあいっか。
1-6.スタンドアロン状態のインスタンスをkillしてレプリカセットrs1として起動
[pc3_centos7_k2]$ kill 16878;sleep 1;mongod --replSet rs1 --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/0_0 --oplogSize 128 &
[pc3_centos7_k2]$ ps -ef | grep mong[o]
mongod 6858 1 1 10月19 ? 01:02:35 /usr/bin/mongod -f /etc/mongod.conf
root 14277 1 0 11:49 pts/2 00:03:45 mongod --replSet rs0 --port 27018 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_0 --oplogSize 128
root 14589 1 0 13:21 pts/2 00:02:13 mongod --replSet rs0 --port 27019 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_1 --oplogSize 128
root 14687 1 0 13:21 pts/2 00:02:12 mongod --replSet rs0 --port 27020 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_2 --oplogSize 128
root 14782 13140 0 13:21 pts/1 00:00:00 mongo --port 27018
root 17056 13159 2 18:09 pts/2 00:00:01 mongod --replSet rs1 --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/0_0 --oplogSize 128
→起動した。
[pc3_centos7_k2]$ date;find /tmp/0_0 -type f|while read X;do ls -lh $X|awk '{printf "%59-s%6s",$9,$5}';md5sum $X|awk '{print " ", $1}';done > /tmp/0_0_`date "+%H:%M:%S"`.txt
2020年 10月 23日 金曜日 18:12:51 JST
・直近にスタンドアロン起動したときと比較
[pc3_centos7_k2]$ diff 0_0_17:58:34.txt 0_0_18:12:51.txt
1,2c1,2
< /tmp/0_0/mongod.lock 6 90715fb9db0771823073f06d8290e7ae
< /tmp/0_0/journal/WiredTigerLog.0000000004 100M 2a370038567484aebf152b084125d2cc
---
> /tmp/0_0/mongod.lock 6 d4f8e0b04498606dc38710a35d6e6a8d
> /tmp/0_0/journal/WiredTigerLog.0000000005 100M 333a2e63c275d95f8f229730a19b6a22
7,8c7,8
< /tmp/0_0/WiredTiger.wt 60K e422e233cca1000a7233c3e13cf899d0
< /tmp/0_0/WiredTiger.turtle 1.3K c08caf991e884acc644ab803ccc41f85
---
> /tmp/0_0/WiredTiger.wt 88K febe4ee9ae3d2a73c65ab8ee753afd4a
> /tmp/0_0/WiredTiger.turtle 1.3K 94ae7e77fac0073aac23f18e8aec790f
10,11c10,11
< /tmp/0_0/sizeStorer.wt 36K 8fa6b2fa78909ea0df44ae3783709180
< /tmp/0_0/_mdb_catalog.wt 20K 9d6f4709572e7a0298ee7c794c655acb
---
> /tmp/0_0/sizeStorer.wt 36K 27dc497b80007e548bcc7605af1ded7b
> /tmp/0_0/_mdb_catalog.wt 36K 5040c0da2049253841dfaa3fbec06cc3
15,16c15,16
< /tmp/0_0/collection-2-932399827175288110.wt 36K 583f8f1bdd999d809b7a4068f2a0740c
< /tmp/0_0/index-3-932399827175288110.wt 36K 6a670884e34c9f0583e437b37ea9e327
---
> /tmp/0_0/collection-2-932399827175288110.wt 36K 0848f56cae370d58d215744d3b054a8f
> /tmp/0_0/index-3-932399827175288110.wt 36K 8f25dca010a2796521b03a5734d6da63
19c19
< /tmp/0_0/index-6-932399827175288110.wt 12K fc7788cb3e36891a4ad864a1337d26ef
---
> /tmp/0_0/index-6-932399827175288110.wt 12K c2a030a9231e711cba598516c96ea382
23,24c23,33
< /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-56-49Z-00000 35K 73dfa5d52eb16ab0e99b3375fdecf170
< /tmp/0_0/diagnostic.data/metrics.interim 13K a7b80e057f04f54081abb9b334beb2b0
---
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T08-56-49Z-00000 73K e1bcca7d9758bda31cf301117bbe6b1b
> /tmp/0_0/diagnostic.data/metrics.2020-10-23T09-09-41Z-00000 22K 9306add4be33bd1ec9bfc21e9996abee
> /tmp/0_0/diagnostic.data/metrics.interim 18K b6416fe2b4f00ae2299ed1134da5bffd
> /tmp/0_0/collection-0--769241995958111853.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
> /tmp/0_0/index-1--769241995958111853.wt 4.0K 9af97f7280e40075ffb0575fe2baebcc
> /tmp/0_0/collection-2--769241995958111853.wt 20K 5935f5df07ef77572c427d33ab13adc8
> /tmp/0_0/index-3--769241995958111853.wt 20K 07b4b7451e16f8920d2b2f4c4cfa9b06
> /tmp/0_0/collection-4--769241995958111853.wt 20K ef1e2c9a1ea9a2acf30bb83360b6ca59
> /tmp/0_0/index-5--769241995958111853.wt 20K 291839acc6fe670c2fcf56afb0ce0045
> /tmp/0_0/collection-6--769241995958111853.wt 20K 764a4b31fbc77030699548095a90bccd
> /tmp/0_0/index-7--769241995958111853.wt 20K 9f565ad030be4974e071a9d15a7b218b
ちなみにファイル構成は下記の通り
date;ls -lhAR /tmp/0_0/
2020年 10月 23日 金曜日 18:19:50 JST
/tmp/0_0/:
合計 484K
-rw-------. 1 root root 47 10月 23 16:28 WiredTiger
-rw-------. 1 root root 21 10月 23 16:28 WiredTiger.lock
-rw-------. 1 root root 1.3K 10月 23 18:11 WiredTiger.turtle
-rw-------. 1 root root 88K 10月 23 18:11 WiredTiger.wt
-rw-------. 1 root root 4.0K 10月 23 18:09 WiredTigerHS.wt
-rw-------. 1 root root 36K 10月 23 18:10 _mdb_catalog.wt ←replicasetにしたらこれが変わった臭い
-rw-------. 1 root root 4.0K 10月 23 18:09 collection-0--769241995958111853.wt
-rw-------. 1 root root 20K 10月 23 18:09 collection-0-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 collection-2--769241995958111853.wt
-rw-------. 1 root root 36K 10月 23 18:10 collection-2-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 collection-4--769241995958111853.wt
-rw-------. 1 root root 24K 10月 23 17:56 collection-4-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 collection-6--769241995958111853.wt
drwx------. 2 root root 216 10月 23 18:19 diagnostic.data
-rw-------. 1 root root 4.0K 10月 23 18:09 index-1--769241995958111853.wt
-rw-------. 1 root root 20K 10月 23 18:09 index-1-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 index-3--769241995958111853.wt
-rw-------. 1 root root 36K 10月 23 18:10 index-3-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 index-5--769241995958111853.wt
-rw-------. 1 root root 24K 10月 23 17:56 index-5-932399827175288110.wt
-rw-------. 1 root root 12K 10月 23 18:07 index-6-932399827175288110.wt
-rw-------. 1 root root 20K 10月 23 18:10 index-7--769241995958111853.wt
drwx------. 2 root root 110 10月 23 18:09 journal
-rw-------. 1 root root 6 10月 23 18:09 mongod.lock
-rw-------. 1 root root 36K 10月 23 18:11 sizeStorer.wt
-rw-------. 1 root root 114 10月 23 16:28 storage.bson
/tmp/0_0/diagnostic.data:
合計 532K
-rw-------. 1 root root 33K 10月 23 16:28 metrics.2020-10-23T07-28-48Z-00000
-rw-------. 1 root root 188K 10月 23 17:08 metrics.2020-10-23T07-28-58Z-00000
-rw-------. 1 root root 166K 10月 23 17:56 metrics.2020-10-23T08-20-57Z-00000
-rw-------. 1 root root 73K 10月 23 18:07 metrics.2020-10-23T08-56-49Z-00000
-rw-------. 1 root root 62K 10月 23 18:19 metrics.2020-10-23T09-09-41Z-00000
/tmp/0_0/journal:
合計 300M
-rw-------. 1 root root 100M 10月 23 18:12 WiredTigerLog.0000000005
-rw-------. 1 root root 100M 10月 23 18:09 WiredTigerPreplog.0000000001
-rw-------. 1 root root 100M 10月 23 18:09 WiredTigerPreplog.0000000002
スタンドアロンで起動した後、レプリカセットで起動した場合、
_mdb_catalog.wt と 管理用?のcollectionである、collection-0-*、collection-2-*、collection-4-* と
管理用?のindexである、index-1-*、index-3-*、index-5-* に下記が追加されたようだ。
collection-0--*、collection-2--*、collection-4--*、index-1--*、index-3--*、index-5--*、
index-7--*
※0~6までの通番の後ろのハイフンが2個連続になってて、あたらしく、index-7--*が加わった。
よくわかんないけど。
【いじり8】
そもそもスタンドアロンで起動したMongoDBインスタンスにユーザデータを入力して、そのあとレプリカセットとしてインスタンスを起動して何か問題はないか?
※すでになんかのデータを持っているスタンドアロンインスタンスをレプリカセットのメンバーにする方法は下記参照
①https://docs.mongodb.com/manual/tutorial/convert-standalone-to-replica-set/
[着眼点1]
上記URLによる正規のやり方を精読して何か気づくことはないか調べる
→ 上記の1.6でやったやり方が正規のやり方だった。
※ただし、新しく追加したメンバーがスタンドアロン状態のときにプライマリのoplogに含まれるデータより新しい変更がスタンドアロンに加えられていた場合、"stateStr"が
"RECOVERING"の状態で保留される。(この場合プライマリのoplogを手動で適用する必要がある?)
※次に、上記の新メンバーの"stateStr"が"RECOVERING"の状態でレプリカセットの全メンバーを落とした後、新メンバーを最初に起動してから他のメンバーを順次起動した場合、
"RECOVERING"だったメンバーは起動後も"RECOVERING"の状態を維持し、2番目に起動したメンバーがプライマリになった。
※レプリカセットのセカンダリのdbPathの中身をxfs_freezeとsyncを使って静止点を取ったうえで上記の新メンバーのdbPathにコピーしてから新メンバーのインスタンスを--replSet rs0オプションを付けてレプリカセットメンバーとして起動した場合、新メンバーの"stateStr"は
"SECONDARY"になった。
※上記のことから、レプリカセットに新しくメンバーを追加する場合は下記のようにする必要がある。
・新しく追加したメンバーにプライマリのoplogに含まれるデータより新しい変更が加え
られていない場合はプライマリのoplogが自動的に適用されて同期する
・新しく追加したメンバーにプライマリのoplogに含まれるデータより新しい変更が加え
られていた場合はプライマリのoplogを手動で適用する必要があるっぽい(調査中)
[着眼点2]
スタンドアロンインスタンス→レプリカセットに追加(rs.add()実行)→レプリカセットから削除(rs.remove()実行)を試す。
②Add Members to a Replica Set
③Remove Members from Replica Set
・スタンドアロンインスタンスをレプリカセットに追加
スタンドアロンインスタンスをレプリカセット名を指定して起動
$ mkdir /tmp/rs0_3
$ mongod --replSet rs0 --port 27021 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_3 --oplogSize 128 &
プライマリにmongoシェルで接続して下記を実行
rs0:PRIMARY> rs.add( { host: "localhost:27021", priority: 0, votes: 0 } )
ステータスが「SECONDARY」に成ったら下記を実行
rs0:PRIMARY> var cfg = rs.conf();
rs0:PRIMARY> cfg.members[3].priority = 1
rs0:PRIMARY> cfg.members[3].votes = 1
rs0:PRIMARY> rs.reconfig(cfg)
※ちなみにレプリカセットからメンバーを削除する場合は、
rs0:PRIMARY> rs.remove( localhost:27021" )
[着眼点3]
現在レプリカセットrs0のメンバーは4インスタンス(偶数台)だけど、このときプライマリを落とした場合フェイルオーバーするか見る。
→一応フェイルオーバーして、idが最若番のメンバーがプライマリに昇格した。
この状態でさらにプライマリを落とした場合フェイルオーバーするか見る。
→残った2メンバーはセカンダリのままだった。
メンバー数が偶数台でもフェイルオーバーするが、2インスタンス落ちるとプライマリが選出されない?
・スタンドアロンインスタンスをもうさらに一個レプリカセットに追加
$ mkdir /tmp/rs0_4
$ mongod --replSet rs0 --port 27022 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_4 --oplogSize 128 &
プライマリにmongoシェルで接続して下記を実行
rs0:PRIMARY> rs.add( { host: "localhost:27022", priority: 0, votes: 0 } )
ステータスが「SECONDARY」に成ったら下記を実行
rs0:PRIMARY> var cfg = rs.conf();
rs0:PRIMARY> cfg.members[4].priority = 1
rs0:PRIMARY> cfg.members[4].votes = 1
rs0:PRIMARY> rs.reconfig(cfg)
現在レプリカセットrs0のメンバーは5インスタンス。このときプライマリを落とす。
→フェイルオーバーして、idが最若番のメンバーがプライマリに昇格した。
この状態でさらにプライマリを落とした場合フェイルオーバーするか見る。
→フェイルオーバーして、idが最若番のメンバーがプライマリに昇格した。
この状態でさらにプライマリを落とした場合フェイルオーバーするか見る。
→残った2メンバーはセカンダリのままだった。
[着眼点4]
3メンバーのレプリカセットのセカンダリをrs.remove()でレプリカセットから削除してインスタンスを終了し、コールドバックアップを取得しておく。
そのあと、レプリカセットのデータを変更して上記のスタンドアロンインスタンスを起動してレプリカセットにrs.add()で戻す。
(1)その際、レプリカセット内で出戻りメンバーにデータが同期するか確認する。
→同期した
(2)レプリカセットの全メンバーを停止して全メンバーのDBデータを上記のバックアップからリストアして再起動した場合、レプリカセットはバックアップ時のデータを保持しているか確認する。
→バックアップ時のデータを保持していた
(3)もう一度レプリカセットの全メンバーを再起動してデータが永続的にバックアップ取得時点で永続化されているか確認する。
→バックアップ取得時点で永続化されていた
(4)上記の状態でデータのwriteが正常にできるか確認する。
→正常にwriteできた
(5)下記の[着眼点7]で確認したようにセカンダリのdbPathのオンラインバックアップを静止点付き(LVMスナップショットまたはxfs_freeze+sync)で取得可能。
[着眼点5]
※上記の②にいきなり結論見つけた
A valid copy of the data files from a member of the same replica set. See Back Up and Restore with Filesystem Snapshots (これを④とする)document for more information.
IMPORTANT
Always use filesystem snapshots to create a copy of a member of the existing replica set. Do not use mongodump and mongorestore to seed a new replica set member.
上記の記述から、[着眼点4]の操作がレプリカセットの正式なバックアップとリストアなのか確認する。
→[着眼点4]の操作がレプリカセットの正式なバックアップとリストアと同等である。
※上記④ではLVMスナップショットを取得してこれをソースに別メディアにコピーする方法が書かれている。
上記④ではWiredTigerストレージエンジンはチェックポイントによる書き込みが完了してから次のチェックポイントの書き込みが始まるまではデータファイルは一貫性を保証されていると書かれている。チェックポイント書き込み途中以外のスナップショットならファイルシステムレベルの静止点が保証される。チェックポイントが書き込み途中のスナップショットならjournalを使ってロールフォワードかjournalにすらないデータはロールバックしてくれる(Journaling、
Manage Journaling)ので、セカンダリのdbPathはLVMスナップショット(またはxfs_freeze+sync)を使うことによってファイルシステムの静止点さえ確保すればオンラインバックアップできることを意味するはずである。
For the WiredTiger storage engine, the data files reflect a consistent state as of the last checkpoint. Checkpoints occur with every 2 GB of data or every minute.
LVMスナップショットはdirtyキャッシュに関してはディスクに同期したうえでボリュームの静止点を生成するが、[着眼点4]の操作はコールドバックアップとなっているので、LVMスナップショットによるバックアップが可能であるとのことなので[着眼点4]の操作も可能であることが導かれる。
[着眼点6]
mongodb 4.4はデフォルトでstorage.journal.enabled enabledなのか?
→デフォルトでenabled
[pc3_centos7_k2]$ grep -i -A 8 storage: /etc/mongod.conf
storage:
dbPath: /var/lib/mongo
journal:
enabled: true
# engine:
# wiredTiger:
# how the process runs
processManagement:
[着眼点7]
mongodbのDBデータ(dbPath)をオンラインでコピー(tarコマンド)した場合はリストアしてもMongoDBインスタンスは起動しなかったが、LVMスナップショットやxfs_freeze+syncを併用したコピー(ファイルシステムレベルの静止点を確保したコピー)であればもしかしたら普通にファイルシステムtoファイルシステムでオンラインバックアップできてしまうのではないか?
※オンラインでdbPathディレクトリを単にtarでコピーした場合と、上記の違いは、tarはDirtyキャッシュのフラッシュをしないのに対し、lvcreate -sはこれを行う。またxfs_freezeしたあとsyncをした場合はページキャッシュへの書き込みを一時的に禁止してsyncにより手動でフラッシュを行う
さらに、レプリカセットのセカンダリインスタンスの場合、dbPathへの入力はプライマリからの管理されたoplogにもとづくものなので、ジャーナリング有効とかと絡んでレプリカセットをバックアップ元にしたスナップショット+rsync(またはxfs_freeze+syncしてからrsync)であればオンラインバックアップ可能なのではないか?
・lvm上にrs0_0を移動する。
[pc3_centos7_k2]$ dd if=/dev/zero of=/tmp/loopdevice bs=1M count=5000
[pc3_centos7_k2]$ losetup /dev/loop0 /tmp/loopdevice
[pc3_centos7_k2]$ pvcreate /dev/loop0
[pc3_centos7_k2]$ vgcreate vg0 /dev/loop0
[pc3_centos7_k2]$ lvcreate -L 1024M -n lv0 vg0
[pc3_centos7_k2]$ mkfs.xfs /dev/vg0/lv0
[pc3_centos7_k2]$ mount /dev/vg0/lv0 /mnt
[pc3_centos7_k2]$ mv /tmp/rs0_0 /mnt/
[pc3_centos7_k2]$ ln -s /mnt/rs0_0 /tmp/rs0_0
・レプリカセット起動
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27018 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_0 --oplogSize 128 &
[pc3_centos7_k2]$ sleep 10
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27019 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_1 --oplogSize 128 &
[pc3_centos7_k2]$ sleep 10
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27020 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_2 --oplogSize 128 &
・現在のデータの確認
rs0:PRIMARY> use chinko
switched to db chinko
rs0:PRIMARY> db.chinko0.find()
{ "_id" : ObjectId("5f8d423d22c4e4d8bd644b8d"), "name" : "うんこっこ", "age" : 20 }
{ "_id" : ObjectId("5f95c6db4b85da307768366a"), "name" : "まんこっこ", "age" : 17 }
→この状態で3メンバーは同期中
・tcp27018のインスタンスをセカンダリになるように起動してdbPathディレクトリのLVMスナップショットをオンラインで取得
[pc3_centos7_k2]$ lvcreate -s -L 1g -n snap0 vg0/lv0
・tcp27018のインスタンス(セカンダリ)のdbPathディレクトリのLVMスナップショットからバックアップ
[pc3_centos7_k2]$ mkdir /snap
[pc3_centos7_k2]$ mount -o nouuid /dev/vg0/snap0 /snap
[pc3_centos7_k2]$ ll /snap
合計 4
drwxr-xr-x. 4 root root 4096 10月 26 06:20 rs0_0
[pc3_centos7_k2]$ cd /snap
[pc3_centos7_k2]$ tar cf /tmp/rs0_0.tar rs0_0
・レプリカセットにデータ追記
rs0:PRIMARY> db.chinko0.insertOne({name:"うんこまん",age:40})
rs0:PRIMARY> db.chinko0.find()
{ "_id" : ObjectId("5f8d423d22c4e4d8bd644b8d"), "name" : "うんこっこ", "age" : 20 }
{ "_id" : ObjectId("5f95c6db4b85da307768366a"), "name" : "まんこっこ", "age" : 17 }
{ "_id" : ObjectId("5f961e742906ac042b298800"), "name" : "うんこまん", "age" : 40 }
・tcp27018のインスタンス(セカンダリ)をレプリカセットから削除する
rs0:PRIMARY> rs.remove("localhost:27018")
・レプリカセットのメンバーのインスタンスとtcp27018のインスタンスをkillコマンドで停止
・tcp27018のインスタンスをスタンドアロンで起動し中のデータを確認
[pc3_centos7_k2]$ mongod --port 27018 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_0 &
[pc3_centos7_k2]$ mongo --port 27018
> use chinko
> db.chinko0.find()
{ "_id" : ObjectId("5f8d423d22c4e4d8bd644b8d"), "name" : "うんこっこ", "age" : 20 }
{ "_id" : ObjectId("5f95c6db4b85da307768366a"), "name" : "まんこっこ", "age" : 17 }
{ "_id" : ObjectId("5f961e742906ac042b298800"), "name" : "うんこまん", "age" : 40 }
・tcp27018のインスタンスを停止しtcp27018とtcp27019とtcp27020の各dbPathディレクトリのデータをバックアップからリストア
[pc3_centos7_k2]$ cd /mnt
[pc3_centos7_k2]$ rm -rf rs0_0
[pc3_centos7_k2]$ tar xf /tmp/rs0_0.tar
[pc3_centos7_k2]$ cd /tmp
[pc3_centos7_k2]$ rm -rf rs0_1 rs0_2
[pc3_centos7_k2]$ cp -pr /mnt/rs0_0 /tmp/rs0_1
[pc3_centos7_k2]$ cp -pr /mnt/rs0_0 /tmp/rs0_2
・レプリカセットを起動して中のデータを確認
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27018 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_0 --oplogSize 128 &
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27019 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_1 --oplogSize 128 &
[pc3_centos7_k2]$ mongod --replSet rs0 --port 27020 --bind_ip localhost,192.168.101.32 --dbpath /tmp/rs0_2 --oplogSize 128 &
[pc3_centos7_k2]$ mongo --port 27020
rs0:PRIMARY> use chinko
rs0:PRIMARY> db.chinko0.find()
{ "_id" : ObjectId("5f8d423d22c4e4d8bd644b8d"), "name" : "うんこっこ", "age" : 20 }
{ "_id" : ObjectId("5f95c6db4b85da307768366a"), "name" : "まんこっこ", "age" : 17 }
→レプリカセットのセカンダリインスタンスのdbPathをLVMスナップショットでオンラインバックアップしてそこからリストアができたぷに。