由于工作的需要,需要 mongo shell 去调取 Js 代码,达到 mongo 分片集群部署的完全自动化。mongo 的 shell 就是用 javascript 集成的。所以有了这一次的经历,但是这个 javascript 又和前端的 Js 写法稍有区别。

官档链接:

https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/ 中明确指明 mongo 是支持 Js 的,如图。

接下来我们大体看一下代码:每一个 function 代表是一个 Js 文件。

function establish_config_service(replset_name, master_ip, slave_ip, arbiter_ip, port){
print("naster_ip:",master_ip)
print("welcome to mongodb......");
config={_id:`${replset_name}`,members:[{_id:0,host:`${master_ip}:${port}`},{_id:1,host:`${slave_ip}:${port}`},{_id:2,host:`${arbiter_ip}:${port}`}]
};
ret=rs.initiate(config);
}var replset_name=''
var master_ip=''
var slave_ip=''
var arbiter_ip=''
var port=''print("Initialize configuration service for mongodb culster");
establish_config_service(replset_name, master_ip, slave_ip, arbiter_ip, port);
print("Initialization configuration service complete for mongodb cluster");
function establish_primary_shard1_service(replset_name, master_ip, slave_ip, arbiter_ip, port){
config={_id:`${replset_name}`,members:[{_id:0,host:`${master_ip}:${port}`},{_id:1,host:`${slave_ip}:${port}`},{_id:2,host:`${arbiter_ip}:${port}`,arbiterOnly:true}]
};
ret=rs.initiate(config);
}var replset_name=''
var master_ip=''
var slave_ip=''
var arbiter_ip=''
var port=''print("Initialize primary shard1 service for mongodb culster")
establish_primary_shard1_service(replset_name, master_ip, slave_ip, arbiter_ip, port)
print("Initialize primary shard1 service complete for mongodb cluster")
function establish_primary_shard2_service(replset_name, master_ip, slave_ip, arbiter_ip, port){
config={_id:`${replset_name}`,members:[{_id:0,host:`${arbiter_ip}:${port}`,arbiterOnly:true},{_id:1,host:`${master_ip}:${port}`},{_id:2,host:`${slave_ip}:${port}`}]
};
ret=rs.initiate(config);}var replset_name=''
var master_ip=''
var slave_ip=''
var arbiter_ip=''
var port=''print("Initialize primary shard2 service for mongodb culster")
establish_primary_shard2_service(replset_name, master_ip, slave_ip, arbiter_ip, port)
print("Initialize primary shard2 service complete for mongodb cluster")
function establish_primary_shard3_service(replset_name, master_ip, slave_ip, arbiter_ip, port){
config={_id:`${replset_name}`,members:[{_id:0,host:`${slave_ip}:${port}`},{_id:1,host:`${arbiter_ip}:${port}`,arbiterOnly:true},{_id:2,host:`${master_ip}:${port}`}]
};
rs.initiate(config);
}var replset_name=''
var master_ip=''
var slave_ip=''
var arbiter_ip=''
var port=''print("Initialize primary shard3 service for mongodb culster")
establish_primary_shard3_service(replset_name, master_ip, slave_ip, arbiter_ip, port)
print("Initialize primary shard3 service complete for mongodb cluster")
function auth(user, password){
db.createUser({user: `${user}`,pwd: `${password}`,roles: [ { role: "root", db: "admin" } ]})
db.auth({user: `${user}`,pwd: `${password}`})
}var user=''
var password=''auth(user,password)
function set_balancer_time_span(start_time, stop_time){db.settings.update({ _id: "balancer" },{ $set: { activeWindow : { start : `${start_time}`, stop : `${stop_time}` } } },{ upsert: true })
}var start_time=''
var stop_time=''print("Setting balancer start_time for mongodb culster")
set_balancer_time_span(start_time, stop_time)
print("Setting balancer stop_time for mongodb culster")
print('=========BEGIN==========');
conn = new Mongo("192.168.43.43:37017");
db = conn.getDB("config");
db.adminCommand('listDatabases');
db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "3:00", stop : "5:00" } } }, true )
db = conn.getDB("admin");
print('=========END==========');

代码基本上写完,接下来我们去调取一下其中的一个js。开启 mongo 的时间均衡窗口。

