自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 kubernetes部署

Kubernetes集群部署

2022-08-14 16:29:21 1390 1

原创 PG用户default privileges授权不生效?

PG数据库的数据库用户授权相较MySQL是有所不同的。MySQL通过grant对整个schema的表对象授权select权限,被授权账号将会拥有该schema下的所有表对象以及未来创建的表对象的select权限。PostgreSQL数据库通过grant对整个schema的表对象授权select后,被授权账号默认只拥有该schema下当前所有表对象的select权限,不包含该schema下未来创建的表对象的权限。如果需要数据库用户对该schema下未来创建的表对象继承select权限,需要通过alter

2022-04-24 11:35:32 2386 2

原创 MySQL 异步复制源自动故障转移

1 异步复制源架构1.1基于主从复制的异步复制源从MySQL 8.0.22开始支持异步连接故障转移机制,我们可以在一套主从复制架构的基础上,创建一个异步复制连接的Replica副本,当主从复制Source发生意外宕机,业务提升Replica为新的Source对外进行服务,异步连接Replica可自动检测主从架构源端连接异常,并重新指向新的Source进行数据复制。架构图与流程展示:Source 、Replica为正常的主从复制架构,Async Replica为通过异步连接的复制副本当主从复制架

2022-03-13 20:42:21 1326 2

原创 PG逻辑复制介绍

在PostgreSQL 10 之前的流复制都是基于wal日志进行的物理复制,PostgreSQL 10版本中新增了一个逻辑复制的特性,逻辑复制是基于逻辑解析进行复制。它使用类似消息队列的发布者、订阅者的模型,利用复制槽的技术,发布者将wal日志解析成一定格式的数据流,订阅者对解析后的wal日志数据流进行回放应用,从而实现数据的同步。但是需要注意的是,PG的逻辑复制不是“SQL”复制,而是复制SQL操作的结果。一、逻辑复制概念逻辑复制的适用场景将多个数据库的数据合并到一个数据仓库的数据库中,用于数据仓

2022-01-19 12:06:58 2261

原创 SQL Server表空间碎片化回收

1 锁片化的产生1.1 产生碎片化的原因1、在B-tree索引中,表数据按照聚集索引的排序进行物理存储,若聚集索引离散化比较严重,那么可能会出现较为严重的碎片化问题;2、随着业务的DML操作,会伴随着数据页分裂的情况,这种情况下也会导致表空间碎片化问题;3、大表通过delete清理无效历史数据,delete产生碎片化空间;1.2 碎片化的影响表空间碎片化越严重越容易影响对该表的查询效率,这是因为当表碎片化比较严重时,数据库根据执行计划扫描满足需求的数据页会扫描较多“无效页面”,导致查询操作需要更

2022-01-19 12:02:35 2131 2

原创 SQL Server 事物日志空间收缩

数据库存储空间使用率是我们运维中需要必不可少的一个资源监控点,甚至说它的监控要比CPU、内存、IO使用率还要重要。当SQL Server实例磁盘使用率达到高水位时,我们首先需要判断究竟是哪部分空间的空间占用最大,然后再进行对应的措施考虑是否可以释放空闲空间,本章考虑的是当SQL Server事务日志空间使用率较高时,我们应该如何排查定位以及处理。1 定位空间瓶颈点1.1 OS层面操作系统层面,可以直接查各个磁盘目录文件大小定位磁盘空间消耗最大数据库文件。1.2 数据库层面通过数据库查询系统表定位数

2022-01-19 12:00:37 2094

原创 PostgreSQL之vacuum学习

文章目录一、vacuum的背景1.1 常见数据库MVCC实现对比二、vacuum工作机制2.1 vacuum2.2 autovacuum我们常用的关系型数据库有MySQL、Oracle、SQL Server、PostgreSQL等…但是vacuum的概念只有PG数据库有,而且运维过PG数据库的工程师都应该对它很熟悉,vacuum是PG数据库非常关键的一个操作。那么PG数据库的vacuum是用来干什么的?为什么会有vacuum?一、vacuum的背景1.1 常见数据库MVCC实现对比在了解vacuum

