自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(70)
  • 收藏
  • 关注

原创 一文看懂mysql数据库事务隔离级别

概述我们都知道除了MySQL默认采用RR隔离级别之外,其它几大数据库都是采用RC隔离级别。那为啥mysql要这样设置呢?其实是MySQL为了规避一个数据复制场景中的缺陷,而选择 Repeatable Read 作为默认隔离级别。不过不同数据库实现方式还是不太一样。Oracle仅仅实现了RC 和SERIALIZABLE隔离级别。默认采用RC隔离级别,解决了脏读。但是允许不可重复读和幻读。其SERIALIZABLE则解决了脏读、不可重复读、幻读。MySQL的实现:MySQL默认采用RR隔离级别,SQL

2021-03-31 14:41:51 398

原创 基于centos7自动部署Oracle11g数据库

概述闲来无事,把Oracle11g的自动部署脚本也写了,仅供参考。19c的后面抽空再写了…这里主要是考虑单机的,因为RAC的手动去装会好点,且没相关需求,就懒得写了…一、自动部署脚本:环境:centos71、整体安装步骤如下:[1]配置主机名和hosts文件[2]禁用selinux和防火墙[3]配置Swap内存[4]下载安装包[5]安装依赖包[6]创建用户&文件夹及授权[7]禁用avahi服务[8]禁用透明大页和numa[9]禁用NetworkManager[10]配

2021-08-19 19:41:32 550

原创 Redis整形溢出漏洞(CVE-2021-32761)及修复脚本

一、漏洞情况说明Redis整形溢出漏洞(CVE-2021-32761):Redis是世界范围内应用广泛的内存型高速键值对数据库。攻击者通过BIT命令与proto-max-bulk-len配置参数结合的情况下,可攻击运行在32位的系统中的32位的Redis程序,该漏洞能够造成整形溢出,并最终导致远程代码执行。二、影响范围Redis整形溢出漏洞影响版本:2.2 < Redis Redis < 5.0.132.2 < Redis Redis < 6.0.152.2 <

2021-07-23 14:44:43 4189

原创 基于Percona XtraBackup 实现MySQL数据库全备&增量备份与恢复

概述今天主要分享下如何用XtraBackup来实现全备&增量备份与恢复。参考官方手册: https://www.percona.com/doc/percona-xtrabackup/2.4/index.html一、Percona Xtrabackup概述Percona XtraBackup是世界上唯一一款开源的免费MySQL热备份软件,可以为InnoDB和XtraDB数据库执行非阻塞备份。使用Percona XtraBackup,可以获得以下好处:快速可靠地完成备份备份期间不间断的事

2021-07-17 11:22:15 2645 1

原创 基于AWK/sed从mysqldump备份文件中快速恢复数据表

概述这里以一份备份文件50G的文件来恢复,假设要恢复其中一张表,如果做全库恢复不太现实。下面使用正则匹配的方式去把需要恢复的表数据拿出来,然后进行恢复。注意前两种方法show tables的表顺序要和mysqldump时的顺序相同先看一下show tables的顺序:1、基于awk截取顺序恢复顺序恢复calendar表到zt_dept的前一张表awk '/^-- Table structure for table .calendar./,/^-- Table structure for tab

2021-07-17 10:09:57 210

原创 MySQL数据库Binlog解析工具--binlog2sql

概述作为DBA,binlog2sql是一项必须掌握的工具。binlog2sql是一个开源的Python开发的MySQL Binlog解析工具,能够将Binlog解析为原始的SQL,也支持将Binlog解析为回滚的SQL,以便做数据恢复。gihub:https://github.com/danfengcao/binlog2sql一、闪回原理简析开始之前,先说说闪回。我们都知道 MySQL binlog 以 event 为单位,记录数据库的变更信息,这些信息能够帮助我们重现这之间的所有变化,也就是所谓

2021-07-17 09:18:59 6118 1

原创 记一次MySQL数据库备份恢复演练实验

概述需求:模拟生产数据库故障,恢复到故障前一秒场景:有一份初始备份和后面的binlog,早上9点故障,然后直接拿所有的备份和binlog到另外一台服务器做恢复,按备份文件和备份文件记录的位置+最后8.59分的时间之间的binlog恢复。Mysql备份方案分为以下三种:1.mysqldump+binlog:(推荐)完全备份,通过备份二进制日志实现增量备份2.xtrabckup:对InnoDB:热备,支持完全备份和增量备份对MyISAM:温备,支持完全备份3.lvm2快照+binlog:几乎热

