当前位置: 首页 > news >正文

有人做彩票网站吗/sem优化托管

有人做彩票网站吗,sem优化托管,集团网站建设公司,深入了解网站建设作者:北丐。 MongoDB中文社区联席主席,针对MongoDB,MySQL,Redis集群,Oracle,TiDB;有丰富的实践经验和企业级授课经验。一、MongoDB数据库修改Oplog,回收空间,升级3.2版本…

f6ff2bd4a6c40839697cca20f5a0b0dc.png

作者:北丐。 MongoDB中文社区联席主席,针对MongoDB,MySQL,Redis集群,Oracle,TiDB;有丰富的实践经验和企业级授课经验。

一、MongoDB数据库修改Oplog,

回收空间,升级3.2版本等

1. 目前生产环境现状

(1)  随着业务日益增大,数据量也随之增多,由于历史原因,所有业务DB基本都在一个MongoD实例中;

(2)  随之而来的就是业务访问DB QPS/TPS等压力增大,导致用户业务接口不断超时;

(3)  主机磁盘空间使用比率过大,数据库/集合存碎片比较多;

(4)  MongoDB版本为3.2,有一定的WT引擎内存死锁概率,建议升级到3.4版本;

(5)  Oplog在高峰期只有3.5分钟可同步数据时间间隔,覆盖后secondary节点成为recovering状态。

2. MongoDB环境

(1)  主机配置

16core cpu,128G内存,4TBSDD

(2)  MongoDB架构

  192.168.111.4:28010主

  192.168.111.5:28010从

  192.168.111.6:28010从

1主+两从复制集模式(业务读,大数据拉取数据)

(3)  数据库现状

user:PRIMARY> show dbs;

msg_user    816.698GB

comm_user   1721.887GB

video_user    1315.534GB

(4)  Oplog大小

a.    由于mongodb oplog是封顶集合,即固定大小;基于历史原因,oplog设置为1GB;

b.    存在的风险:比如3节点副本集,一主两从,如果oplog在高峰期,主库dml相当频繁,覆盖了oplog日志信息,而secondary节点没有接收到,则secondary状态则会成为recovering状态,不可对外提供读服务;

c.    或者secondary节点在高峰期down,3分钟修复不好,则成为recovering状态

(5)  综合考量如上

a.    垂直拆分DB,降低集群的qps/tps,缓解业务访问DB产生资源竞争导致接口超时;

b.    以添加3.4版本副本集:同步数据,修改参数中Oplog大小;

3. 添加3.4版本隐藏副本节点

(1)  登陆主库111.5

(2)  执行添加命令

rs.add({_id:121,host:"192.168.111.7:28010", priority:0,hidden:true})

参数配置参考

(3)  为什么不添加3.2 mongo版本,而是添加了3.4mongo版本

  • 最主要原因:提升全量同步

a.    在拷贝数据的时候同时建立所有的索引,在之前的版本,拷数据时会先建立_id索引,其余的索引在数据拷贝完之后集中建立

b.    在拷贝数据的同时,会把同步源上新产生的oplog拉取到本地local数据库的临时集合存储着,等数据全量拷贝完,直接读取本地临时集合的 oplog来应用,提升了追增量的效率,同时也避免了同步源上 oplog不足导致无法同步的问题;

c.    3.4版本的全量同步性能约有 20%的提升,如果数据集很大,并且在同步的过程中有写入,提升的效果会更明显,并且彻底解决了因同步源oplog不足而导致进入RECOVERING状态无法同步的问题

4. 升级副本集主从节点

(1)  192.168.111.6:28010从库操作

a.    先挂载一个4tb存储磁盘

b.    将该节点设置为隐藏节点

cfg =rs.conf()  #数组下标从0开始

cfg.members[2].priority= 0

cfg.members[2].hidden= true

rs.reconfig(cfg)

c.    使用mongostat观察是否还有读

query基本为0即可

d.    将192.168.111.7shutdown后,copy数据到111.6

数据copy完后;

切记:先将111.7起来,不然集群中4个节点,在替换111.6数据时会发生主选举失败;

e.    然后111.6 shutdown,使用3.4新版本启动即可

f.     大概10分钟左右,将该节点设置为非隐藏状态

cfg = rs.conf()  #数组下标从0开始

cfg.members[2].priority = 10

cfg.members[2].hidden = false

rs.reconfig(cfg)

(2)  192.168.111.5:28010从库升级参考(1)即可

主要是cfg = rs.conf()获取的下标数据不一样

(3)  最后升级192.168.111.4:28010主库

a.    选择在业务低峰期执行

b.    首先将其中一台从库提升为主库:192.168.111.6:28010

使用调整优先级来进行的,比如主库优先级是100,将从库设置如下

cfg = rs.conf()  #数组下标从0开始

cfg.members[2].priority = 156

rs.reconfig(cfg)

c.    然后将192.168.111.4:28010设置为隐藏节点

cfg = rs.conf()  #数组下标从0开始

cfg.members[0].priority = 0

cfg.members[0].hidden = true

