Skip to main content

DB: обслуживание базы данных

Страница перенесена в Confluence

Мы используем БД mongo. В зависимости от инсталляции, может быть использована как standalone версия, так и кластерный replica set.

В простом виде (в режиме standalone) мы можем подключиться к БД через docker командой:

docker exec -ti $(docker ps | grep db_1 | cut -f 1 -d ' ') mongo

Посмотреть использование памяти можно командой:

var collectionNames = db.getCollectionNames(), stats = []; collectionNames.forEach(function (n) { stats.push(db.getCollection(n).stats()); }); 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'] + ")"); }

В ответ мы получим отсортированный по памяти список коллекций:

test.stats: 5800635744 (1414500352)
test.lbs_client_data: 4010964078 (1531879424)
test.radar_probes_raw: 2119668804 (858513408)
test.radar_probes_real: 1533787578 (604610560)
test.client_stats: 1438165226 (447995904)
test.lbs_client_coords: 1328415112 (419856384)
test.client_rf: 695721118 (161742848)
test.cpe_stat_info: 625875758 (183152640)
test.client_distance: 320928081 (73326592)
test.client_addr: 232029444 (43192320)
test.clients: 204554569 (22310912)
test.lbs_client_probes: 195651648 (42098688)
test.events: 99999940 (27516928)
test.cpe_scan_data: 91438843 (18980864)
test.cpe_session_info: 81839494 (39206912)
...

И например если мы хотим удалить некоторую коллекцию, достаточно выполнить drop коллекции:

db.getCollection("stats").drop()