{"id":21015526,"url":"https://github.com/ericogr/docker-mongodb-replica-shard-test","last_synced_at":"2025-05-15T05:32:09.134Z","repository":{"id":30786966,"uuid":"34343897","full_name":"ericogr/docker-mongodb-replica-shard-test","owner":"ericogr","description":"Criação de um ambiente de testes para rodar várias instancias do mongo replicando e criando shards com a ajuda do docker","archived":false,"fork":false,"pushed_at":"2015-05-10T16:33:39.000Z","size":228,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-03T04:33:15.596Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ericogr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-04-21T18:10:06.000Z","updated_at":"2017-06-21T11:55:49.000Z","dependencies_parsed_at":"2022-09-18T23:31:06.549Z","dependency_job_id":null,"html_url":"https://github.com/ericogr/docker-mongodb-replica-shard-test","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericogr%2Fdocker-mongodb-replica-shard-test","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericogr%2Fdocker-mongodb-replica-shard-test/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericogr%2Fdocker-mongodb-replica-shard-test/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ericogr%2Fdocker-mongodb-replica-shard-test/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ericogr","download_url":"https://codeload.github.com/ericogr/docker-mongodb-replica-shard-test/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254282231,"owners_count":22045123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-19T10:10:15.281Z","updated_at":"2025-05-15T05:32:08.796Z","avatar_url":"https://github.com/ericogr.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# docker-mongodb-replica-shard-test\nO objetivo deste projeto é a criação de um ambiente para testar um cluster de máquinas\ncom replicação e sharding com Mongodb 3. A primeira execução cria todo o ambiente com\ncontainers utilizando uma nomenclatura padronizada. Para executar novamente, será\npreciso antes finalizar os containers criados anteriormente por este script.\n\n##Passos para testar o shard com replicação do mongodb\n\nPré-requisitos\n -OS Linux\n -Docker 1.5 ou superior\n\n1. Executar o build das imagens docker:\n ```\n #./build.sh\n ```\n\n2. Executar a criação e configuração das máquinas:\n -Na configuração padrão, serão criados 2 shards. Cada shard é composto por um\n  conjunto de replicação de 3 máquinas.\n\n  -Obs: durante a criação das máquinas, alguns scripts serão executados pelo\n        mongo, mas muitas vezes, a instância ainda não estará pronta. Desta\n        forma, o script será executado novamente depois de alguns segundos.\n        Isso pode levar alguns minutos, então, aguarde até que o processo chegue\n        ao fim.\n\n3. Descubra o ip da máquina que faz o roteamento\n  ```\n  #docker inspect mongos1|grep -i ipaddress\n  ```\n\n  -Obs: Será nesta máquina que devemos apontar a conexão para o banco de dados\n        mongo na aplicação.\n\n4. Criar banco de dados e coleção\n -Os comandos abaixo servem como referência. Devem ser executados conectando a\n  ao container mongos1. Você pode utilizar um cliente como o Robomongo para\n  testar.\n\n  -Para verificar o status do shard\n    ```\n    sh.status()\n    ```\n\n  -Para criar um banco de dados dbshard1 e habilitar o shard:\n    ```\n    use dbshard1\n    sh.enableSharding(\"dbshard1\")\n    ```\n\n  -Para criar uma coleção de dados chamada pessoas e habilitar o shard baseado\n   no campo nome:\n    ```\n    db.createCollection(\"pessoas\")\n    sh.shardCollection(\"dbshard1.pessoas\", { \"nome\": 1 })\n    ```\n\n5. Importar dados para a coleção pessoas\n -Na raiz do projeto temos o arquivo pessoas.json com um cojunto de dados para\n  testar. Coloque este arquivo na pasta /tmp de seu host para que fique disponível\n  na pasta /mnt/tmp do container mongos1. Execute a importação:\n\n  ```\n  #docker \\\n    exec mongos1 mongoimport \\\n      --db dbshard1 \\\n      --collection pessoas \\\n      --type json \\\n      --jsonArray \\\n      --file /mnt/tmp/pessoas.json\n  ```\n\n6. Verifique como estão distribuidos os dados\n -Na máquina mongos1 execute:\n   ```\n   sh.status()\n   ```\n\nExemplo de saída:\n\n```\n--- Sharding Status ---\n  sharding version: {\n\t\"_id\" : 1,\n\t\"minCompatibleVersion\" : 5,\n\t\"currentVersion\" : 6,\n\t\"clusterId\" : ObjectId(\"55369699a0dd158b580cf6cb\")\n}\n  shards:\n\t{  \"_id\" : \"rs1\",  \"host\" : \"rs1/172.17.0.132:27017,172.17.0.133:27017,172.17.0.134:27017\" }\n\t{  \"_id\" : \"rs2\",  \"host\" : \"rs2/172.17.0.135:27017,172.17.0.136:27017,172.17.0.137:27017\" }\n  databases:\n\t{  \"_id\" : \"admin\",  \"partitioned\" : false,  \"primary\" : \"config\" }\n\t{  \"_id\" : \"db\",  \"partitioned\" : false,  \"primary\" : \"rs2\" }\n\t{  \"_id\" : \"test\",  \"partitioned\" : false,  \"primary\" : \"rs2\" }\n\t{  \"_id\" : \"dbshard1\",  \"partitioned\" : true,  \"primary\" : \"rs2\" }\n\t\tdbshard1.pessoas\n\t\t\tshard key: { \"nome\" : 1 }\n\t\t\tchunks:\n\t\t\t\trs1\t1\n\t\t\t\trs2\t8\n\t\t\t{ \"nome\" : { $minKey : 1 } } --\u003e\u003e { \"nome\" : \"Aaron\" } on : rs1 Timestamp(2000, 0)\n\t\t\t{ \"nome\" : \"Aaron\" } --\u003e\u003e { \"nome\" : \"Dayna\" } on : rs2 Timestamp(2000, 1)\n\t\t\t{ \"nome\" : \"Dayna\" } --\u003e\u003e { \"nome\" : \"Fernando\" } on : rs2 Timestamp(1000, 3)\n\t\t\t{ \"nome\" : \"Fernando\" } --\u003e\u003e { \"nome\" : \"Jayden\" } on : rs2 Timestamp(1000, 4)\n\t\t\t{ \"nome\" : \"Jayden\" } --\u003e\u003e { \"nome\" : \"Leonardo\" } on : rs2 Timestamp(1000, 5)\n\t\t\t{ \"nome\" : \"Leonardo\" } --\u003e\u003e { \"nome\" : \"Mose\" } on : rs2 Timestamp(1000, 6)\n\t\t\t{ \"nome\" : \"Mose\" } --\u003e\u003e { \"nome\" : \"Rudolph\" } on : rs2 Timestamp(1000, 7)\n\t\t\t{ \"nome\" : \"Rudolph\" } --\u003e\u003e { \"nome\" : \"Wava\" } on : rs2 Timestamp(1000, 8)\n\t\t\t{ \"nome\" : \"Wava\" } --\u003e\u003e { \"nome\" : { $maxKey : 1 } } on : rs2 Timestamp(1000, 9)\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericogr%2Fdocker-mongodb-replica-shard-test","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fericogr%2Fdocker-mongodb-replica-shard-test","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fericogr%2Fdocker-mongodb-replica-shard-test/lists"}