2021-11-01 21:51:55 5678

原创 PG复制状态监控

文章目录发布端pg_replication_slotspg_stat_replication订阅端pg_subscription_relpg_stat_subscriptionpg_stat_wal_receiver发布端pg_replication_slots展示当前数据库已创建的逻辑/物理复制槽信息。postgres=# select * from pg_replication_slots ;-[ RECORD 1 ]-------+----------slot_name

2021-11-01 21:48:50 1962

原创 PG 逻辑复制DDL同步

文章目录一、逻辑复制+DDL同步部署1.1 必要环境准备1.2 源端逻辑复制发布1.2 目标端逻辑复制订阅1.3 pgl_ddl_deploy 插件部署使用二、功能验证PG数据库逻辑复制比较大的一个弊端就是它自身无法满足同步对象DDL操作的同步,如果单纯依赖原生的逻辑复制架构,逻辑复制表对象表结构变更操作的整套维护操作是及其复杂、而且容易遗漏的。目前比较常见的解决方案是利用触发器抓取主库相关表对象的DDL变更,然后连接逻辑复制订阅端进行同步应用,本文主要讲解一个可直接部署使用的逻辑复制DDL同步插件,简化

2021-10-27 18:05:49 1474

原创 MongoDB连接相关报错

文章目录一、maxIncomingConnections1、参数含义2、参数达到上限对应报错二、maxSessions1、参数含义2、参数达到上限对应报错一、maxIncomingConnections1、参数含义mongos或mongod接收的最大并发连接数,默认为65536,当该参数设置值操作操作系统最大连接数限制时,取两者之间最小值作为上限。一般情况下,该参数值的设置需要大于客户端创建连接数与应用池最大连接数,避免客户端连接报错。对于mongos服务来讲,合理设置该参数也可以避免单各shard

2021-10-12 18:02:54 2430

原创 PG数据库wal日志空间异常

文章目录问题描述处理思路处理过程问题描述PG数据库实例磁盘空间使用率高达97%,其中wal空间使用量占用32G,相对比较异常。处理思路wal日志是PG数据库的事务预写日志,对于数据库的一个变更操作,数据库流程大概如下:● 客户端执行DML操作进行数据变更● 将相关的变更数据页写入wal buffer,对应的数据更新写到内存中的数据页(脏页)● 事务commit时,wal buffer进行刷盘,写入到wal log,该步骤已经保证了数据不会丢失● 周期性checkpoint出发将内存中的脏页

2021-09-26 14:02:14 1862

原创 MySQL一些参数设置不当引发的血案

文章目录slave_rows_search_algorithmsmax_binlog_cache_size问题描述场景复现参数解释slave_rows_search_algorithmsslave_rows_search_algorithms 参数主要由 index_scan 、 table_scan 、 hash_scan 组成,他们决定了行模式复制下,slave如何对binlog日志以及数据库记录进行扫描匹配。index_scan : 当表存在索引(主键索引、唯一索引、普通二级索引)时,尽可能通

2021-07-23 10:25:15 535 1

原创 performance_schema之锁等待问题排

一、performance_schema简介performance_schema 可监控MySQL数据库Server、Engine层的资源消耗、资源等待信息,并根据多个维度进行一定的分组聚合,方便我们用于资源瓶颈分析。开启该功能后,这些监控采集数据使用performance_shema引擎的形式存储在数据库内存中,对数据库本身也必然有一定的资源消耗。1.1 开启PS的三个关键performance_schema参数:在MySQL 5.7中该参数默认关系,需要手动开启该参数并重启数据库实例生效,M

2021-07-21 09:40:07 1420 1

原创 SQL Server慢SQL排查指南

文章目录一、系统表详解1.1 dm_exec_query_stats1.2 dm_exec_sql_text1.3 dm_exec_requests二、问SQL排查常用语句对于SQL Server的慢SQL信息排查,我们可以利用一些系统自带的统计信息表来帮助我们进行问题SQL定位。一、系统表详解1.1 dm_exec_query_stats该表记录了SQL Server中相关的执行计划的统计信息,从该表中我们可以从不同的维度分析是否存在一些资源消耗较大的SQL。重点关注字段及其含义:sql_h