[root@mms mongo]# cat 1.js
print('=========BEGIN==========');
conn = new Mongo("192.168.43.43:37017");
db = conn.getDB("config");
db.adminCommand('listDatabases');
db.settings.update({ _id : "balancer" }, { $set : { activeWindow : { start : "3:00", stop : "5:00" } } }, true )
db = conn.getDB("admin");
print('=========END==========');[root@mms mongo]# ps -ef | grep -v grep | grep mongo
mongo     11670      1  0 16:20 ?        00:01:36 mongod -f /opt/mongo/conf/mongodb.conf
[root@mms mongo]#
[root@mms mongo]# mongo --port 37017 1.js
MongoDB shell version: 3.2.12
connecting to: 127.0.0.1:37017/test
=========BEGIN==========
=========END==========
[root@mms mongo]# mongo --port 37017
MongoDB shell version: 3.2.12
connecting to: 127.0.0.1:37017/test
> use config
switched to db config
> db.settings.find()
{ "_id" : "balancer", "activeWindow" : { "start" : "3:00", "stop" : "5:00" } }
>

可以看到自动可以把 Js 加载进去,就无需再数据库里面进行设置了。所有的自动化基本上都是利用 Js 去完成的。

又找到了刚毕业时写代码的感觉,透心凉。。。

撸了一次 Js 代码相关推荐

  1. Python模拟登陆,解密js代码实例:知乎登陆

    本文转载自公众号 | 日常学Python 作者 | sergiojune 如果你现在想模拟登陆知乎,会发现 fromdata 是一串加密的字符串 image 看了之后是不是很痛苦?你是不是就想使用 s ...

  2. html单选框怎么用js实现选中状态,怎么用js代码改变单选框的选中状态

    今天突然有一个需求要用到,使用js代码改变单选框的选中状态.当时想也不想直接 function doGender(gender) { if (gender == "男") { ge ...

  3. 超nb的网页标签弹窗js代码!

    首先说一下业务需求: 需要在当前各主流浏览器上从tab标签形式弹出一个页面,尽量不要以单独窗口弹出. 下面是网上搜集并修改.验证后的js代码,以备以后参阅. function getUnionCook ...

  4. 一行js代码识别Selenium+Webdriver及其应对方案

    有不少朋友在开发爬虫的过程中喜欢使用Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现. 先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行 ...

  5. 判断是否移动端设备的JS代码,超短,百度都用它

    为什么80%的码农都做不了架构师?>>>    大多数人都使用跳转适配的方式实现PC端到移动端的网页转换,而大多数人又是使用通过判断UA的方法来区分PC端还是移动端,思路一样,但代码 ...

  6. 爬虫之selenium控制浏览器执行js代码

    爬虫之selenium控制浏览器执行js代码 selenium可以让浏览器执行我们规定的js代码,运行下列代码查看运行效果 import time from selenium import webdr ...

  7. 浮层java_通过遮罩层实现浮层DIV登录的js代码

    摘要:这篇JavaScript栏目下的"通过遮罩层实现浮层DIV登录的js代码",介绍的技术点是"浮层DIV.JS代码.div.遮罩层.登录.代码",希望对大家 ...

  8. 用鼠标拖动图片的JS代码

    代码简介: 用鼠标拖动一个图片移动,就像拖动一个层一样,这是一个JS拖动类代码,你可以无限制的增加图片,代码复用率比较高. 代码内容: View Code <html><HEAD&g ...

  9. html实体编码遇上js代码

    单双引号 在js代码中 在js中单.双引号引起来的是字符串,如果我们要在字符串中使用单.双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=&quo ...

最新文章

  1. ENGINEER 003:配置IPv6地址
  2. java inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream
  3. JSONP的诞生、原理及应用实例
  4. 《Go语言圣经》学习笔记 第六章 方法
  5. 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
  6. linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
  7. Android无法优化应用,Android应用优化总结
  8. php composer使用过程
  9. 【不懂】spring bean生命周期
  10. 苹果CMSV10好看的模板灰黑色爱看影院自适应炫酷黑模板
  11. java web程序设计与..._Java Web程序设计
  12. 北通手柄连接电脑没反应_北通手柄怎么连接电脑
  13. wine装通达信_【已解决】谁能给我一个可以运行通达信股票软件的wine
  14. echarts 3d地球js特效代码
  15. 嵌入式面试常见问题(七)—各大公司面试题
  16. Borland 26年风雨路
  17. return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cSerDe may be incompati
  18. 关于switchport Port-security 使用遇到的一些问题
  19. docker部署es和kibana遇到的坑
  20. (与运算)、|(或运算)、^(异或运算)等运算符的解释与运用

热门文章

  1. c语言提取字符串里面的数字,一个截取字符串中数字的函数
  2. Android PAI (PlayAutoInstall)功能一些经验
  3. 李勇强seo,李勇强SEO
  4. java中的消息队列
  5. 2022年8月又更新了:房测之友(BMF2018)免数据库版BMFse,有点高大上的样子
  6. 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】
  7. 国内外知名云服务公司介绍
  8. 【U8+】win10/11系统注册用友U8硬加密
  9. jQuery AJAX回调函数this指向问题
  10. jQuery 中ajax回调函数获得的数据格式问题