自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL存储过程与存储函数

1、创建存储过程存储过程就是一条或者多条 SQL 语句的集合,可以视为批文件。它可以定义批量插入的语句,也可以定义一个接收不同条件的 SQL。创建存储过程的语句为 “create procedure”,创建存储函数的语句为 “create function”。调用存储过程的语句为 “CALL”。调用存储函数的形式就像调用 MySQL 内部函数一样。DROP TABLE IF EXISTS t_student; CREATE TABLE t_student( id INT(11) PR

2022-04-19 20:26:42 1561

转载 MySQL中删除操作Delete、Truncate、Drop用法比较

1、执行速度比较Delete、Truncate、Drop关键字都可以删除数据。drop > truncate > delete2、原理方面2.1 deletedelete 属于数据库 DML 操作语言,只会删除数据表中的记录,会执行事务,执行的时候也会触发触发器。InnoDB 存储引擎中,执行 delete 操作只会给删除的记录打上删除标记,并不会真正删除数据。只是把删除的数据记录设置为不可见,也不会释放磁盘空间。如果插入新的数据可以覆盖该部分的空间。如果开启事务的话,执行 de

2022-04-18 15:43:05 1357

原创 MySQL中如何定位DDL被阻塞的问题

在生产环境中,执行了一个DDL,发现很久都没有执行完,是不是被阻塞了?要怎么解决?实际上,如何解决DDL阻塞的问题,是MySQL中一个共性且高频的问题。下面,就这个问题,给一个清晰明了、拿来即用的解决方案:怎么判断一个DDL是不是被阻塞了?当DDL被阻塞时,怎么找出阻塞它的会话?怎么判断一个DDL是不是被阻塞了?首先,看一个简单的Demo:session1> create table sbtest.t1(id int primary key,name varchar(10));Qu

2022-04-18 11:12:11 857

转载 Linux 基础之-高并发内核优化

文章目录前言一、 Iptables相关二、单进程最大打开文件数限制1.引入库三、内核TCP参数方面四、内核其他TCP参数说明五、IO事件分配机制前言众所周知在默认参数情况下Linux对高并发支持并不好,主要受限于单进程最大打开文件数限制、内核TCP参数方面和IO事件分配机制等。下面就从几方面来调整使Linux系统能够支持高并发环境。一、 Iptables相关如非必须,关掉或卸载iptables防火墙,并阻止kernel加载iptables模块。这些模块会影响并发性能。二、单进程最大打开文件数.

2021-08-11 11:24:09 248 1

转载 ThreadLocal

在阅读Handler源码时发现了这么一个东西,本想直混在其他博客中一笔带过,但仔细想了下这个东西还是蛮重要的,于是开了这篇博客。ThreadLocalthreadlocal使用方法很简单static final ThreadLocal<T> sThreadLocal = new ThreadLocal<T>();sThreadLocal.set()sThreadLocal.get()threadlocal而是一个线程内部的存储类,可以在指定线程内存储数据,数据存储以后,

2021-07-03 20:07:43 99

转载 Connection实例是线程安全的吗

关于JDBC中关于Connection的两个疑问:1.Connection实例是线程安全的吗?即一个connection实例,在多线程环境中是否可以确保数据操作是安全的?Java代码:private static Connection connection;上述代码,设计会不会有问题? 一个Connection实例,即对应底层一个TCP链接,有些开发者可能考虑到"性能",就将代码写成上述样式,最终一个application中所有的DB操作,使用一个connection.确实减少了与DB的TCP链

2021-07-03 19:49:14 392

原创 Java加载数据库连接驱动为什么要用Class.forName()方法?

Java加载数据库连接驱动为什么要用Class.forName()方法?答:实际上就是为了加载类时,调用静态初始化块中的注册函数。JDBC提供的DriverManager类用于跟踪所有可用的JDBC驱动,并在用户需要时选择合适的驱动提供给用户,但是其跟踪不是自动的,必须由可用的JDBC驱动的Driver类,自己在DriverManager上进行注册。但是这个注册过程一般是由Driver类加载的时候自动完成的Class.forName("com.mysql.cj.jdbc.Driver"); //加载

2021-06-13 21:00:37 1650 1

转载 Maven中pom.xml文件详解

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <!-- 父项目的坐标。如果项目中没有规定某个元素的值,那么父项目中的对

2021-06-13 15:30:30 214

原创 zabbix自动发现与自动注册

本博客是基于zabbix 4.0 版本的在企业中有成千上万台服务器,如果手动添加会非常耗时间,造成大量的人力成本的浪费。zabbix自动发现和自动注册就是为了解决批量监控服务器而设计的功能之一。自动发现:由服务端主动发起,zabbix server开启发现进程,定时扫面局域网中IP服务器、设备自动注册:由客户端主动发起,客户端必须安装并启动zabbix agent,否则无法自动注册添加至服务端的主机列表。对于使用SNMP的就要采用自动发现了。优缺点:自动发现:zabbix server主动发

2021-06-09 19:20:09 1014

原创 Zabbix Web页面登录忘记用户名和密码的解决办法

情况1:初学者在搭建Zabbix服务器后,使用浏览器登录Web页面进行初始化时,如下图所示:输入默认用户名"Admin"和默认密码"zabbix"后,可能会提示密码错误的情况。情况2:刚搭建了zabbix服务器,然后新增加了一个用户,并且把默认的Admin禁用了。然后这个监控页面一直没关,保持了10多天,今天不小心把浏览器关闭了,重新打开后,突然忘记了用户名,这下麻烦了。解决方案:1、进入zabbix服务器,连接到mysql数据库[root@localhost ~]# mysql -uroo

2021-06-09 18:18:44 4907 2

转载 K8S组件运行原理详解总结

一、看图说K8S先从一张大图来观看一下K8S是如何运作的,再具体去细化K8S的概念、组件以及网络模型。从上图,我们可以看到K8S组件和逻辑及其复杂,但是这并不可怕,我们从宏观上先了解K8S是怎么用的,再进行庖丁解牛。从上图我们可以看出:Kubernetes集群主要由Master和Node两类节点组成 Master的组件包括:apiserver、controller-manager、scheduler和etcd等几个组件,其中apiserver是整个集群的网关。 Node主要由kubele

2021-05-22 21:36:39 8592

原创 K8s的网络模型和网络策略

1、Kubernetes网络模型和CNI插件在Kubernetes中设计了一种网络模型,要求无论容器运行在集群中的哪个节点,所有容器都能通过一个扁平的网络平面进行通信,即在同一IP网络中。需要注意的是:在K8S集群中,IP地址分配是以Pod对象为单位,而非容器,同一Pod内的所有容器共享同一网络名称空间。1.1Docker网络模型了解Docker的友友们都应该清楚,Docker容器的原生网络模型主要有4种:Host(主机)、Container、Bridge(桥接)、none。host模式:容

2021-05-22 21:08:58 3512 13

原创 k8s安装部署以及部署过程中的那些坑!!!

此篇文章主要分享的是使用yum安装部署k8s的方式。有些小伙伴想使用kubeadm的方式安装部署,本人也亲自测试过,太麻烦了,后期的k8s配置先不说,但是各种k8s部署过程中所需要的镜像无法pull下来就够喝一壶的了,因为这些镜像大都在外网。有些文章分享的部署方法完全没有说明部署环境,也没有说明k8s的版本和相应的docker版本,完全属于耍流氓。因为k8s版本和docker版本是存在兼容问题的,不兼容的版本是无法让k8s成功运行的。下面我会和大家分享一个方法,而无需自己去关心自己下载的k8s软件包和doc

2021-05-22 15:12:34 2588 4

原创 Docker中CentOS 7版本如何启动sshd服务

当我们使用CentOS 7 版本的基础镜像开启一个容器,安装sshd服务后,却无法启动它。这时因为CentOS 7 版本的基础镜像中时没有"/etc/init.d/sshd"启动脚本的,从而也就无法初始化sshd服务,所以需要我们手动初始化sshd服务。1、启动一个docker容器[root@client ~] # docker container run -it --name=centos_v2 f4e8037197c8#f4e8037197c8 :是我pull下来的centos 7.5版本的基础

2021-04-29 21:24:42 1669

转载 redis-migrate-tool使用详解

前言redis-migrate-tool 是维品会开源的一款redis数据迁移工具,基于redis复制,快速,稳定,github地址为:https://github.com/vipshop/redis-migrate-tool快速。多线程。基于redis复制。实时迁移。迁移过程中,源集群不影响对外提供服务。异构迁移。支持Twemproxy集群,redis cluster集群,rdb文件 和 aof文件。过滤功能。当目标集群是Twemproxy,数据会跳过Twemproxy直接导入到后端

2021-04-28 09:53:23 1287

转载 Redis的持久化机制:RDB和AOF

什么是Redis持久化?Redis作为一个键值对内存数据库(NoSQL),数据都存储在内存当中,在处理客户端请求时,所有操作都在内存当中进行,如下所示:这样做有什么问题呢?其实,只要稍微有点计算机基础知识的人都知道,存储在内存当中的数据,只要服务器关机(各种原因引起的),内存中的数据就会消失了,不仅服务器关机会造成数据消失,Redis服务器守护进程退出,内存中的数据也一样会消失。对于只把Redis当缓存来用的项目来说,数据消失或许问题不大,重新从数据源把数据加载进来就可以了,但如果直接把用户提交

2021-04-25 10:16:52 107

转载 MongoDB中journal与oplog的区别

MongoDB journal 与 oplog,谁先写入?最近经常被人问到,本文主要科普一下 MongoDB 里 oplog 以及 journal 这两个概念。journaljournal 是 MongoDB 存储引擎层的概念,目前 MongoDB主要支持 mmapv1、wiredtiger、mongorocks 等存储引擎,都支持配置journal。MongoDB 所有的数据写入、读取最终都是调存储引擎层的接口来存储、读取数据,journal 是存储引擎存储数据时的一种辅助机制。以wire

2021-04-13 18:26:20 270

原创 MongoDB中数据备份、恢复

备份恢复工具介绍mongoexport / mongoimport mongodump / mongorestore备份工具区别在哪里?mongoexport / mongoimport 导入/导出的是JSON格式或者CSV格式 mongodump / mongorestore 导入 / 导出的是BSON格式。 BSON:这种格式是专门为MongoDB而开发的,类似json的一种二进制格式,这种格式不一定比json...

2021-04-13 16:55:40 277

原创 MongoDB中oplog详解

oplog简介oplog 是 local 库下的一个固定集合(local.oplog.$main),Secondary 就是通过查看 Primary 的 oplog 这个集合来进行复制的。每个节点都有 oplog,记录着从主节点复制过来的信息,这样每个成员都可以作为同步源给其它节点。oplog的数据结构 { ts : ..., op: ..., ns: ..., o: ... o2: ... }上面就是一条 oplog 信息,复制机制就是通过这些信息来进行节点间的数据同步并维护数据一..

2021-04-13 10:59:37 2270

原创 MongoDB中balancer操作

本文基于MongoDB 3.2系列, 最新版本的MongoDB的balancer流程,应该会和3.2有不一致的地方前言MongoDB Balancer 是一个运行在 mongos 中的后台线程,该线程的主要作用就是监控 shard 上的 chunk 数量。如果发现某个 shard 上的 chunk 达到一定的数量,则 balancer 会自动的将部分 chunk 块迁移到其它 shard中,保证所有的 shard 中拥有的 chunk 块数量基本一致。Balancer 的整个运行过程对用户和.

2021-04-12 20:27:52 1340

原创 MongoDB分片架构配置

前言我们知道 MongoDB 复制集架构只有主节点能读写,从节点只能读。如果主节点写入的压力较大,那么还是会有性能瓶颈。在Mongodb里面存在另一种集群,就是分片技术,可以满足 MongoDB 数据量大量增长的需求。当 MongoDB 存储海量的数据时,一台机器可能不足以存储数据,也可能不足以提供可接受的读写吞吐量。这时,我们就可以通过在多台机器上分割数据,使得数据库系统能存储和处理更多的数据。下图展示是MongoDB的分片集群架构:上图中主要有如下所述三个主要组件:Shard:.

2021-04-12 15:51:43 367 2

原创 MongoDB中yaml模式配配置文件详解

mongodb3.x版本后就是要yaml语法格式的配置文件,下面是yaml配置文件格式如下:官方yaml配置文件选项参考:https://docs.mongodb.org/manual/ ... #configuration-file切记:yaml格式的配置文件中只能使用空格,不支持tab键,一旦使用tab键,启动mongod服务是就会报错!!!--系统日志相关的配置systemLog: destination: file --指定一个文件

2021-04-11 20:37:14 5918

原创 MySQL在Linux操作系统层面的优化

理论部分Swap调整swap是干嘛的?在 Linux 操作系统下,Swap 的作用类似 Windows 下的"虚拟内存"。当物理内存不足时,拿出部分硬盘空间当作内存使用,此部分硬盘空间称之为 Swap,从而解决内存空间不足的情况。Swap 意思是交换,顾名思义,当某进程向 OS 请求内存时,OS 若是发现内存不足,就会把内存中暂时不用的数据交换出去,放在 Swap 中,这个过程称之为 "Swap out";当某个进程又需要这些数据且 OS 发现还有空闲的物理内存空间时,又会把 Swap 中的

2021-04-07 10:35:56 271

原创 MySQL中MHA配合Atlas实现读写分离

前言Atlas 是由 Qihoo 360,Web 平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。为什么要使用Atlas?使用 MHA 高可用服务时,至少需要3台服务器,若是主服务器一直没有出现故障,那么其余两台服务器则会一直处于空闲状态(除了同步主库的数据),从而导致硬件利用率的下降。所以为了把剩余的两台服务器的资源充分的利用起来,可以让主库用于给用户提供写操作,用户的读操作则由两

2021-04-06 13:53:01 292

转载 MySQL中新特性:MGR

前言传统的 MySQL 主从复制架构是 MySQL 保持数据一致性的最基本架构,如下图1所示,一主一从架构,从库给主库发起主库发起同步数据的请求后,主库就会通过 dump 线程把 binlog 日志数据推送给从库,从库的 I/O 线程把接收到的数据更新到 relaylog,之后从库的 SQL 线程把 relaylog 中的日志信息进行回放,直到主库与从库的数据完全一致,从而达到主从同步。 ...

2021-04-04 19:27:54 495

转载 MHA清理relaylog (purge_relay_logs)

MySQL数据库主从复制在缺省情况下从库的relay logs会在SQL线程执行完毕后被自动删除,但是对于MHA场景下,对于某些滞后从库的恢复依赖于其他从库的relaylog,因此采取禁用自动删除功能以及定期清理的办法。对于清理过多过大的relay log需要注意引起的复制延迟资源开销等。MHA可通过purge_relay_logs脚本及配合cron job来完成此项任务,具体描述如下。1、purge_relay_logs的功能1、为relay日志创建硬链接(最小化批量删除大文件导致的性...

2021-04-02 17:09:57 893

原创 MySQL高可用:MHA

简介MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,在MySQL故障切换过程中,MHA能够做到0~30秒之内完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到正真意义上的高可用。...

2021-04-02 16:53:48 215 1

原创 MySQL高级主从复制

延时从库延时从库即从库延迟一定的时间再对主库中新产生的数据进行同步。常规的主从复制,由于主库发生数据变动时,从库会很快对主库新产生的数据进行同步。例如:主库误删除一张表,从库为了同步数据,也会在从库中执行相应的操作。所以常规的主从复制只能很好的避免数据的物理损坏,但是无法避免数据库中的数据逻辑损坏主从复制的主要作用就是备份数据、恢复数据,所以就需要延时从库来尽可能地避免数据库中数据地逻辑损坏。延时从库的配置延时从库主要是通过 SQL线程 延时回放 relaylog 来实现的。主.

2021-03-31 14:32:48 164

转载 MySQL中新特性:MTS

一、MTS:多线程复制MTS简介在MySQL 5.6版本之前,Slave服务器上有两个线程I/O线程和SQL Thread线程。I/O线程负责接收二进制日志(Binary Log,更准确的说是二进制日志的event),SQL线程进行回放二进制日志。如果在MySQL 5.6版本开启并行复制功能,那么SQL线程就变为了coordinator(协调者)线程:coordinator线程主要负责以前两部分的内容:若判断可以并行执行,那么选择worker线程执行事务的二进制日志。若判断

2021-03-30 12:20:12 426

原创 MySQL基础的主从复制

概念什么是MySQL的主从复制MySQL主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。MySQL默认采用异步复制方式,这样从节点就不用一直访问主服务器来更新自己的数据。数据的更新可以在远程连接上进行,从节点可以复制主节点中的所有数据库或者特定的数据库,或者特定的表。为什么需要主从复制在业务复杂的系统中,有这个一个情景,有一句SQL语句需要锁表,导致暂时不能使用读的服务,那么就很影响运行中的业务了。使用主从复制,让主库负责写,从库负责读,这样缓解主节点的压力,让业务正

2021-03-29 20:17:11 146 1

原创 MySQL的数据备份与恢复

概要MySQL中备份数据的工具有mysqldump (MDP) percona Xtrabackup (XBK) MySQL Enterprise Backup (MEB) mysqlbinlog其中MEB是MySQL官方的备份工具,是收费的。由于本身条件有限,没有使用过这款工具,故在这里就不做讲解。备份方式逻辑备份全量备份:使用 mysqldump 可以实现数据的全量备份,但是无法实现增量备份增量备份:依赖 binlog 可以实现增量备份 Tip:使用 bin..

2021-03-28 20:51:00 576

原创 MySQL中日志文件说明

错误日志错误日志(Error log)是MySQL中最常用的一种日志,主要记录MySQL服务启动和停止过程中的信息、服务在运行过程中发生的故障和情况等。在实际工作中,我们通过错误日志分析得到导致业务崩溃和其它故障的根本原因。查看错误日志的位置db01 [(none)]>select @@log_error;+---------------------+| @@log_error |+---------------------+| /tmp/mysqld3306.err |

2021-03-26 21:26:10 1011

原创 InnoDB存储引擎的核心参数

"双一"标准innodb_flush_log_at_commit参数innodb_flush_log_at_commit参数的作用是控制从 log buffer(如redo buffer、undo buffer) 往磁盘刷写数据的粗略。innodb_flush_log_at_commit参数有三个状态:为0时:log buffer 中的数据是按照每秒写入到 OS(操作系统缓存)中,然后再每秒刷新一次数据到磁盘中。每次事务的提交不会有任何影响,也就是此状态下 log buffer 的刷新操作和事务提交

2021-03-24 11:14:02 264

原创 InnoDB存储引擎核心特性:MVCC

MVCC概念多版本并发控制(Multiversion Concurrency Control)指的是一种提高并发性能的技术。最早的数据库系统,只有读读之间可以并发,读写、写读、写写都要被阻塞。引入MVCC之后,只有写写之间相互阻塞,其它三种操作都可以并行,这样就大幅提高InnoDB存储引擎的并发性能。在内部实现中,InnoDB存储引擎通过undo log保存每条数据的多个版本,并且能够找回数据历史版本提供给用户读,每个事务读到的数据版本可能是不一样的。在同一个事务中,用户只能看到该事务创建快照之前已经提

2021-03-23 09:46:11 288

原创 InnoDB存储引擎锁监控及处理

前言InnoDB存储引擎由于实现了行级锁定,虽然在锁定机制的实现方面所带来的性能损耗可能比表级锁定会要更高一些,但是在整体并发处理能力方面要远远由于MyISAM存储引擎的表级锁定。当系统的并发量较高的时候,InnoDB存储引擎的整体性能和MyISAM存储引擎相比就会有比较明显的优势了。但是,InnoDB存储引擎的行级锁定同样也有脆弱的一面,当我们使用不当的时候,可能会让InnoDB存储引擎的整体性能表现得不仅不能比MyISAM存储引擎高,甚至可能会更差。查看行级锁争用情况如果发现MySQL运行比较卡顿

2021-03-21 15:13:39 151

原创 InnoDB中锁的问题

首先,我们要明确的一个大前提是:MySQL中的锁是由具体的存储引擎实现的。所以像MyISAM存储引擎和InnoDB存储引擎的锁实现机制是有区别的。(MyISAM存储引擎只支持表级锁,InooDB存储引擎能够支持到行级锁)但是今天先放下MyISAM存储引擎不谈,主要来说说InnoDB存储引擎的行级。InnoDB存储引擎支持多粒度锁(multiple granularity locking),它允许行级锁与表级锁共存。行级锁(记录锁)优缺点优点:由于锁粒度小,争用率低,从而可以提高MySQL的并发新能

2021-03-21 14:22:02 520

原创 MySQL中“for update“、“lock in share mode“解析

前言共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能改。排它锁又称为写锁,简称X锁,顾名思义,排它锁就是不能与其它锁并存,如一个事务获取了一个数据行的排它锁,其它事务就不能再获得该行的其它锁,包括共享锁和排它锁,但是获取此数据行排它锁的事务可以对数据进行读取和修改。其中:排它锁(X):select xxx from xxx where xxx for update;共享锁(S):select xxx from xxx where x

2021-03-18 19:46:13 1723

原创 InnoDB的核心特性:事务

事务的定义事务:一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务一个事务由一个或多个DML语句共同组成事务只和DML语句有关,或者说DML语句才有事务tip:事务是MySQL等关系型数据库区别于NoSQL非关系型数据库的重要方面,是保证数据一致性的重要手段事务的ACID特性Atomicity:原子性Consistency:一致性Isolation:隔离性Durability:持久性...

2021-03-17 19:32:05 301

转载 使用fsck命令检查文件系统错误

FSCK 是一个很重要的 Linux/Unix 工具,它用于检测并修复文件系统中的错误。它类似于 Windows 操作系统中的 “chkdsk” 工具,但它是为 Linux、MacOS、FreeBSD 操作系统所准备的,FSCK 全称为 File System Consistency Check。在大多数时候,它在系统启动时运行,但是如果需要的话,它也能被超级用户手工启动。它可以进行三种模式的操作:查错并在发现错误时由用户决定如何处理查错并自动修复查错但在发现错误时只显示错误而不进行修复FSC

2021-03-15 19:47:29 2283

原创 MySQL的表空间问题

前言我们知道MySQL数据库中的数据信息是独立存储的,比如我在安装MySQL数据库时指定"/data/mysql/data"目录作为存储MySQL数据库数据信息的目录。通过添加一块新的磁盘A,然后将磁盘A挂载在"/data/mysql/data"目录下,这样MySQL数据库产生的所用数据都会保存在此磁盘中,从而方便数据的管理和迁移,但是扩容却很麻烦。因为随着数据越来越多,磁盘的空间就会被沾满,这样数据库也就无法再运行了;由于Linux中一个目录下只能挂载一块磁盘,若是磁盘没有分区,那么一块磁盘也只能挂

2021-03-15 19:19:41 254

空空如也

空空如也

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

TA关注的人

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