2021-07-20 22:13:30 3229 1

原创 MySQL主从延迟问题排查

通常情况下我们的业务都是读多写少型的业务模式,数据库层面针对该模式下的优化,一般建议使用MySQL一主多从的读写分离架构。所有的变更操作路由到master实例,所有的非强一致性读可路由到多台slave实例上,当业务量上涨我们可以通过扩展slave实例的个数来横向的扩展业务读能力。使用读写分离架构,从业务层面来看,我们往往比较关注从slave实例读取数据的一致性,业务是否可以接受读取到落后的数据,可接受落后数据的最大时延是多少?从数据库的角度来看,未避免主从之间复制出现较大延迟,我们也需要从架构的部署、数据

2021-07-19 18:14:41 1463 6

原创 Linux性能分析利器sar

文章目录一、sar常用性能分析场景1.1 CPU资源分析1.2 磁盘资源1.3 内存信息分析1.4 网络二、sar周期统计记录一、sar常用性能分析场景1.1 CPU资源分析1、CPU使用率分析-- 查看所有全局的CPU使用信息, ALL表示输出更详细指标# sar -u ALL 1 3Linux 3.10.0-1127.el7.x86_64 (mdw) 2021年07月13日 _x86_64_ (4 CPU)10时41分21秒 CPU %usr %nice

2021-07-13 22:09:57 858 1

原创 tcpdump使用介绍

文章目录基本语法tcpdum常用参数函数输出详解tcpdump是一款常用的网络抓包工具,利用tcpdump工具我们可以根据一些条件过滤,只抓取我们关注的数据包信息。基本语法tcpdump [option] [proto] [dir] [type] [not|or|and] ...- option : 可选参数 [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secre

2021-07-12 10:03:33 329 1

原创 SQL Server如何实现定时备份作业

文章目录在生产环境中,运维同学总会说数据库的备份是重中之重,数据库备份为什么会这么重要呢?数据库备份又可以为我们来做哪些?1、数据库备份的作用开发/运维同学数据库误操作、硬件故障导致的数据丢失,表损坏等情况,数据库备份是我们的最后一道保护伞按照备份集、按时间点进行数据恢复用于业务测试若数据库为完整/大日志容量恢复模式,周期性的事物日志备份可有效对事物日志文件进行截断来达到空间复用,避免事物日志文件耗尽磁盘空间2、SQL Server如何进行周期性备份任务1)【管理】 -> 【维护计划

2021-07-09 11:33:17 4160

原创 SQL Server备份恢复

文章目录一、备份1.1 完整备份1.2 差异备份1.3 事务日志备份1.4 文件和文件组备份1.5 关于备份的关注点1.6 三种备份方式对比二、恢复2.1 恢复的3种方式2.2 还原数据库中重点关注2.3 数据恢复一、备份1.1 完整备份1、备份的特点完整数据库备份表示备份完成时的整个数据库的数据。备份耗时比较久,备份数据集比较大备份期间会有一定的IO资源消耗备份期间,数据库的事务日志不能截断。若数据库变更频繁,很容易导致日志空间不断上涨完整备份的数据是一份完整的数据库,恢复不需要任何依赖

2021-07-08 13:47:52 3267 1

原创 SQL Server事物日志

文章目录一、事物日志作用二、事务日志原理三、事物日志管理3.1 事物日志监控3.2 事物日志收缩一、事物日志作用每个 SQL Server 数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。事物日志的作用主要如下:WAL事务预提交,减少了脏页刷盘的IO消耗,极大的提高了数据库性能崩溃恢复,当数据库发生意外宕机,数据库启动时会进行崩溃恢复的流程,会先读取事务日志进行前滚,将数据恢复到崩溃前的状态;然后进行回滚操作,对事务日志中未提交的事务进行rollback,以此保证数据库中数据

2021-07-07 10:54:48 2785 3

原创 mtools工具介绍使用(一)

