Использование MongoDB как основной метабазы в UGC-сервисах

35
1

description

Сервис, на котором хранятся данные миллиардов пользователей, обязан быть масштабируем, отказоустойчив и производителен. Одним из важных его компонентов является метабаза — сердце сервиса. За время использования MongoDB в сервисах с нагрузкой более 50 тысяч запросов в секунду мы научились многому. В докладе пойдёт речь о том, как: хранить десятки миллиардов объектов и терабайты данных в MongoDB; настраивать дисковую подсистему с БД и следить за ней; управлять индексами, соединениями и балансировкой данных между несколькими ReplicaSet’ами; жить со специфическими проблемами в эксплуатации MongoDB, которые мы заметили.

Transcript of Использование MongoDB как основной метабазы в UGC-сервисах

Page 1: Использование MongoDB как основной метабазы в UGC-сервисах

1

Page 2: Использование MongoDB как основной метабазы в UGC-сервисах

2

Page 3: Использование MongoDB как основной метабазы в UGC-сервисах

3

Mongodb, UGC project

- billions objects; - terabytes of data MongoDB; - high Disk I/O; - big size Indexes - balancing & connections to DB; - troubleshooting mongodb;

Page 4: Использование MongoDB как основной метабазы в UGC-сервисах

4

Yandex.Disk is a service for storing and sharing files that also provides access to files from any device connected to the internet.> 19M Users> 10M file uploads per day

SDK – http://api.yandex.ru/disk/The Yandex.Disk SDK is intended for applications that work with the files of Yandex.Disk users or store their own files and settings on Yandex.Disk.

Page 5: Использование MongoDB как основной метабазы в UGC-сервисах

5

~6,4 billion objects:

Page 6: Использование MongoDB как основной метабазы в UGC-сервисах

6

~6 Tb filesize:

Page 7: Использование MongoDB как основной метабазы в UGC-сервисах

7

~1.5 Tb IndexSize;

Page 8: Использование MongoDB как основной метабазы в UGC-сервисах

8

> 6 billion operations every day;

Page 9: Использование MongoDB как основной метабазы в UGC-сервисах

9

- over 50000 chunks

Page 10: Использование MongoDB как основной метабазы в UGC-сервисах

10

Notes:

- write global lock to DB; - no transactions; - single threaded chunk moving job; - 20000 connections limit to mongod/mongos; - Mongos unable to work in RO mode; - no connection-pool

Page 11: Использование MongoDB как основной метабазы в UGC-сервисах

11

Page 12: Использование MongoDB как основной метабазы в UGC-сервисах

12

Page 13: Использование MongoDB как основной метабазы в UGC-сервисах

13

Page 14: Использование MongoDB как основной метабазы в UGC-сервисах

14

Page 15: Использование MongoDB как основной метабазы в UGC-сервисах

15

DBA at work:

Page 16: Использование MongoDB как основной метабазы в UGC-сервисах

16

Usual RS:

Secondary

Secondary

Secondaryhidden

Primary

ReplicaSet:

UPUP

UP

UP

UP delay

Page 17: Использование MongoDB как основной метабазы в UGC-сервисах

17

Clean hidden and Startup:

Secondary

Secondary

Secondaryhidden

Primary

ReplicaSet:

Startup

UP

UP

UP

Page 18: Использование MongoDB как основной метабазы в UGC-сервисах

18

Recover Secondary:

Secondary

Secondary

Secondaryhidden

Primary

ReplicaSet:

DOWN

DOWN

UP

UP

rsync

Page 19: Использование MongoDB как основной метабазы в UGC-сервисах

19

Chunk-defrag RS:

Secondary

Secondary

Secondaryhidden

Primary

ReplicaSet:

UPUP

UP

Defrag UP

Defrag UP delay

Page 20: Использование MongoDB как основной метабазы в UGC-сервисах

20

Recover Secondary:

Secondary Secondary

Secondaryhidden

Primary

ReplicaSet:

DOWN

DOWN

UP

Defrag UP

rsync

Page 21: Использование MongoDB как основной метабазы в UGC-сервисах

21

Usual RS:

Secondary

Secondary

Secondaryhidden

Primary

ReplicaSet:

UPUP

UP defrag

UP defrag

UP defrag

Page 22: Использование MongoDB как основной метабазы в UGC-сервисах

22

Disk I/O:

- ext4 - raid0 и raid10 - mount options - dirty pages - SSD

Page 23: Использование MongoDB как основной метабазы в UGC-сервисах

23

Disk I/O:

Page 24: Использование MongoDB как основной метабазы в UGC-сервисах

24

Monitoring:

- db.serverStatus() - rs-indexes-consistency - indexes-miss-ratio - backgroundFlushing - heap_usage_bytes - connections - replication

Page 25: Использование MongoDB как основной метабазы в UGC-сервисах

25

mongostat --discover:

Page 26: Использование MongoDB как основной метабазы в UGC-сервисах

26

Collections qps:

Page 27: Использование MongoDB как основной метабазы в UGC-сервисах

27

Balancing:

- tags- sh.getBalancerState()- moveChunk

Page 28: Использование MongoDB как основной метабазы в UGC-сервисах

28

Mongos:

Page 29: Использование MongoDB как основной метабазы в UGC-сервисах

29

Mongos drop tcp cfg:

drop tcp

Page 30: Использование MongoDB как основной метабазы в UGC-сервисах

30

Mongos drop tcp shard:

drop tcp

Page 31: Использование MongoDB как основной метабазы в UGC-сервисах

31

Mongos fast fix:

drop tcp

-j REJECT --reject-with tcp-reset

Page 32: Использование MongoDB как основной метабазы в UGC-сервисах

32

Keepalived config:

Page 33: Использование MongoDB как основной метабазы в UGC-сервисах

33

Mongos RS down — ALL DOWN:

Page 34: Использование MongoDB как основной метабазы в UGC-сервисах

34

Summary:1) SERVER-70082) SERVER-90413) SERVER-1240

Page 35: Использование MongoDB как основной метабазы в UGC-сервисах

35

Thank you! Questions?

Andrey Godinhttp://yandex.ru@[email protected]