<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[pyf2533931995的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/pyf2533931995</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; pyf2533931995]]></copyright><item><title><![CDATA[MySQL-binlog2sql闪回工具介绍与回滚实战]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/145507381</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/145507381</guid><author>pyf2533931995</author><pubDate>Sat, 08 Feb 2025 08:50:28 +0800</pubDate><description><![CDATA[binlog2sql是一个MySQL binlog解析工具，通过不同的选项，可以得到原始sql、回滚sql和去除主键的插入sql。快速回滚主从切换后新master丢数据的修复使用要求：开启binlog、binlog记录格式设置为row[mysqld]#记录修改的每一行#记录完整的列信息 update记录更新前后所有字段的值 delete会记录删除前所有字段的值 insert会记录插入后所有字段的值。]]></description><category></category></item><item><title><![CDATA[MySQL物理备份与恢复工具XtraBackup使用总结]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/140272531</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/140272531</guid><author>pyf2533931995</author><pubDate>Mon, 08 Jul 2024 16:34:54 +0800</pubDate><description><![CDATA[环境：96核 754G内存 30T磁盘（生产环境的物理机）]]></description><category></category></item><item><title><![CDATA[MySQL客户端与服务端建立连接抓包分析]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/139824172</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/139824172</guid><author>pyf2533931995</author><pubDate>Thu, 20 Jun 2024 10:14:03 +0800</pubDate><description><![CDATA[mysql采用的是挑战-响应方式来进行身份认证。由服务端生成加密用的盐给客户端，提高安全性名称类型长度描述Protocolint1个字节协议的版本号Versionstring不确定mysql的版本Thread IDint4个字节建立连接所分配的idSaltstring20个字节 8+12挑战字符串，相当于用于加密密码的盐，分为两部分，长度分别为8字节和12字节int2个字节服务器支持的功能，int为32位，1支持，0不支持，最多支持32种功能。]]></description><category></category></item><item><title><![CDATA[MySQL大表删除方案]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/139123922</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/139123922</guid><author>pyf2533931995</author><pubDate>Wed, 22 May 2024 16:53:18 +0800</pubDate><description><![CDATA[这是我亲身经历的一个教训，在下午5点多下班的时候去删除一个与业务无关的表，20多T，结果还是导致数据库阻塞了，后面的事务全都在等待，事务一直堆积导致数据库挂了。借助linux硬链接的机制，为表的数据文件创建一个硬链接，这样执行drop操作时，删除的就不是真实的数据文件，而是一个指针，能够极大的提高drop速度，降低影响其他事务执行的风险。第一点，因为buffer pool中存在最近修改的数据（称为脏页）还未刷新到磁盘中，如果需要删除表，那么则需要把这些脏页丢弃（都删除表了，那数据自然也不需要了）。]]></description><category></category></item><item><title><![CDATA[记录一次在springboot的yml中读取maven配置项的坑]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/139002362</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/139002362</guid><author>pyf2533931995</author><pubDate>Fri, 17 May 2024 13:39:52 +0800</pubDate><description><![CDATA[通过添加一个初始化器，在spring启动的过程中打印出环境信息。(具体springboot启动的细节可以参考黑马满一航老师的spring高级视频，b站上有，讲的很好。，怎么出现了一个https://spring.io/projects/spring-boot/springboot-liquibase这个不存在的链接？根据我的一个猜测，应该是Spring环境中默认内置了一个名为url的参数，值为。注意上面的密码是使用单引号括起来的，因为密码包含#号，会被yml当作注释。我的url明明写的不是这个东西啊。]]></description><category></category></item><item><title><![CDATA[Linux硬盘挂载操作记录]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/138314060</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/138314060</guid><author>pyf2533931995</author><pubDate>Mon, 29 Apr 2024 15:27:12 +0800</pubDate><description><![CDATA[文件系统就是将硬盘抽象为文件和文件夹的形式来管理数据，我们只需要创建文件和文件夹来使用存储空间，而不需要具体是怎么使用硬盘的。：添加硬盘或分区后，需要将其挂载到某个具体的目录下，这样这个目录下的文件数据就会被写入硬盘，硬盘才真正生效。拓展分区和逻辑分区是父子关系，拓展分区下包含多个逻辑分区，拓展分区不能挂载，逻辑分区可用于挂载。sdc中创建了两个分区sdc1和sdc2，每个分区占3G，还剩4G，可用于创建更多的分区。对于新添加的盘，可直接挂载到指定目录下，也可划分为多个分区挂载到不同目录下。]]></description><category></category></item><item><title><![CDATA[JDBC查询大数据时怎么防止内存溢出-流式查询]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/138215034</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/138215034</guid><author>pyf2533931995</author><pubDate>Fri, 26 Apr 2024 12:33:23 +0800</pubDate><description><![CDATA[在使用 JDBC 查询大数据时，由于 JDBC 默认将整个结果集加载到内存中，当查询结果集过大时，很容易导致 JVM 内存溢出的问题。解决办法通常是使用分页查询，但是分页查询越往后要遍历的行数越多，效率越低。除非能够添加索引条件，但这又提高了业务逻辑的复杂度。JDBC的流式查询就是在使用ResultSet对象获取查询结果集的时候，不是把结果集一次性全部加载到内存中，而是分批次读取数据。在jdbc客户端和mysql服务端建立tcp连接后，mysql以包的形式返回数据。]]></description><category></category></item><item><title><![CDATA[MySQL分布式事务xa的介绍与使用]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/138152525</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/138152525</guid><author>pyf2533931995</author><pubDate>Wed, 24 Apr 2024 10:55:12 +0800</pubDate><description><![CDATA[xa指的是分布式事务，传统的事务针对的是单机MySQL。在如今大数据时代下，往往需要多台MySQL组成一个集群存储数据。这种情况下，针对所有MySQL节点操作就无法保证所有MySQL的事务一致性，即只要一台MySQL上执行的事务回滚了，那么其他所有MySQL也要回滚。]]></description><category></category></item><item><title><![CDATA[MySQL存储过程的基本用法]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/138127387</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/138127387</guid><author>pyf2533931995</author><pubDate>Tue, 23 Apr 2024 15:21:00 +0800</pubDate><description><![CDATA[注：每次自己进行小测试时，需要往mysql中插入几十上百万的模拟数据，老是忘了存储过程、while循环怎么写，于是借助博客记录一下。虽然可以使用jdbc或者其他工具来批量插入，但架不住存储过程最直接、方便。”作为语句的分隔符，存储过程包含多个sql语句，所以会被解析为多个sql依次执行。因此必须改变分隔符，将创建存储过程的多个sql视作一个整体。DELIMITER：用于改变语句的分隔符。默认情况下，mysql会以分号“OUT：返回结果，后跟参数名、类型。IN：入参，后跟参数名、类型。]]></description><category></category></item><item><title><![CDATA[MySQL多版本并发控制mvcc原理浅析]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137950348</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137950348</guid><author>pyf2533931995</author><pubDate>Fri, 19 Apr 2024 09:36:05 +0800</pubDate><description><![CDATA[mvcc(Multi Version Concurrency Control)，多版本并发控制，是一种数据库的并发控制机制。它用于管理事务并发执行时对数据的访问和修改，保证在多个事务同时对数据库进行读写操作，不会出现数据不一致或丢失的情况。]]></description><category></category></item><item><title><![CDATA[MySQL函数now和sysdate使用时的注意事项]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137922912</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137922912</guid><author>pyf2533931995</author><pubDate>Thu, 18 Apr 2024 15:26:12 +0800</pubDate><description><![CDATA[mysql提供的函数now和sysdate都是用来获取当前的日期和时间。不同的是，now会在sql开始执行时就固定下来，而sysdate会在执行过程中计算。简单说，now是静态的，sysdate是动态的。]]></description><category></category></item><item><title><![CDATA[MySQL关于binlog简介]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137829389</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137829389</guid><author>pyf2533931995</author><pubDate>Tue, 16 Apr 2024 16:15:10 +0800</pubDate><description><![CDATA[binlog是mysql server层维护的一种二进制日志，其记录了对mysql的更新操作信息，并以事件的形式保存在磁盘中mysqlbinlog是mysql提供的专门处理binlog文件的工具，利用它可以查看binlog，通过指定条件进行恢复等操作。]]></description><category></category></item><item><title><![CDATA[MySQL关于事务acid特性的简单介绍]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137785188</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137785188</guid><author>pyf2533931995</author><pubDate>Mon, 15 Apr 2024 16:21:01 +0800</pubDate><description><![CDATA[原子性是指一个事务是不可分割的最小单位，其中的操作要么都成功，要么都失败；如果事务中的一个sql执行失败，则已执行成功的sql必须回滚，数据库退回到事务执行前的状态持久性是指事务一旦提交，它对数据库的改变就应该是永久的。接下来的操作或故障不会导致数据丢失或其他异常。隔离性是指事务内部的操作与其他事务是隔离的，并发执行的各个事务之间不能互相干扰。严格的隔离性，对应了事务隔离级别中的，但实际应用中出于性能考虑基本不会使用该级别写对写的影响：锁写对读的影响：多版本并发控制（mvcc）]]></description><category></category></item><item><title><![CDATA[MySQL索引与b+树浅析]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137741115</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137741115</guid><author>pyf2533931995</author><pubDate>Sun, 14 Apr 2024 12:12:13 +0800</pubDate><description><![CDATA[索引是为了加速对表中的数据检索而创建的一种数据结构（比如二叉搜索树）。索引一般以文件的形式存储在磁盘上，所以使用时需要进行磁盘IO。]]></description><category></category></item><item><title><![CDATA[mydumper与myloader使用介绍]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137718465</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137718465</guid><author>pyf2533931995</author><pubDate>Sat, 13 Apr 2024 16:37:58 +0800</pubDate><description><![CDATA[mydumper与myloader是github上的一个开源工具，用于mysql数据库的备份与恢复。相比于mysql自带的备份与恢复工具，mydumper和myloader的优势在于使用的是多线程进行备份与恢复，所以它的效率更高。mydumper：对指定的库表进行备份myloader：利用mydumper备份的文件进行恢复。]]></description><category></category></item><item><title><![CDATA[MySQL可重复读隔离级别下开启事务的一个注意事项]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137666616</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137666616</guid><author>pyf2533931995</author><pubDate>Fri, 12 Apr 2024 09:36:39 +0800</pubDate><description><![CDATA[在日常我们操作mysql时，mysql默认是自动提交的。当我们需要开启一个事务时，可以使用或begin命令，再使用commit或rollback提交或回滚事务。但事务的使用也有一些注意事项，不注意的话，可能会带来意料之外的结果。今天，我要分享的就是在（简称rr）隔离级别下，mysql的快照生成时机的问题。]]></description><category></category></item><item><title><![CDATA[MySQL主从同步及gtid简介]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137625982</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137625982</guid><author>pyf2533931995</author><pubDate>Thu, 11 Apr 2024 09:44:26 +0800</pubDate><description><![CDATA[on或off，在从库宕机且relaylog损坏情况下，主库日志已经传到了从库，从库还没来得及应用，开启该配置项，从库会自动放弃未执行的relaylog，并生成一个新的relaylog，将从库的io线程的position重新指向新的relaylog，并将sql线程的position退回到与io线程一致，重新开始同步，这样事务不会丢失。Master_Server_Id、Master_UUID、Master_Info_File：主库的server_id，uuid，从库保存主库相关内容的目录。]]></description><category></category></item><item><title><![CDATA[springboot在spring之上做了哪些事情—自动配置]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137594262</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137594262</guid><author>pyf2533931995</author><pubDate>Wed, 10 Apr 2024 14:00:42 +0800</pubDate><description><![CDATA[我个人认为，springboot相比spring最大的特点就是自动配置（autoconfigure）]]></description><category></category></item><item><title><![CDATA[spring与springboot原理浅析]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137587321</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137587321</guid><author>pyf2533931995</author><pubDate>Wed, 10 Apr 2024 10:48:44 +0800</pubDate><description><![CDATA[以下事件都是继承了SpringApplicationEvent抽象类的与spring应用程序相关的事件，在spring程序启动中，实际上还会涉及到与web、servlet相关的事件。在执行某些初始化操作时，如果这些操作依赖于注入的bean，那么就无法在构造方法中实现，因此，可以使用@PostConstruct注解来进行初始化操作。这两个接口用于在spring程序启动后执行一些特定的代码，如将数据缓存到redis中，当有多个这两个接口的实现类，可以通过@Order指定执行顺序。讲的很有深度，推荐大家学习。]]></description><category></category></item><item><title><![CDATA[MySQL主从一致性校验工具pt-table-checksum简单介绍]]></title><link>https://blog.youkuaiyun.com/pyf2533931995/article/details/137558604</link><guid>https://blog.youkuaiyun.com/pyf2533931995/article/details/137558604</guid><author>pyf2533931995</author><pubDate>Tue, 09 Apr 2024 16:49:11 +0800</pubDate><description><![CDATA[pt-table-checksum是percona toolkit工具中的一个命令，用于在线比较Mysql主从数据一致性。写入一个表中，通过主从复制，在从库上也执行同样的操作，再对比主从库上的校验和信息，判断主从是否一致。将一张大表分为多个块，默认第一个块是1000条数据，后面的块大小会根据机器性能浮动。使用replica into而不是insert into避免了主键冲突问题。–no-check-binlog-format	不校验binlog格式。针对每个块计算校验和，将结果通过。]]></description><category></category></item></channel></rss>