文章目录一、mtools工具安装二、mloginfo 日志统计工具三、mlogfilter 日志过滤工具一、mtools工具安装mtools工具安装包下载链接,可获取最新版本安装包进行下载:https://github.com/rueckstiess/mtools/tags1、python3环境部署,CentOS 7环境下默认的python版本为2.7,mtools工具需要依赖python3的环境# yum install python3# python3 --version2、安装mto

2021-07-01 21:56:40 12686 3

原创 tempdb空间暴涨问题

文章目录一、tempdb数据库介绍1.1 基本概念1.2 限制二、如何定位tempdb空间暴涨2.1 tempdb库基本信息查询2.2 tempdb空间使用监控三、如何处理tempdb暴涨一、tempdb数据库介绍1.1 基本概念tempdb数据库是一个全局资源,可供连接到SQL Server数据库的所有用户使用,主要用于以下几方面:显式创建的临时用户对象比如全局或者本地的临时表/索引、临时存储过程、表变量、表值函数中返回的表或游标。数据库引擎创建的内部对象spool、游标、临时的大对

2021-06-30 22:19:06 2598 2

原创 MySQL大表DDL方式对比

文章目录一、原生DDL、Online DDL1.1 Online ddl操作原理1.2 DDL操作的两个参数1.3 Online DDL 操作空间存储的要求二、pt-online-schema-change2.1 pt-osc的大致流程:2.2 pt-osc的特点2.3 使用pt-osc的约束2.4三、gh-ost3.1 gh-ost的三种模式3.2 gh-ost的特点3.3 使用gh-ost的约束线上环境的大表DDL操作一般都是比较让人头疼的,对于大表的DDL我们主要担心的风险点主要有:对当前数据库

2021-06-29 10:33:20 1121 4

原创 MySQL报错Too many connections

文章目录报错原因连接相关的参数问题处理某些情况下,我们客户端连接数据库会出现“ERROR 1040 (08004): Too many connections”的相关报错,具体报错可参考如下:[root@sdw2 ~]# mysql -usansi -pEnter password:ERROR 1040 (08004): Too many connections报错原因当客户端返回大量“ERROR 1040 (08004): Too many connections”时,说明此时客户端与数据库

2021-06-02 23:25:13 2473 2

原创 MySQL常见空间问题处理

文章目录一、MySQL空间使用概览二、常见空间相关问题2.1 常见空间异常暴涨案例3.2 空间打满所带来的风险三、空间问题对症下药3.1 数据空间3.2 日志空间3.3 临时表空间3.4 系统文件空间3.5 磁盘空间碎片化处理3.6 合理规划管理数据库空间使用一、MySQL空间使用概览1、MySQL数据库磁盘空间使用分布数据空间(.ibd、.frm)日志空间(binlog)系统文件空间(redo、undo、共享表空间文件)临时文件空间(磁盘临时表)二、常见空间相关问题2.1 常见空间异常暴

2021-05-25 21:26:05 240

原创 MySQL常见锁问题分析与处理

文章目录一、常见锁超时报错1.1 锁超时报错1.2 死锁报错二、锁超时1.1 行锁超时1.2 表锁超时三、死锁四、锁相关排查手段4.1 查看锁等待信息的相关SQL4.2 查看当前会话长时间未提交的事务的会话一、常见锁超时报错对于常见的锁报错,总体来讲可以分为两大类:锁超时报错、死锁报错。1.1 锁超时报错当DML/DDL等操作需要获取指定锁资源而无法获取时,首先会等待对应锁资源的释放,若等待时间超过锁超时相关参数仍未获取到指定资源,则自动回滚相关事务,并返回客户端以下报错: Lock wait t

2021-05-24 22:33:42 967

原创 MySQL字符集格式显示乱码问题

文章目录一、常见字符集格式乱码问题1.1 写入乱码1.2 查询乱码二、数据库文本写入/查询乱码原因2.1 常见字符集格式设置2.2 MySQL字符集转换过程2.3 字符集格式乱码原因三、如何解决处理字符集格式乱码在数据库操作中,偶尔我们可能会碰到一些乱码问题,有时候是在进行数据写入时出现的乱码无法正常写入数据,有时候是数据查询的时候发现看到很多乱码显示,这些其实都是字符集格式导致的问题。面对乱码的问题,我们该如何解决处理这个问题?一、常见字符集格式乱码问题1.1 写入乱码当进行数据写入时,字符集格

