撸了一次 Js 代码
由于工作的需要,需要 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 代码相关推荐
- Python模拟登陆,解密js代码实例:知乎登陆
本文转载自公众号 | 日常学Python 作者 | sergiojune 如果你现在想模拟登陆知乎,会发现 fromdata 是一串加密的字符串 image 看了之后是不是很痛苦?你是不是就想使用 s ...
- html单选框怎么用js实现选中状态,怎么用js代码改变单选框的选中状态
今天突然有一个需求要用到,使用js代码改变单选框的选中状态.当时想也不想直接 function doGender(gender) { if (gender == "男") { ge ...
- 超nb的网页标签弹窗js代码!
首先说一下业务需求: 需要在当前各主流浏览器上从tab标签形式弹出一个页面,尽量不要以单独窗口弹出. 下面是网上搜集并修改.验证后的js代码,以备以后参阅. function getUnionCook ...
- 一行js代码识别Selenium+Webdriver及其应对方案
有不少朋友在开发爬虫的过程中喜欢使用Selenium + Chromedriver,以为这样就能做到不被网站的反爬虫机制发现. 先不说淘宝这种基于用户行为的反爬虫策略,仅仅是一个普通的小网站,使用一行 ...
- 判断是否移动端设备的JS代码,超短,百度都用它
为什么80%的码农都做不了架构师?>>> 大多数人都使用跳转适配的方式实现PC端到移动端的网页转换,而大多数人又是使用通过判断UA的方法来区分PC端还是移动端,思路一样,但代码 ...
- 爬虫之selenium控制浏览器执行js代码
爬虫之selenium控制浏览器执行js代码 selenium可以让浏览器执行我们规定的js代码,运行下列代码查看运行效果 import time from selenium import webdr ...
- 浮层java_通过遮罩层实现浮层DIV登录的js代码
摘要:这篇JavaScript栏目下的"通过遮罩层实现浮层DIV登录的js代码",介绍的技术点是"浮层DIV.JS代码.div.遮罩层.登录.代码",希望对大家 ...
- 用鼠标拖动图片的JS代码
代码简介: 用鼠标拖动一个图片移动,就像拖动一个层一样,这是一个JS拖动类代码,你可以无限制的增加图片,代码复用率比较高. 代码内容: View Code <html><HEAD&g ...
- html实体编码遇上js代码
单双引号 在js代码中 在js中单.双引号引起来的是字符串,如果我们要在字符串中使用单.双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=&quo ...
最新文章
- ENGINEER 003:配置IPv6地址
- java inputstream 回退_系统学习 Java IO (十)----回退流 PushbackInputStream
- JSONP的诞生、原理及应用实例
- 《Go语言圣经》学习笔记 第六章 方法
- 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
- linux下如何启动vsftp服务,如何在Ubuntu 18.04上使用VSFTP快速设置FTP服务器
- Android无法优化应用,Android应用优化总结
- php composer使用过程
- 【不懂】spring bean生命周期
- 苹果CMSV10好看的模板灰黑色爱看影院自适应炫酷黑模板
- java web程序设计与..._Java Web程序设计
- 北通手柄连接电脑没反应_北通手柄怎么连接电脑
- wine装通达信_【已解决】谁能给我一个可以运行通达信股票软件的wine
- echarts 3d地球js特效代码
- 嵌入式面试常见问题(七)—各大公司面试题
- Borland 26年风雨路
- return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Replacing columns cSerDe may be incompati
- 关于switchport Port-security 使用遇到的一些问题
- docker部署es和kibana遇到的坑
- (与运算)、|(或运算)、^(异或运算)等运算符的解释与运用
热门文章
- c语言提取字符串里面的数字,一个截取字符串中数字的函数
- Android PAI (PlayAutoInstall)功能一些经验
- 李勇强seo,李勇强SEO
- java中的消息队列
- 2022年8月又更新了:房测之友(BMF2018)免数据库版BMFse,有点高大上的样子
- 【Kubernetes】k8s的安全管理详细说明【k8s框架说明、token验证和kubeconfig验证详细说明】
- 国内外知名云服务公司介绍
- 【U8+】win10/11系统注册用友U8硬加密
- jQuery AJAX回调函数this指向问题
- jQuery 中ajax回调函数获得的数据格式问题