2021-07-17 08:52:02 1599

原创 误删MySQL数据库软件后如何快速恢复?

概述之前在部署percona-toolkit --mysql工具包时,提示缺了perl-Time-HiRes,但是yum安装却提示已经安装了,因为yum没配置好的原因,所以就直接yum remove perl-Time-HiRes.x86_64,然而MySQL数据库是用rpm安装的方式,由于依赖导致整个mysql数据库软件都给删了,然后数据库直接停了…以上就是故障发生的原因…相关截图如下:查看my.cnf解决思路这里捋一捋思路:1、mysql数据库昨晚11点自动备份,也有binlog,那问

2021-07-12 14:01:38 888

原创 ORACLE数据库安全之SCN漏洞检查

概述Oracle数据库在2019年6月份自动启动了SCN的新机制,即SCN rate 最大增长可达96kb,远超之前的32kb。当然,并不是说所有版本的Oracle数据库,都将自动启用这一特性(感觉Oracle埋了一个坑)。准确一点的说,时间点是2019年6月23号;SCN的新机制启动时间点通过以下sql可以发现具体时间点:set serveroutput ondeclare v_autorollover_date date; v_target_compat number; v_is

2021-07-09 16:58:45 611

原创 详解ORACLE多租户(容器)数据库中如何创建PDB

概述在容器数据库CDB里面如何创建PDB,官方文档给出了一张创建PDB技术选项图,图片如下:以下基于Oracle19c做演示。一、从种子创建PDB1、概述使用种子(PDBSEED)创建新的PDB,过程是把PDBSEED)创建新的PDB,过程是把PDBSEED)创建新的PDB,过程是把PDBSEED中的数据文件复制到 CREATE PLUGGABLE DATABASE 语句中定义的目标目录中。如下图:整体过程:1)从 PDB$SEED 中复制数据文件2)创建 SYSTEM 和 SYSAUX 表

2021-07-07 17:18:29 1052 2

原创 详解ORACLE数据库硬解析、软解析、软软解析

概述TOM大叔的调优书中说过一句话,大概意思就是:如果有人让我写本怎样让ORACLE性能最慢的书的话我会将取消绑定变量(bind variable)做为书的第一章和最后一章,可见绑定变量的重要性。而绑定变量影响的实际上就是Oracle数据库的硬解析和软解析了。Oracle数据库硬解析和软解析有相同的一步,而软软解析与硬解析、软解析完全不一样。一、sql解析众所周知,sql语句执行步骤大致如下:1)语法检查(syntax check)2)语义检查(symantic check): 对象是否存在,

2021-07-07 17:07:51 3429

原创 Oracle数据库SQLNET.INBOUND_CONNECT_TIMEOUT与inbound_connect_timeout_监听器名

概述简单介绍下SQLNET.INBOUND_CONNECT_TIMEOUT与inbound_connect_timeout_监听器名。一、SQLNET.INBOUND_CONNECT_TIMEOUT与inbound_connect_timeout_监听器名关于sqlnet.ora的参数SQLNET.INBOUND_CONNECT_TIMEOUT,它表示等待用户认证超时的时间,单位是秒,缺省值是60秒,如果用户认证超时了,服务器日志alert.log显示出错信息"WARNING: inbound con

2021-07-07 16:10:51 1539

原创 DBA常用诊断事件清单

概述Oracle内部诊断事件很多,在一些复杂诊断与优化过程中,DBA经常会通过诊断事件去分析问题,或者设置诊断事件解决某些bug。下面分享一份常用的诊断事件清单。常用诊断事件

2021-07-07 16:03:07 126

原创 Oracle数据库巡检表--服务器、操作系统、存储、数据库

概述在对数据库做整体优化的时候,我们需要先针对一个新的系统做整体巡检,涉及服务器、操作系统、存储、数据库多个层面,这里简单整理一个检查表,内容如下:

2021-07-06 19:00:44 695

原创 详解Oracle数据库int、number类型和char、varchar、varchar2类型的区别

概述简单汇总下oracle数据库int、number和char、varchar、varchar2的区别1、oracle中int与number的区别oracle本来就没有int类型,为了与别的数据库兼容,新增了int类型作为number类型的子集。int类型只能存储整数;number可以存储浮点数,也可以存储整数;number(8,1)存储小数位为1位,总长度为8的浮点数,如果小数位数不足,则用0补全;number(8)存储总长度为8的整数;int相当于number(22),存储总长度为22的整数

2021-07-06 17:41:20 10341