2021-05-22 11:07:53 742

原创 pg高可用之repmgr(三)

   repmgr也可以实现自动故障转移的failover功能,相对于手动switchover,其配置上也有一些不同。一、PostgreSQL共享库加载repmgr若想要实现高可用集群的自动故障转移,就必须使用repmgrd的守护程序,用来监控和记录复制集群信息、检测集群复制故障并决策选出最佳服务器并提升为主服务器,启动repmgrd的同时需要我们在PostgreSQL数据库中添加repmgr的共享库。$ vim /pg_data/pgsql11/data/postgresql.conf share

2021-05-20 11:57:07 1477 5

原创 pg高可用之repmgr(二)

   承接上篇文章的PostgrSQL + repmgr的搭建部署,本篇主要讲述PostgreSQL + repmgr高可用集群集群是如何实现switchover,以下是具体场景及其操作步骤。一、手动提升standby为primary该命令常见的使用场景为,若没有配置自动failover,primary节点宕机后,手动将指定standby节点并提升为primary主服务器节点。1、查看正常情况下集群状态[postgres@172-16-104-55 ~]$ repmgr -f /pg_data/pg

2021-05-19 22:37:52 1623 3

原创 pg高可用之repmgr(一)

文章目录一、repmgr初识1.1 repmgr基本概念1.2 PostgreSQL + repmgr 基本架构1.3 repmgr常用命令二 repmgr安装部署2.1 部署规划2.2 OS基本环境配置2.3 PostgreSQL数据库服务安装2.3 repmgr安装部署一、repmgr初识repmgr是一套开源的PostgreSQL集群管理工具,具有非常轻量级的使用特性。具体表现有以下特点:配置操作简单,可一键式完成相关部署操作;支持Auto Failover和Manual Switchov

2021-05-19 15:48:54 8011 5

原创 如何使用systemctl管理postgres数据库启停

   当我们使用源码编译安装PostgreSQL数据库后,通常情况下是没有直接可使用的systemctl管理,若需要使用systemctl进行服务的管理,可进行以下配置:环境:CentOS 7数据库:PostgreSQL 11systemctl管理脚本:/usr/lib/systemd/system/postgres11.servicesystemctl管理命令:systemctl {status|restart|start|stop|reload} postgres11具体操作如下:-- 进入

2021-05-14 16:22:32 2021 2

原创 MongoDB分片集群shard扩缩容

文章目录一、分片shard节点缩容二、分片shard节点扩容一、分片shard节点缩容Mongodb分片集群shard节点缩容相对是比较简单的,可以利用MongoDB自身的平衡器来将预下线中的分片中存储的数据进行转移,待预下线shard节点中无任何数据库,进行下线处理。所有的下线操作通过mongos进行管理实现。1、查看分片集群是否开启平衡器mongos> sh.getBalancerState()true2、发起删除分片节点命令,平衡器开始自动迁移数据-- 查看当前集群状态mong

2021-04-13 11:11:15 2334 4

原创 MongoDB分片集群搭建部署

文章目录一、环境规划二、安装部署2.1 安装包部署2.2 config serve 配置服务器部署2.3 shard 分片集群部署2.4 mongos 路由服务器部署三、分片集群功能测试MongoDB分片集群主要由以下组件组成:shard : 主要用来实际存储分片数据,每个分片都可以部署为一个副本集mongos : 主要用来做查询路由器,将客户端请求与与各分片之间数据进行协调路由config servers : 主要用来存储整个集群的元数据以及配置信息一、环境规划1、服务器部署规划

2021-04-07 15:46:21 489

原创 MySQL如何优雅的做大表删除?

