自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

逃跑的肉丸的博客

技术成就梦想

  • 博客(46)
  • 收藏
  • 关注

原创 304、Sharding分片环境部署(详述)

Sharding分片环境部署(详述)前言:Sharding是一种可以将数据分发到不同主机上的方法,主要是用于解决MongoDB巨大数据量和高吞吐量的问题。我们一开始使用单机,但是为了安全和一些读写分离改为副本集,但是业务增长快速的情况下,可能遇到很多性能上的问题;例如巨大的查询频率可能会耗尽所有CPU资源,高吞吐量可能使得I/O成为瓶颈。对于这些问题其实我们有两种方案:垂直扩展 和 水平扩展垂直扩展:说白了就是增加单台机器的资源,用更多CPU,更大内存,使用SSD硬盘;但是硬件技术上的局限性可能导致

2021-02-03 11:06:06 478 2

原创 303、副本集如何扩容

前言一般生产环境下,我们总是会遇到副本集迁移节点到新机器上的问题,或者扩容出一个新secondary节点的需求,所以这里把我的笔记放在这里供参考,如果有不妥之处请指出,谢谢;1.添加Secondary节点有时候需要在已有的Replica set架构中添加节点注:Replica Set有最大选举节点数限制:7个,超过7个如果还想再添加则只能作为non-voting member1.1 创建文件目录如果是在一台新机器上,则按照复制集节点中的目录创建即可,注意权限配置1.2、copy配置文件mo

2021-02-02 23:06:46 370

原创 302.副本集复制机制笔记