rs.reconfig(cfg)

d.    111.7 shutdown后,copy数据到111.4

e.    启动111.4

f.     将111.4设置为非隐藏节点

cfg = rs.conf()  #数组下标从0开始

cfg.members[0].priority = 10

cfg.members[0].hidden = false

rs.reconfig(cfg)

运行10分钟左右看看访问情况

g.    将111.4切换为主库

cfg = rs.conf()  #数组下标从0开始

cfg.members[0].priority = 356

rs.reconfig(cfg)

5. 注意说明

(1)  添加新节点111.7的时候,参数文件中Oplog设置为50G

(2)  同步数据时将journal设置为false,完了之后,修改为true

(3)  升级到3.4版本后,登陆集群中每台查询,oplog大小

user:PRIMARY>db.printReplicationInfo()

configured oplog size:  50240MB

(4)  MongoDB数据库空间大小《同时回收的DB空间》

user:PRIMARY>show dbs;

msg_user     645.213GB

comm_user    1319.731GB

video_user     997.298GB

6. 修改MongoDB架构

在原来基础上,192.168.111.7为隐藏节点;

添加了一个延迟节点111.8

将变成5个节点的副本集

二、 MongoDB数据库迁移

- 副本集名称修改

1. 目标将核心数据库comm_user迁移到新环境

 集群规划:

 192.168.111.14:28010主

 192.168.111.15:28010从

 192.168.111.16:28010从

 192.168.111.17:28010隐藏

 192.168.111.18:28010延迟

  主机配置 16c 128g内存 4tb ssd

2. 具体操作如下

(1)  在111.4主节点添加隐藏节点192.168.111.14:28010

a.    将192.168.111.7数据copu到111.14主机,并启动mongod进程

b.    在111.4添加

rs.add({_id:128, host:"192.168.111.14:28010",priority:0,hidden:true})

c.    建议在晚上业务低峰期执行

(2)  提升192.168.111.14:28010为主节点

保障192.168.111.14:28010在集群中的状态为SECONDARY

(3)  在111.4上执行remove操作

rs.remove(“192.168.111.14:28010”)

(4)  登陆111.14提升为主

#/usr/local/mongodb-linux-x86_64-3.4.20/bin/mongo192.168.111.14:28010/adminuser:OTHER>db.auth('admin','。。。') #认证1user:OTHER>cfg={_id:"user",members:[{_id:1,host:"192.168.111.14:28010",priority:136}]} user:OTHER>rs.reconfig(cfg,{force:true});{"ok" : 1 }klian:SECONDARY>user:PRIMARY> rs.status()

注意:初始化 和之前的集群名称一样

3. 将副本集名称从user修改为comm_user

(1)  3.4版本使用admin账号操作local数据库需要授权如下角色

user:PRIMARY> db.createRole({role:'sysadmin',roles:[],privileges:[ {resource:{anyResource:true},actions:['anyAction']}]})

user:PRIMARY> db.grantRolesToUser( "admin" , [{ role: "sysadmin", db: "admin" } ])

否则:"errmsg" : "not authorized on local toexecute command ……

(2)  在local库中修改副本集相关信息

a.    登陆192.168.111.14:28010

b.    use local

c.    user:PRIMARY>db.system.replset.findOne()

{

"_id" : "user",

……

d.    user:PRIMARY>db.system.replset.findOne()

e.    user:PRIMARY>  var doc = db.system.replset.findOne()

f.     user:PRIMARY>  doc._id = "commUser"

commUser

g.    user:PRIMARY>db.system.replset.save(doc)

WriteResult({ "nMatched" : 0,"nUpserted" : 1, "nModified" : 0, "_id" :"commUser" })

h.    user:PRIMARY>db.system.replset.find().pretty()

{

    "_id" :"user",

    ……

}

{

    "_id" :"commUser",

    ……

}

删除旧的副本集名称

user:PRIMARY>db.system.replset.remove({_id:'user'})

WriteResult({ "nRemoved" : 1 })

(3)  修改参数文件中副本集名称

#/usr/local/mongodb-linux-x86_64-3.4.20/bin/mongod-f/data/etc/user.conf –shutdown

# vim/data/etc/user.conf

修改

replication:

replSetName:commUser

/usr/local/mongodb-linux-x86_64-3.4.20/bin/mongod-f/data/etc/user.conf –启动

(4)  登陆192.168.111.14:28010查看即可

(5)  陆续将其他节点添加到该集群中

rs.add({_id:128, host:"192.168.111.15:28010",priority:0,hidden:true})

rs.add({_id:128, host:"192.168.111.16:28010",priority:0,hidden:true})

rs.add({_id:128, host:"192.168.111.17:28010",priority:0,hidden:true})

rs.add({_id:128, host:"192.168.111.18:28010",priority:0,hidden:true})

a.    将15/16成为secondary状态后,修改为非隐藏节点

cfg = rs.conf()

cfg.members[1].priority= 10

cfg.members[1].hidden= false

rs.reconfig(cfg)

b.    将111.18成为secondary状态后,修改为隐藏延迟节点

cfg =rs.conf()

cfg.members[4].priority = 0

cfg.members[4].hidden = true

cfg.members[4].slaveDelay = 18000

rs.reconfig(cfg)

4. 业务修改连接DB IP和副本集名称

5. 说明:

(1)  在迁移数据库,将111.14提升为主,我们使用了6秒时间完成操作

a.    DB操作的命令要准备好

b.    业务提前修改好新集群的IP+port,直接重启服务

(2)  在之前老的集群111.4中,将连接comm_user数据库的用户名密码修改

a.    登陆111.4:28010

b.    修改密码

use comm_user

db.changeUserPassword(comm_user,' comm_user20190090');

(3)  在随后没有如果业务不出问题,则可将老的集群中comm_userDB删除

三、MongoDB版本升级版本<3.4~3.6> 

1. 参考如下文章

升级到3.6参数https://docs.mongodb.com/manual/release-notes/3.6-upgrade-replica-set/

2. 登陆192.168.111.14:28010操作如下

commUser:PRIMARY>db.adminCommand( { setFeatureCompatibilityVersion : "3.4" } )

{"ok" : 1 }

commUser:PRIMARY>db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

{ "featureCompatibilityVersion" :"3.4", "ok" : 1 }

(1)  Shutdown

# /usr/local/mongodb-linux-x86_64-3.4.20/bin/mongod -f/data/home/db/user.conf –shutdown

(2)  使用3.6版本启动

#/usr/local/mongodb-linux-x86_64-3.6.13/bin/mongod -f /data/home/db/user.conf

(3)  登陆到14mongo实例

commUser:PRIMARY>db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )

{"featureCompatibilityVersion" : { "version" :"3.4" }, "ok" : 1 }

commUser:PRIMARY>db.adminCommand( { setFeatureCompatibilityVersion : "3.6" } )

{ "ok" : 1,"operationTime" : Timestamp(1561358793, 12) }

(4)  查看版本

use admin

commUser:PRIMARY>db.system.version.find()

{"_id" : "authSchema", "currentVersion" : 5 }

{ "_id" :"featureCompatibilityVersion", "version" : "3.6"}

(5)  进入local数据库

commUser:PRIMARY>use local

switchedto db local

commUser:PRIMARY>show tables;

me

oplog.rs

replset.minvalid

replset.oplogTruncateAfterPoint

startup_log

system.profile

system.replset

system.rollback.id

比3.4版本多了几个集合

3. 说明

(1)  如上只是一个升级主库的案例;

(2)  事实上,先升级secondary,将该节点设置为隐藏节点,没有query后,在操作,基本不影响业务操作;

(3)  然后再升级主库,当然会将某个secondary提升为主库,在主从切换时,会有大概1~5秒的影响;

(4)  从3.2升级到3.4是因为需要回收空间,在线添加节点是最有效的方式;

(5)  如果不回收空间等其他操作,从3.4升级到3.6只需要按照官网操作即可。

END
Kubernetes  CKA线下班

0963a842a2bcef446b53e2f7b4139e56.png

452aba173c502e73dca02bd86aabb730.gif

fedf46da4a944c1b87646c7c634ee383.png

http://www.jmfq.cn/news/5255911.html

相关文章:

  • 电子商务网站开发的题/义乌百度广告公司
  • 广告网站建设价格/免费创建网站平台
  • 如何做的网站排第一/网站发布与推广
  • 网上做家教哪个网站/西安seo霸屏
  • web网站发布/seo长尾关键词排名
  • 怎么做棋牌网站/如何在百度推广网站
  • 怎样卸载电脑上的wordpress/企业网站seo方案案例
  • 上林县建设局网站/千峰培训出来好就业吗
  • 网上创业及网站建设实训总结/太原网站推广公司
  • 做网站用软件/市场调研报告范文2000
  • 海外网站域名/北京网站制作公司
  • 网站 语言选择/免费自己建网页
  • 丰都网站建设联系电话/长春网站搭建
  • 怎么做室内设计公司网站/杭州seo公司哪家好
  • 网站开发项目/今日中央新闻
  • 沈阳企业网站/成都网络优化公司有哪些
  • 简洁公司网站源码/福建seo排名培训
  • 做公司网站要注意哪些问题/业务推广网站
  • 传奇网站模板免费下载/免费网上销售平台
  • 沈阳城市建设学院官网网站/企业培训系统
  • 武汉建设网站建站/seo优化排名易下拉软件
  • php wordpress乱码/seo优化及推广如何运营
  • 购物网站图片的放大怎么做的/如何推广公司网站
  • 如何做谷歌网站优化/网店如何营销推广
  • 建设部网站城乡规划资质标准/十大最靠谱培训机构
  • 做国外单的网站叫什么/怎么做网站链接
  • 自己怎么制作小程序商城/seo网站优化报价
  • 网页生成器手机版/宁波seo外包费用
  • 网站建设需要什么设备/万网域名
  • 做购物网站/深圳外贸seo