文章目录一、Truncate操作1.1 MySQL truncate 都做了哪些操作?1.2 如何优化truncate操作带来的资源消耗?二、Delete操作2.1 MySQL delete 都做了哪些操作?2.2 如何优化delete操作?2.3 delete常见的两个场景2.3.1 delete where条件无有效索引过滤2.3.2 保留近期数据删除历史数据三、Truncate/Delete优劣势对比随着时间的推移或者业务量的增长,数据库空间使用率也不断的呈稳定上升状态,当数据库空间将要达到瓶颈的时

2021-03-28 17:03:36 6698 6

原创 数据迁移之MySQL

文章目录一、环境调研1.1 服务器信息1.2 数据库信息1.2.1 数据库基本信息1.2.2 数据库用户信息1.3 库表信息调研1.3.1 数据库对象统计概览1.3.2 数据库信息统计概览1.3.3 表信息统计概览1.3.4 忽略大小写敏感后是否存在重名表1.4 数据流拓扑二、方案制定2.1 各种方案特点对比2.2 数据库账号权限2.3 迁移步骤/进度记录2.4 数据迁移中的一些关注点三、迁移演练3.1 迁移演练记录3.2 迁移方案优化四、迁移割接/业务验证/回滚4.1 数据验证脚本当我们面对一个未知的数

2021-03-23 09:36:01 557 1

原创 MySQLSQL排序优化

文章目录一、MySQL排序原理1.1 MySQL如何处理排序操作?1.2 两种排序扫描算法:1.3 排序优化方法论二、排序优化手段2.1 利用索引优化order by limit2.2 只对驱动表进行排序2.3 临时表排序2.4 利用覆盖索引优化排序一、MySQL排序原理1.1 MySQL如何处理排序操作?1)当SQL中排序字段可有效利用索引时,无论是单表查询还是多表关联查询,通过索引的有序性,我们可以快速的对order by字段进行排序检索。2)当SQL中排序字段无法有效利用索引时:  a

2021-03-21 15:47:58 2398

原创 postgres用户权限管理

文章目录一、用户权限管理1.1 创建用户并授权1.2 postgres用户登录验证一、用户权限管理1.1 创建用户并授权postgre中主要有create role和create user两个语法来创建角色或者用户,两者从功能上来讲基本一致,create user是create role的变种,唯一的区别是 create user 中默认为login,而create role默认为nologin。1、create user语法CREATE USER name [ [ WITH ] option [

2021-03-20 17:01:44 1499

原创 MySQL到Clickhouse的实时复制

文章目录一、基本了解1.1 MySQL与CK的简单比较1.2 MaterializeMySQL二、MySQL->CK的实时复制实现1.1 环境准备1.2 基本功能测试三、后续一些疑问以及思考MySQL与Clickhouse是两个完全不一样的数据库,两者均有着自己的优缺点,两者所适合的业务场景也是不一样的,在实际业务中,我们需要根据数据库自身的特性优点选择合适它的业务场景。传统的MySQL数据库虽然很好的支持了OLTP的业务,但是对于OLAP这类需要对大批量数据进行统计分析的业务场景还是存在较大的一

2021-03-14 16:04:10 1831 1

原创 Chproxy+Clickhouse高可用集群部署监控

文章目录一、环境描述1.1 服务部署规划1.2 CK集群设置二、chproxy的使用2.1 chproxy的优势2.2 Clickhouse集群安装部署2.3 chproxy安装部署2.4 chproxy功能测试三、chproxy监控3.1 安装grafana3.2 安装prometheus3.3 配置chproxy监控一、环境描述1.1 服务部署规划服务器名称IP地址服务配置mdw172.16.104.11grafana、prometheus、cksdw1172.1

2021-03-06 19:19:32 7131 8

原创 Clickhouse常用系统表概览

文章目录一、常用系统表1.1 集群配置相关1、clusters2、macros3、disk4、storage_policies1.2 数据库运行情况概要信息1、metrics、events2、asynchronous_metrics3、metric_log1.3 库表统计信息1、databases2、tables3、columns4、parts5、parts_columns1.4 日志相关1、query_log2、query_thread_log3、trace_log一、常用系统表1.1 集群配置相关

2021-03-02 17:35:50 2285

空空如也

空空如也

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

TA关注的人

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