前言:Oplog日志:oplog 是 MongoDB 主从复制层面的一个概念,单点实例不存在;通过 oplog 来实现复制集节点间数据同步(producer线程实现oplog抓取);存储在local库下的oplog.rs固定集合(Capped collection),循环插入记录;oplogSize默认是free-disk的5%,最小990M,最大50G,可通过oplogSizeMB参数设置;1、Oplog的重放机制同步过程下图是MongoDB数据同步的流程[外链图片转存失败,源站可能有防

2021-02-02 22:27:17 411

原创 209、PostgreSQL12 如何逻辑复制部署

前言:我们前面提到的流复制(即物理复制)是基于实例级别的同步,即备库和主库是一模一样的;而逻辑复制是基于表级别的,可以同步某些指定的表,实现更细粒度的同步功能。使用逻辑复制的功能,我们在实现特殊需求时会方便的多,比如PostgreSQL的跨大版本升级、从一个实例拆分某一个库到另一个实例等等。逻辑复制架构图:原理:逻辑复制的原理其实就是master节点将其Publication(你可以暂且理解为一种数据对象)中的表的WAL日志进行解析后,形成一种特殊格式的日志流,传送给slave节点,之后备库上

2021-01-13 23:09:17 1642 4

原创 208、PostgreSQL12 如何手动failover

前言:PostgreSQL既然提供了主从流复制的架构,那么肯定就需要有相应的主备切换的方案,目前PostgreSQL官方提供了多种方案,并且第三方工具也提供了很多可能性。相关信息:环境:异步流复制主库:10.25.15.77备库:10.25.15.78版本:PostgreSQL 12大致流程如下:关闭主库激活备库修改原主库的primary_conninfo信息启动原主库1.查看目前的复制状态:postgres=# select usename,application_nam

2021-01-13 22:51:19 469

原创 206、PG 12版本 异步复制部署

前言:PostgreSQL在9.0版本后支持物理复制和逻辑复制两种方式,物理复制亦称‘流复制’本文我们就称之为’物理复制’好了,是基于实例级别的复制方案,并且物理复制还分异步和同步两种模式,本文我们先介绍异步复制的主从架构部署;而逻辑复制是可以做到基于表级别的复制,其实就是可选择性的复制数据,后续会介绍。部署过程1.相关信息RedHat 7.7PostgreSQL 12.210.25.15.77 ,Master节点10.25.15.78 ,Slave节点系统用户名:postgres

2020-12-30 00:19:06 308 1

原创 205、pgbench压测工具

前言:基准测试一般的衡量指标主要关注的是 吞吐量(TPS),响应时间,并发量;常见的开源数据库的基准测试工具有benchmarksql,sysbench等,PostgreSQL自带基准测试程序pgbench,在bin目录下就可以找到。1.如何安装pgbench不需要安装,直接在你安装完postgresql之后,在bin目录下就可以看到pgbench程序的身影。pgbench程序会创建4张表:pgbench_branches,pgbench_tellers,pgbench_accounts,pgb

2020-12-30 00:02:11 719

原创 204、统计信息和查询计划

前言:PostgreSQL在运行期间会收集大量的统计信息,数据库、表,索引等信息;统计信息都保存在以pg_stat 或 pg_statio开头的系统表中。1.系统表pg_stat_database此系统表统计数据库级别的信息计算缓存命中率缓存命中率应该非常接近1,否则应该调整shard_buffers参数的配置select blks_hit::float/(blks_read+blks_hit) as cache_hit_ratio from pg_stat_database where

2020-12-29 23:55:28 282

原创 203、PostgreSQL之psql使用

前言:psql是PostgreSQL自带的命令行客户端工具,具有非常丰富的功能, 类似于Oracle的sqlplus,MySQL的mysql,MongoDB的MongoDB等等命令行交互界面,对于DBA来说,熟悉psql是非常有必要也是很有帮助的。1.连接数据库实例:psql -h 127.0.0.1 -U root -d postgres参数说明在psql使用时,总是有一些参数需要你注意一下,否则可能懵逼半天-A 设置非对齐输出模式-t,只显示数据,不显示字段名称和返回的结果集行数-

2020-12-29 23:15:58 313

原创 202、如何安装postgresql

前言:PostgreSQL作为目前DB-Engines排行榜的第4名,越来越受到很多企业的青睐,故学习PG从安装开始,本文章就是描述如何搭建一个单实例的postgresql数据库系统。安装步骤:1.创建系统层面用户groupadd postgresgrpuseradd -g postgresgrp -G wheel postgrespasswd postgres2.相应目录/data/johnny/pgdata --数据目录/apps/

2020-12-29 22:51:46 210

原创 201.PostgreSQL日常操作汇总

1、常用元命令:(在psql交互界面执行)元命令能够方便便捷的管理数据库,\h, \help --获取所有可执行命令\h ALTER --获取命令ALTER的详细说明\l --获取所有数据库信息,相当于mysql的show databases\l+ --获取所有数据库信息+更多描述信息\dt --列出所有表,相当于s

2020-12-29 22:01:54 474

原创 Waiting for table metadata lock异常

前言在5.6.23生产环境的时候,有一次遇到了一个报错:show processlist 中看到大量的Waiting for table metadata lock, 并且同时引起了应用端的大量请求阻塞,无法读写数据,因此对这一问题进行了分析研究,并记录于此,希望能帮助遇到同样问题的你;结论在分析具体场景之前,我先说一下结论:mysql5.5版本后引入了MDL锁(meta data lock)机制,表级别的锁,系统会自动加持,其只分为读锁和写锁,在对表进行增删改查操作时会加上MDL读锁,而修改表

2020-12-28 23:23:04 12482 1

原创 MongoDB Aggregate之优化

到aggregate()总是头大,不知道怎么写才能达到奥林匹克精神(更高,更快,更强)经过四分卫大神指点并结合官方文档,特对aggregate书写顺序总结如下:聚合管道的优化聚合管道操作中有这样一个优化阶段,它会尝试改造管道以提升性能。如要了解优化器如何转换一个给定的聚合管道,可以查看 db.collection.aggregate() 方法中的 说明 选项的输出结果。 ·具体的...

2019-09-27 10:15:07 2675

原创 MongoDB数据库迁移(复制集集群迁移)

数据库(复制集)迁移@(MongoDB)[复制集|迁移|]数据库复制集迁移前言准备架构图说明步骤1部署新节点1 创建相应路径2 修改启动文件3 复制数据文件4 启动新节点2加入集群中3检查数据同步状态4切断新节点1 创建临时数据2 验证数据3 移除新节点5部署新复制集1 启动其余节点2 配置新复制集6检查集群状态总结

2018-01-12 14:46:33 4468 1

原创 MongoDB3.2 之 oplogSize修改

MongoDB3.2 之 oplogSize修改前言: 有时候由于某些情况,我们需要修改oplogSize大小,由于目前版本3.2不支持在线修改,好像说是3.6版本将支持在线修改,所以我们只能对副本集成员逐一进行,注:primary节点最后修改,先修改可能会成为主节点的secondary节点开始。大致步骤如下:重启节点为单实例方式运行(不同端口)修改oplog大小(保留最近的一条oplog记录

2017-12-29 17:18:25 2165 1

原创 Replica set搭建过程

Replica set搭建过程@(MongoDB)[副本集|三节点]前序: 自己测试着玩可以使用单实例mongod服务,但若部署在生产环境下,还是需要复制集或分片架构的,本文只探讨复制集搭建过程;复制集功能强大,可以实现故障自动切换、各个节点之间数据完全一致等高可用功能。配置信息:设备类型:VMware Virtual Platform 内存:8G CPU: 4 (2个独立双核C

2017-12-29 16:59:24 1210

原创 副本集新增Delayed Secondary

副本集新增Delayed Secondary前言 由于业务日志增多,mongo库日趋重要,随需要对mongo环境进行加固,为了防止误操作导致数据丢失,随将原replica set架构中的Arbiter节点转换为Delay Secondary节点。架构图原架构 新架构 考虑因素延迟节点的priority:0,防止此节点被选举为Primary;必须是hidden节点,防止应用程序连接

2017-12-29 16:55:45 457

原创 MongoDB3.2 之 oplogSize修改

有时候由于某些情况,我们需要修改oplogSize大小,由于目前版本3.2不支持在线修改,好像说是3.6版本将支持在线修改,所以我们只能对副本集成员逐一进行

2017-11-16 17:28:38 589

原创 MongoDB 与 SQL 语句映射关系(持续更新中)

前序:无论是刚开始接触mongodb,还是接触了一段时间的老用户,每次想写一个DML语句都觉得有点费劲,因为mongo的语法确实与RDMS不一样,所以为了方便我也为了方便后人,故整理一下他们之间的对应关系(会结合官网文档以及自己的一些实践总结,会持续更新。。。)SQLMongoDBdatabasedatab

2017-09-30 17:44:58 705

原创 GridFS

GridFS前言:mongo对document有限制16M大小,如果插入超过此限制的数据则会报错。为了解决此问题,我们可以使用mongo的另一个特性GridFS来存储超大文件(文本文件,视频,音频等)说明:GridFS的使用机制就是将大文件拆分成小数据块chunk块,有序存放到mongo数据集合当中,以文档document的形式存在,这样的数据块我们称之为chunk; chunk块的单位

2017-08-22 23:27:29 1871

原创 MongoDB3.2 之 aggregate的管道符详述

众所周知,aggregate是mongodb非常强大的工具之一,之所以强大是因为它可以像乐高一样随意摆放各种组件(当然还是要遵守一定规则的)数据集合下面就简单介绍一下各个组件的使用方法:1、$project: 遍历文档的指定字段到下一个stage(阶段);意思就是说可以过滤掉某些字段(包括过滤掉_id)、可以重命名字段、添加新的字段,重置字段的值

2017-07-17 17:06:19 1830

原创 MongoDB 的Rollback讲解及避免

前言:     前段时间突然发现数据库文件路径下多了个rollback名字的文件夹,很是纳闷,里面居然还有.bson后缀格式的文件,随一探究竟。原来是在这段时间内发生过failover(主从切换),导致了某些不一致数据的丢失,这可是一个大问题啊,弄不好就是要丢数据的,故进行了些调查研究,详述于此;供大虾们大绳们指点。解释:     首先,rollback到底是什么意思呢

2017-06-16 10:18:28 12754 7

原创 Aggreagation 日常使用语句汇总(持续更新)

数据结构:1、分组$group:db.t2.aggregate({$group:{"_id":"$class_id"}}) 2、 分组并统计数量:db.t2.aggregate({$group:{"_id":"$class_id","count":{"$sum":1}}})3、 多字段分组并统计:db.t2.aggre

2017-05-05 17:24:36 933

原创 Aggregate之表连接$lookup

前序:关系型数据库有表连接功能,那么NOSQL有吗?MongoDB有吗?很高兴3.2版本出现了尽管提供了表连接功能,但是官方还是建议尽量使用内嵌文档的结构来减少表连接的使用今天介绍的是$lookup, 类似于关系型数据库中的left outer join,语法:db.collection.aggregate([{   $lookup:     {

2017-03-29 13:34:07 11585 4

原创 MongoDB3.2---Profiling慢查询详解

官方查询地址:https://docs.mongodb.com/v3.2/tutorial/manage-the-database-profiler/在很多情况下,DBA都要对数据库的性能进行分析处理,找出降低性能的根源而Mongo就有一种分析工具来检测并追踪影响性能的慢查询---Profile有两种方式可以控制Profiling的开关和级别,第一种是直接在启动参数中进行设置,如下

2017-02-23 17:40:01 7515

原创 MongoDB3.2---基本操作汇总

连接方式:单点连接数据库:root#mongo 192.168.1.100:30000/testDB -u tuser -p  --authenticationDatabase admin注:testDB是默认登录的数据库,也可以是有权限访问的其他数据库admin是账号tuser创建时所在的数据库,也就是认证数据库,不可改变,如果--authenticationDataba

2017-02-13 16:37:20 977

原创 MongoDB3.2工具---Mongostat

此工具提供关于mongod和mongos的当前运行状态概览常用命令格式:mongostat --host 192.168.1.100:27017 -uroot -p123456 --authenticationDatabase admin参数说明:host:指定IP地址和端口,也可以只写IP,然后使用--port参数指定端口号-u: 如果开启了认证,则需要在其后填写用户名

2017-02-09 17:46:56 4446

原创 MongoDB3.2 ---存储过程

关系型数据库中都有存储过程,那么Mongo中有没有呢?答案是肯定有的MongoDB的存储过程存储在db.system.js集合中,可以重复调用格式实例:     db.system.js.save(  {    _id: "echoFunction",          ---存储名称,在每个database中是唯一的    value : function(x)

2017-02-09 17:42:05 2914

原创 MongoDB3.2磁盘碎片整理---compact详述

前序:由于业务原因,需要将过期数据删除,之前也已经写了一篇关于如何定期删除数据的文章,但有一个问题出现了,频繁删除数据之后,会产生很多磁盘碎片,这些碎片进而会影响查询性能,随需要处理之有好几种方法处理:①使用compact命令②重建collection③新加一个secondary节点,然后将此节点切换为primary后两种方法以后有时间再细说,也是网友提供的,今天只看C

2017-02-08 13:12:32 3905

原创 MongoDB3.2 安全(一)---authentication

MongoDB提供了很多安全特性,有:AuthenticationAuthorizationTLS/SSLEnterprise Only 今天先来看一下authentication(认证)目前植入如下几种认证机制:SCRAM-SHA-1MongoDBChallenge and Response (MONGODB-CR)x.509Certificate Aut

2017-02-08 09:29:47 1252

原创 Linux的CPU、内存、磁盘查看方法

前序:        想了解一下自己用的RedHat系统的相关配置信息,突然一时间还想不起来了,随查找了一番并记录一下,以供后续查看一、CPU       首先要明确物理cpu个数、核数、逻辑cpu数的概念       1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)       cat /proc/cpui

2017-02-07 11:40:47 996

原创 MongoDB自动删除过期数据--TTL索引

前序:由于公司业务需求,对于3个月前的过期数据需要进行删除动作,以释放空间和方便维护本来想的是使用crontab写个脚本定时执行,但是看到Mongo本身就有自动删除过期数据的功能,所以还是用一下吧这个方法就是使用TTL索引,后续我再写一个脚本定时删除的任务介绍:TTL索引是MongoDB中一种特殊的索引, 可以支持文档在一定时间之后自动过期删除,目前TTL索引只能在单字段上建立

2017-01-20 14:30:23 35355

原创 监控系统---使用Ganglia监控MongoDB

序言:说道监控问题,官网推介了很多工具,有的是命令行形式,比如mongostat,mongotop,有的是图形界面模式,但也有收费免费之分,比如官网自己的Cloud Manager,Compass就是收费企业版才能用的,当然也可以试用免费开源的官网也推介了很多,比如Ganglia、Zabbix等等Ganglia是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计

2017-01-17 21:05:38 3162

原创 使用synergy实现键鼠共享

前序:       软件下载地址:http://symless.com/download/free/(官网)      教程地址:http://www.iplaysoft.com/synergy.html部署:设置服务器端:为了简单起见,我现在只选用已经在同一局域网下的Linux(CentOS) 和Windows 两台电脑,windows作为服务器端时先从网

2017-01-03 16:41:04 4104 3

原创 Kettle安装部署

环境:win 7  Java:JDK1.6基础知识Kettle是目前开源的ETL工具,可以实现不同平台,相同平台之间的数据抽取、输入等动作,以模块化形式实现。1.      配置JAVA环境首先需要安装JDK,配置好JAVA_HOME等环境变量2、Kettle下载下载地址:http://community.pentaho.com/projects/dat

2017-01-01 15:24:52 2727 1

原创 实现SQL Server到MySQL的表增量同步

前序本教程是为了实现SQLSERVER数据库表中数据增量同步到MySQL数据库,并每天定时执行一次。注:只实现了新增与更新数据,源库中删除的数据未实现同步1、前期准备开始之前,请记得自行安装JDBC,安装步骤百度搜索即可Kettle的安装,请参考我的《Kettle安装部署》教程配置步骤2、配置“输入”--配置源数据库2.1、新建转换打开Kettle软体,新建一个

2017-01-01 15:10:11 8936

原创 MongoDB3.2 用户权限

role里的角色可以选: Built-In Roles(内置角色): 1. 数据库用户角色:read、readWrite; 2. 数据库管理角色:dbAdmin、dbOwner、userAdmin; 3. 集群管理角色:clusterAdmin、clusterManager、clusterMonitor、hostManager; 4. 备份恢复角色:backup、restore; 5. 所有数据库角色:readAnyDatabase、readWriteAnyData

2016-12-26 22:23:45 12573

原创 MongoDB3.2增删查改方法简述(CRUD操作)

一、前序无论什么数据库,都必须会有增删查改的操作,只是方法形式不一样而已,其实思路还是差不多的,下面我们就对MongoDB3.2版本的文档操作简述并验证一下二、查select:简单查询:>db.t1.find(){ "_id" : ObjectId("585ce007d993c80e8713c7bd"), "x" : 1, "j" : 1 }{

2016-12-26 21:56:20 1250

原创 SQL 表分组后获取最大值的整条记录

今天在工作的时候需要使用到一个分组最大值查询问题,搜罗了一下答案,了解了一些,为了巩固知识,还是做一下测试为好目标:根据course分组求出score最大值的整条记录例子:查询一个班级中各科目的第一名的整行记录创建测试表:CREATE TABLE students (course varchar(10), stu_name varchar(10)

2016-12-22 21:54:05 7766

原创 YUM源配置教程

YUM本地源配置教程说明:yum源一般以http、ftp方式访问,本教程是http方式,ftp方式的话就是在/var/ftp/目录下新建文件yum/CentOS,并执行service vsftpd start命令,其他步骤都一样以CentOS为例,其实都差不多;1、新建yum源的存放路径     #mkdir -p /var/www/html/yum/CentOS2、挂载

2016-12-09 17:47:55 641

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除