原创 Oracle数据库审计启停规范

概述由于Oracle数据库开启和关闭审计需要重启数据库实例,所以DBA需要提前安排停机维护时间窗口,还要注意为与审计相关的表准备充足的表空间。1、数据库审计启停前的检查1.1. 检查审计功能是否启动SQL> show parameter audit;1.2. 修改审计表,以及索引的表空间sql>alter table aud$ move tablespace Tablespacename;sql>alter index I_aud1 rebuild online tabl

2021-07-06 17:32:45 315

原创 Oracle数据库表碎片整理规范

概述DBA一般都需要定期去对Oracle表碎片做整理,这里简单整理表碎片整理流程如下:1、定位存在碎片的对象使用如下脚本,检查需要进行碎片整理的对象:--all tables(partition_tables + non_partition_tables )select a.owner, a.table_name, a.num_rows, a.avg_row_len, round(a.avg_row_len * a.num_rows / 10

2021-07-06 17:11:40 1713

原创 Oracle的计划窗口和自动任务汇总

概述Oracle数据库自己会例行做一些定时任务,比如会自动进行统计信息收集等作业任务。如果统计信息收集的时间正好赶上业务的高峰期,那就有可能由此引发一系列性能故障。那么,我们该如何查看这些数据库自动去做的任务执行计划和执行情况呢?1.计划窗口调整1.1、查询窗口定义通过查询dba_scheduler_windows,可以看到有关窗口的定义详情。col window_name for a30col REPEAT_INTERVAL for a60set lines 1000select win

2021-07-06 17:07:51 1114

原创 Oracle 11g 数据库安装后参数设置规范

概述在 Oracle 11g 安装并建库后,需要进行一些调整,使数据库能够稳定、高效地运行。除 了对数据库使用手工内存管理之外,还需要进行如下的调整。一、建库参数设置1、进程及会话数(默认150)参考:sessions = 1.1 * processes + 5--查看进程及会话数show parameter process;show parameter sessions;--修改进程及会话数alter system set processes=1200 scope=spfile; al

2021-07-03 16:28:05 1221

原创 Oracle数据库索引创建及索引重建变更规范

概述作为DBA,针对数据库索引创建及重建需要了解一下索引创建的原则及标准,判断是否需要停止应用以及检查创建索引的表大小,选择合适的创建方式。一、索引创建前的检查1、检查表段大小select segment_name, bytes/1024/1024 MB from user_segments where segment_name='<表名>';2、检查表列不同值分布情况select a.table_name, a.column_name, a.num_

2021-07-03 16:06:21 1336 1

原创 ORACLE数据库DBMS_ROWID包详解

概述DBMS_ROWID包允许使用PL/SQL程序或SQL语句创建rowids和获取rowid的信息。例如我们可以通过其找到数据对象编号,数据文件编号,包含数据行的数据块编号及数据块中的数据行。该包从Oracle 8.X开始可用。这个包在11gR2中有11个函数或存储…1. 根据给定参数返回一个rowid--根据给定参数返回一个rowid FUNCTION rowid_create(rowid_type IN NUMBER,--rowid类型,0:restricted,1:extended

2021-07-03 15:44:36 1042 1

原创 Oracle数据库UNDO段头块格式深度解析

概述今天主要分享一下之前所做的一些Oracle数据库UNDO段头块格式深度解析过程,仅供参考。环境准备--查找undo回滚段select * from v$rollname;--dump undo segmentALTER SYSTEM DUMP UNDO HEADER '_SYSSMU8_1131636851$';--查看DUMP文件位置:select * from v$diag_info WHERE name='Default Trace File';分析UDNO段头块的日志接下来

2021-07-03 15:34:52 713 1

原创 NGINX DNS解析漏洞(CVE-2021-23017)

一、漏洞情况说明:Nginx DNS解析漏洞(CVE-2021-23017):在处理DNS响应时,ngx_resolver_copy()中的一个off-by-one错误将允许网络攻击者在堆分配的缓冲区中写入超出边界的点字符(‘.’, 0x2E)。配置解析程序原语时,响应nginx服务器DNS请求的DNS响应可能会触发该漏洞。精心构造的数据包可以通过使用0x2E覆盖下一个堆块元数据的最低有效字节,此时,能够向nginx服务器提供DNS响应的网络攻击者可以实现拒绝服务攻击或远程代码执行攻击。由于ngin

2021-07-02 08:32:06 13945 2

原创 基于centos7部署FTP服务及通过PAM认证实现虚拟用户登录

一、概述1、概述FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。用于Internet上的控制文件的双向传输。同时,它也是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种协议以传输文件。一般在各种Linux的发行版中,默认带有的ftp软件是vsftp。vsftpd(very secure FTP daemon)是 UNIX 操作系统中的一个开源的、免费的 FTP 服务软件。它具有

2021-06-26 22:26:15 854 2

原创 基于centos系统部署haproxy+MySQL PXC集群

一、PXC 介绍1、基于Galere协议的高可用方案:pxcGalera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据一致性。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster(简称PXC),目前PXC用的会比较多一些。mariadb的集群原理跟PXC一样,maridb-cluster其实就是PXC,两者原理是一样的。2、PXC 简介pxc是一套

2021-06-21 22:36:46 395

原创 集团运维体系规划及设计

运维的本质——可视化

2021-06-21 22:11:12 1073 1

原创 实用脚本:一键部署redis及安全配置

概述简单分享一个部署redis脚本,仅供参考。实用脚本#!/bin/bash################################## copyright by hwb# DATE:2020-05-06###################################redisREDIS_PATH=/usr/localREDIS_PORT=16379REDIS_PWD=xxx234#调用函数库[ -f /etc/init.d/functions ] &

2021-06-19 16:10:32 161

原创 实用脚本:一键部署tomcat8.5

概述简单分享一个一键部署tomcat脚本,仅供参考。实用脚本#!/bin/bash################################## copyright by hwb# DATE:2020-05-06##################################指定tomcat路径、端口和密码TOMCAT_PATH=/homeTOMCAT_PORT=(7001 8001 9001)#调用函数库[ -f /etc/init.d/functions ] &a

2021-06-19 16:06:10 246

原创 PG源码编译安装之小版本升级(12.2 升级到12.7)

一、概述由于PostgreSQL 输入验证错误漏洞(CVE-2021-32027 )问题,需升级pg版本到12.7版本。二、环境准备1、安装pg12.2之前是用脚本自动安装pg12.2版本,可以看到是用源码编译安装的方式:#!/bin/bash################################## copyright by hwb# DATE:2020-05-06###################################postgresqlPG_USER

2021-05-19 13:40:53 887

原创 PostgreSQL 输入验证错误漏洞(CVE-2021-32027 )

一、 漏洞情况说明:PostgreSQL 输入验证错误漏洞(CVE-2021-32027 )The security team typically does not test unsupported versions, butthis problem is quite old. While modifying certain SQL array values,missing bounds checks let authenticated database users write arbit

2021-05-19 09:10:21 1974

原创 基于centos7系统自动编译安装nginx服务

概述本来没想过写一个自动部署nginx服务脚本,主要很多模块要考虑,不好做一些标准的内容,但是开发有需求,那就顺便写一下好了…这里顺便集成了nginx优化参数的一些内容,仅供参考。常用模块这里集成的一些模块如下:#常用module#ngx_http_core_module:核心模块;内置模块。#ngx_http_upstream_module:“upstream”模块,内置模块,核心模块;用于请求的“负载均衡”。#ngx_http_proxy_module:“请求代理”模块,核心模块;将请求

2021-05-06 14:42:50 245

原创 MySQL 8.0.19 instant add column,亿级数据秒速增加字段

一、MySQL DDL 的方法MySQL 在大型表上的 DDL 会带来耗时较久、负载较高、额外空间占用、MDL、主从同步延时等情况。需要特别引起重视,而MySQL 的 DDL 有很多种方法。MySQL 本身自带三种方法,分别是:copy、inplace、instant。copy 算法为最古老的算法,在 MySQL 5.5 及以下为默认算法。从 MySQL 5.6 开始,引入了 inplace 算法并且默认使用。inplace 算法还包含两种类型:rebuild-table 和 not-rebuil

2021-04-21 20:23:04 2162

原创 基于MySQL8.0存储过程实现myawr平台的top sql功能

概述众所周知,MySQL数据库中的performance_schema的事件统计表中的统计数据计算的是累计值,如果想要计算某段时间的TOP SQL是不行的,这里考虑用函数定期取值存进中间表定期将累计值的结果存入A表,按sql_id分组查A表,筛选最后执行时间,然后直接最大值减最小值来实现需求了。以下针对MySQL数据库8.0版本。1、创建中间表-- 报错记录error_logCREATE TABLE sys.error_log ( ERROR varchar(128) NOT NULL,

2021-04-20 17:59:10 250

原创 基于rsync实现fastdfs文件存储数据异地备份

概述本来想用压缩后传输的逻辑,后来觉得数据量有点大,所以就用rsync每次传差异的值就可以了。这里统一备份到集中备份服务器上。1、服务器初始化(自动部署rsync)这里基于蓝鲸来做服务器初始化。2、环境准备2.1、在fastdfs服务器部署rsync服务后配置fastdfs数据存储路径2.2、在集中备份服务器配置rsync密码设置权限为600。3、rsync异地备份脚本(/data/scripts/fastdfs/rsync_fastdfs.sh)同时设置定时任务:00 23 *

2021-04-20 17:28:43 1057

原创 基于perf top分析mysql数据库性能消耗在哪个函数

概述perf 是一个调查 Linux 中各种性能问题的有力工具,perf中包含了:perf-stat (perf stat), perf-top (perf top), perf-record (perf record), perf-list (perf list),而perf top主要用于实时分析各个函数在某个性能事件上的热度,能够快速的定位热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。默认的性能事件为cpu cycles。1、perf top常用交互命令:h:显示帮助

2021-04-20 17:10:02 1002

原创 如何快速有效的学习Bash和Python编程

概述总有一些朋友问如何学习bash和python方面的内容,这里简单放一些链接供参考。本文是从运维的角度总结和撰写,主要是想让后来者少走弯路、节约时间,而且更重要恰好就是运维不仅要懂运维,一定要懂点开发。一、bash编程通常学习Bash编程是为了满足工作的需要,也可能是兴趣使然。Bash通常是绝大部分GNU/Linux的默认shell,通过Bash脚本可以实现Linux下大部分的日常运维管理工作,包括系统配置、服务管理、计划任务、文件管理、数据处理等几乎全部操作。Bash的优势是用户平时就直接

2021-04-20 15:43:09 162

原创 详解MySQL数据库原生的数据复制方式:异步复制、半同步复制与全同步复制

一、MYSQL复制架构衍生史在2000年,MySQL 3.23.15版本引入了Replication。Replication作为一种准实时同步方式,得到广泛应用。这个时候的Replicaton的实现涉及到两个线程,一个在Master,一个在Slave。Slave的I/O和SQL功能是作为一个线程,从Master获取到event后直接apply,没有relay log。这种方式使得读取event的速度会被Slave replay速度拖慢,当主备存在较大延迟时候,会导致大量binary log没有备份到Sla

2021-04-20 14:13:36 1069

原创 超详细的MySQL数据库事件--定时任务总结

概述之前头条由于没有分类了,不做维护了,所以会把一些偏汇总的文章迁移到CSDN上。这里也简单总结一下mysql如何用事件来实现定时任务。一、事件概述在MySQL 5.1中新增了一个特色功能事件调度器(Event Scheduler),简称事件。事件(event)是MySQL在相应的时刻调用的过程式数据库对象。一个事件可调用一次,也可周期性的启动,它由一个特定的线程来管理的,也就是所谓的“事件调度器”。事件和触发器类似,都是在某些事情发生的时候启动。当数据库上启动一条语句的时候,触发器就启动了,而

2021-04-18 21:46:10 4251 1

原创 Oracle、MySQL、SqlServer、PG数据库merge into语法实现总结

概述多表关联查询的时候会用到临时表插入数据,然后再用select查行查询,在往临时表里插入数据的时候,我们经常会用到判断如果临时表里有了这部分数据我们就要更新数据,如果临时表里没有这部分数据我们就要插入,这个时候可以怎么去实现呢?下面介绍各类型数据库实现的大致方式。一、存储过程实现各类型数据库都可以通过存储过程实现,因为是共性问题,所以就放前面了,这里以mysql数据库的存储过程为例。1、环境准备--建表create table t1(id bigint(10),name varcha

2021-04-18 21:34:47 5900

原创 基于MySQL5.7存储过程实现myawr平台的top sql功能

概述某DBA大师曾说过,一个DBA要像了解自己的老婆一样了解自己管理的数据库,个人认为包含了两个方面的了解:1、在稳定性层面来说,更多的是关注高可用、读写分离、负载均衡,灾备管理等等high level层面的措施(就好比要保证生活的稳定性)2、在实例级别的来说,需要关注内存、IO、网络,热点表,热点索引,top sql,死锁,阻塞,历史上执行异常的SQL(好比生活品质细节)一、MySQL数据库相关配置my.cnf参考如下配置:performance_schema_max_digest_len

2021-04-18 15:01:26 289 2

空空如也

空空如也

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

TA关注的人

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