<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>张天师 on DBA学习笔记</title><link>https://blog.zhangjt.fun/authors/%E5%BC%A0%E5%A4%A9%E5%B8%88/</link><description>Recent content in 张天师 on DBA学习笔记</description><generator>Hugo</generator><language>zh-CN</language><managingEditor>281304173@qq.com (张天师)</managingEditor><webMaster>281304173@qq.com (张天师)</webMaster><lastBuildDate>Wed, 21 Oct 2026 16:28:23 +0800</lastBuildDate><atom:link href="https://blog.zhangjt.fun/authors/%E5%BC%A0%E5%A4%A9%E5%B8%88/index.xml" rel="self" type="application/rss+xml"/><item><title>OnCall 无人值守讨论</title><link>https://blog.zhangjt.fun/oncall-unattended-discussion-z1ysng4/</link><pubDate>Fri, 16 Oct 2026 10:10:40 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/oncall-unattended-discussion-z1ysng4/</guid><description>&lt;p&gt;将诊断迁移至 Agent 2.0，提高前置诊断的智能化程度，现在诊断时间最长能达到 5min，已经足够完成比较复杂的诊断了。&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;用户对 Agent&lt;/strong&gt;​ ​&lt;strong&gt;的容忍度&lt;sup&gt;（如何在用户耐心耗尽之前让人工介入避免投诉）&lt;/sup&gt;&lt;/strong&gt;：AI Agent 理论上能解决的范围，但是实际上更多还是依赖：“​&lt;strong&gt;用户到底有多大意愿和 Agent 进行多轮对话&lt;/strong&gt;”，如果用户提问时候提供足够多的背景信息，很多未拦截工单是可以前置拦截成功的。&lt;/p&gt;</description></item><item><title>TiFlash 存算分离架构踩坑实录</title><link>https://blog.zhangjt.fun/tiflash-storage-and-computing-separation-architecture-pitfall-record-z1kfd74/</link><pubDate>Sat, 14 Dec 2024 20:30:47 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tiflash-storage-and-computing-separation-architecture-pitfall-record-z1kfd74/</guid><description>&lt;h2 id="1-一背景"&gt;1 一、背景&#10;&lt;/h2&gt;&#10;&lt;p&gt;TiFlash 的好处和适应范围，这里就不多介绍了，大家都知道 TiFlash 可以极大的提高 AP 类查询的效率，所谓的 HTAP 数据库里 AP 主要就是通过 TiFlash 来实现的，不过 TiFlash 是列存模式，是作为 TiKV 的 Follower 角色来实现的，如果想达到高可用的状态，至少得提供 2 个副本，这样只从存储成本上来讲，相当于存储成本增长了 2/3, 这对很多公司而言，无疑会导致成本大幅度上升。&lt;/p&gt;</description></item><item><title>记一起 Schedule 卡住的问题</title><link>https://blog.zhangjt.fun/remember-the-problem-of-schedule-getting-stuck-z20fpdx/</link><pubDate>Thu, 28 Nov 2024 11:25:06 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/remember-the-problem-of-schedule-getting-stuck-z20fpdx/</guid><description>&lt;h2 id="1-现象"&gt;1 现象&#10;&lt;/h2&gt;&#10;&lt;p&gt;业务反馈查询 TiFlash 报错：&lt;code&gt;No access path for table 'dwd_id_mapping' is found with 'tidb_isolation_read_engines' = 'tiflash,tidb', valid values can be 'tikv'.&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;到集群中查看了一下，确实这个表的副本一直处于同步状态，但是进度一直没有发生变化。&lt;/p&gt;</description></item><item><title>TiDB常用命令</title><link>https://blog.zhangjt.fun/tidb-common-commands-2dnliy/</link><pubDate>Mon, 29 Jan 2024 18:05:03 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tidb-common-commands-2dnliy/</guid><description>&lt;div class="td-code td-code--untitled" id="td-code-247a47c3-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="sql" data-td-line-count="17"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-247a47c3-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 获取所有连接的session级别变量信息 &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;PERFORMANCE_SCHEMA&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session_connect_attrs&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;limit&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 统计Placement Rule个数&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.[] | {&amp;#34;group_id&amp;#34;: .group_id, &amp;#34;id&amp;#34;: .rules[].id}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;TiDB_DDL&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 统计TiFlash副本的表(分区)个数&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;cat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rules&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;jq&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;.[] | {&amp;#34;group_id&amp;#34;: .group_id, &amp;#34;id&amp;#34;: .rules[].id}&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;grep&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;tiflash&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 统计TiFlash表在TiKV的数据量是多少&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data_length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size_G&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tiflash_replica&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;group&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;order&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size_G&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 查看tiflash迁移进度&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;progress&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;data_length&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size_G&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;join&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tiflash_replica&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;table_schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;table_name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;progress&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;order&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;by&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;size_G&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;-- 7.5版本不支持DISABLE_PRECHECK参数，8.1才支持&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;IMPORT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;INTO&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;ying99_asset&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;service_account_info_latest&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;s3://mysql-dts-migrate/asset-tidb-20240714-new/ying99_asset.service_account_info_latest.*.sql?access-key=LTAI5tMVKDBdFTLEsQ6afMdV&amp;amp;secret-access-key=kpjA0LED8BfKAraqzqnqbOZdNdSWy6&amp;amp;endpoint=https://oss-cn-shenzhen-internal.aliyuncs.com&amp;amp;force-path-style=false&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;FORMAT&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;SQL&amp;#39;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;WITH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;CLOUD_STORAGE_URI&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;s3://mysql-dts-migrate/import-sort-dir?access-key=LTAI5tMVKDBdFTLEsQ6afMdV&amp;amp;secret-access-key=kpjA0LED8BfKAraqzqnqbOZdNdSWy6&amp;amp;endpoint=https://oss-cn-shenzhen-internal.aliyuncs.com&amp;amp;force-path-style=false&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;DETACHED&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>TiDB 7.5资源管控能力测试</title><link>https://blog.zhangjt.fun/tidb-75-resource-management-and-control-capability-test-zk17rk/</link><pubDate>Mon, 29 Jan 2024 17:01:39 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tidb-75-resource-management-and-control-capability-test-zk17rk/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;在7.1时候，其实已经对资源管控做了测试：TiDB 7.1 资源管控验证测试&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;。本文重点对7.1到7.5期间新增的资源管控能力进行测试，完整的功能特性见：TiDB 6.5升级7.5调研&lt;sup id="fnref:2"&gt;&lt;a href="#fn:2" class="footnote-ref" role="doc-noteref"&gt;2&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;怎么理解&lt;code&gt;RU Quota&lt;/code&gt;​？如何设置合理的&lt;code&gt;RU Quota&lt;/code&gt;​？一个复杂查询的RU成本竟然会有&lt;code&gt;7W&lt;/code&gt;​！&lt;br&gt;&#10;资源组的&lt;code&gt;RU_PER_SEC&lt;/code&gt;​限制的是资源组整体的消耗速度，可以看到&lt;code&gt;RU&lt;/code&gt;​的消耗其实是包含对&lt;code&gt;TiKV&lt;/code&gt;​读写请求封装的，虽然在TiKV层只有基于优先级的概念，没有直接对资源组做&lt;code&gt;Quota&lt;/code&gt;​限制，但是通过限制&lt;code&gt;TiDB&lt;/code&gt;​发送给&lt;code&gt;TiKV&lt;/code&gt;​ 的请求数量，来间接达到&lt;code&gt;TiKV&lt;/code&gt;​基于 &lt;code&gt;Quota&lt;/code&gt;的限制。&lt;/li&gt;&#10;&lt;li&gt;测试计划？？&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="1-什么是-request-unit-ru"&gt;1 什么是 Request Unit (RU)&#10;&lt;/h2&gt;&#10;&lt;p&gt;Request Unit (RU) 是 TiDB 对 CPU、IO 等系统资源的统一抽象的计量单位，用于表示对数据库的单个请求消耗的资源量。请求消耗的 RU 数量取决于多种因素，例如操作类型或正在检索或修改的数据量。目前，RU 包含以下资源的统计信息：&lt;/p&gt;</description></item><item><title>TiDB 7.1 资源管控验证测试</title><link>https://blog.zhangjt.fun/tidb-71-resource-management-verification-test-z1koboy/</link><pubDate>Mon, 29 Jan 2024 16:48:40 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tidb-71-resource-management-verification-test-z1koboy/</guid><description>&lt;hr&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://tidb.net/blog/9cd7dcb3"&gt;https://tidb.net/blog/9cd7dcb3&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;本文章的重点在通过实验探索资源管控的一些细节表现，详细来讲就是：TiDB的流控能力和TiKV的调度能力。&lt;/li&gt;&#10;&lt;li&gt;2024-01-29 16:48:39&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h1 id="1-背景"&gt;1 〇、背景&#10;&lt;/h1&gt;&#10;&lt;p&gt;我们线上使用环境和李文杰大佬比较类似，我这里就不赘述了，大家可以看&lt;a href="https://tidb.net/blog/2ce19df3"&gt;专栏 - TiDB v7.1.0 跨业务系统多租户解决方案 | TiDB 社区&lt;/a&gt;，这里比较清晰的介绍了7.1的资源管控原理和实践验证。&lt;/p&gt;</description></item><item><title>TiDB抖动排查路径</title><link>https://blog.zhangjt.fun/tidb-jitter-troubleshooting-path-byxrq/</link><pubDate>Tue, 23 Jan 2024 15:24:54 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tidb-jitter-troubleshooting-path-byxrq/</guid><description>&lt;h2 id="1-select执行流程"&gt;1 select执行流程&#10;&lt;/h2&gt;&#10;&lt;img class="td-image" src="https://blog.zhangjt.fun/images/Pasted-image-20220321114021-20261020175823-n2i1ljj.png" alt="Pasted image 20220321114021" loading="lazy" decoding="async"&gt;&lt;h2 id="2-insert流程"&gt;2 INSERT流程&#10;&lt;/h2&gt;&#10;&lt;img class="td-image" src="https://blog.zhangjt.fun/images/Pasted-image-20220321114035-20261020175841-wya4xan.png" alt="Pasted image 20220321114035" loading="lazy" decoding="async"&gt;&lt;h3 id="21-落盘步骤"&gt;2.1 落盘步骤&#10;&lt;/h3&gt;&#10;&lt;img class="td-image" src="https://blog.zhangjt.fun/images/Pasted-image-20220321115327-20261020175853-05iw1hq.png" alt="Pasted image 20220321115327" loading="lazy" decoding="async"&gt;&lt;p&gt;‍&lt;/p&gt;</description></item><item><title>常用MySQL命令</title><link>https://blog.zhangjt.fun/commonly-used-mysql-commands-zigvyw/</link><pubDate>Tue, 23 Jan 2024 15:24:38 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/commonly-used-mysql-commands-zigvyw/</guid><description>&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;将某个字段/binary类型转换为utf8字符集的方法&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-626525ac-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="sql" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-626525ac-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;CONVERT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;job_meta&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;USING&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;COLLATE&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;utf8_unicode_ci&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;统计BINLOG中EVENT分布&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-626525ac-fence-1" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="9"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-626525ac-fence-1-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 按照时间段解析BINLOG&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mysqlbinlog -vv --start-datetime &lt;span class="s2"&gt;&amp;#34;2022-04-01 03:02:00&amp;#34;&lt;/span&gt; --stop-datetime &lt;span class="s2"&gt;&amp;#34;2022-04-01 03:08:00&amp;#34;&lt;/span&gt; mysql-bin.002572 &amp;gt;2572.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 将BINLOG过滤指定EVENT名到文件中&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cat 2572.txt &lt;span class="p"&gt;|&lt;/span&gt; grep -E &lt;span class="s2"&gt;&amp;#34;^SET TIMESTAMP|### (INSERT|UPDATE|DELETE)&amp;#34;&lt;/span&gt; &amp;gt;table.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 查看单个事务的更改行数&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;uniq -c table.txt&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 统计某个时间段EVENT分布情况&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sort table.txt &lt;span class="p"&gt;|&lt;/span&gt; uniq -c &lt;span class="p"&gt;|&lt;/span&gt; sort -n -k1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;删除非系统库表&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>MySQL slow_log日志采集方案</title><link>https://blog.zhangjt.fun/mysql-slowlog-log-collection-solution-zno9g7/</link><pubDate>Tue, 23 Jan 2024 15:24:10 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/mysql-slowlog-log-collection-solution-zno9g7/</guid><description>&lt;h1 id="1-mysql-slow_log日志采集方案"&gt;1 MySQL slow_log日志采集方案&#10;&lt;/h1&gt;&#10;&lt;h2 id="11-背景"&gt;1.1 背景&#10;&lt;/h2&gt;&#10;&lt;p&gt;慢查询对线上的影响很大，而慢日志是发现慢查询SQL的最常用手段，所以对慢日志的收集和监控，是作为一个DBA的最常见需求。下面介绍一下常见的慢日志收集方案&lt;/p&gt;</description></item><item><title>Caddy泛域名配置 &amp;&amp; hugo自动更新</title><link>https://blog.zhangjt.fun/caddy-wildcard-certificates/</link><pubDate>Fri, 08 Jul 2022 15:43:45 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/caddy-wildcard-certificates/</guid><description>&lt;h2 id="背景"&gt;背景&#10;&lt;/h2&gt;&#10;&lt;p&gt;在腾讯云买了个轻量服务器，就想部署一些self-hosted服务，带来的一个后果就是要配多个域名，申请多套SSL证书。一开始还好，很快就能申请好，不过随着域名的增多，有时候新加域名得等一段时间才能申请成功。&#10;好在caddy是支持泛域名证书(Wildcard certificates)：&lt;/p&gt;</description></item><item><title>待填的坑</title><link>https://blog.zhangjt.fun/todo-list/</link><pubDate>Tue, 24 May 2022 17:13:01 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/todo-list/</guid><description>&lt;p&gt;最近刚开始写blog，需要抽时间将之前的知识梳理一下，包括不限于：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;MySQL&lt;/li&gt;&#10;&lt;li&gt;TiDB&lt;/li&gt;&#10;&lt;li&gt;Linux相关：ZFS, Openwrt等&lt;/li&gt;&#10;&lt;li&gt;编程语言：SHELL, Python, Golang等&lt;/li&gt;&#10;&lt;li&gt;工具类：Shadowsocks, Minio, NextCloud&lt;/li&gt;&#10;&lt;li&gt;Mac: MarkText&lt;/li&gt;&#10;&lt;li&gt;博客: Caddy, Hugo, Picgo&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;PS: 不一定能写完，看情况吧🙈&lt;/p&gt;</description></item><item><title>一次TiDB负载搞排查</title><link>https://blog.zhangjt.fun/tidb-high-cpu-usage/</link><pubDate>Tue, 24 May 2022 16:11:36 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/tidb-high-cpu-usage/</guid><description>&lt;h2 id="背景"&gt;背景&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;TiDB Server两个节点CPU使用率都比较高&#10;&lt;img src="https://blog.zhangjt.fun/images/posts/tidb-high-cpu-usage/cpu-usage-nodes.svg" alt="TiDB Server 两个节点 CPU 使用率" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;li&gt;查看QPS指标，可以看到14点到19点之间是基本没有流量的&#10;&lt;img src="https://blog.zhangjt.fun/images/posts/tidb-high-cpu-usage/qps-metrics.svg" alt="QPS 指标，14 点到 19 点基本无流量" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;li&gt;登陆机器可以发现，有很多连接其实已经失效，但是还残留服务器上：&#10;&lt;img src="https://blog.zhangjt.fun/images/posts/tidb-high-cpu-usage/stale-connections.svg" alt="服务器上残留的失效连接" loading="lazy" decoding="async"&gt;&lt;/li&gt;&#10;&lt;li&gt;怀疑Server负载高和这些诡异的SQL有关系，即便没有释放，也没办法KILL，但是还是占用了一个核的CPU&#10;&lt;img src="https://blog.zhangjt.fun/images/posts/tidb-high-cpu-usage/2022-05-29-mxWOpSfh5PwAsbL.png" alt="20220529204849" loading="lazy" decoding="async"&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/pingcap/tidb/pull/29212"&gt;https://github.com/pingcap/tidb/pull/29212&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/pingcap/tidb/issues/24031"&gt;https://github.com/pingcap/tidb/issues/24031&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="解决方案"&gt;解决方案&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;将流量转移到其他机器，可选途径有：&lt;/p&gt;</description></item><item><title>HUGO主题相关内容</title><link>https://blog.zhangjt.fun/deploy-blog-with-hugo/</link><pubDate>Sun, 22 May 2022 16:11:36 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/deploy-blog-with-hugo/</guid><description>&lt;h2 id="安装主题"&gt;安装主题&#10;&lt;/h2&gt;&#10;&lt;p&gt;安装主题可以通过两种途径：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;直接下载主题的ZIP文件，将文件解压到theme目录下。&lt;/li&gt;&#10;&lt;li&gt;通过&lt;code&gt;git submodel&lt;/code&gt;方式，将主题作为git子模块来管理。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;建议通过&lt;code&gt;git submodel&lt;/code&gt;方式来管理，这样后续主题有更新，直接通过&lt;code&gt;git submodel&lt;/code&gt;来更新即可。&lt;/p&gt;</description></item><item><title>MySQL在线更改Binlog目录</title><link>https://blog.zhangjt.fun/online-change-binlog-dir/</link><pubDate>Fri, 20 May 2022 22:07:16 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/online-change-binlog-dir/</guid><description>&lt;h2 id="背景"&gt;背景&#10;&lt;/h2&gt;&#10;&lt;p&gt;线上使用共享表空间，因共享表空间没办法释放，导致磁盘可用空间太小，所以新找几台机器，重新导出导入，将业务迁移到新机器上。&lt;br&gt;&#10;因需要从备机导数据，需要保留binlog个数不固定，为避免导数机器被binlog撑满，将其他磁盘的目录挂载到binlog目录。&lt;/p&gt;</description></item><item><title>MySQL搭建Group Replicatiion</title><link>https://blog.zhangjt.fun/install-mysql-group-replication/</link><pubDate>Fri, 20 May 2022 15:55:22 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/install-mysql-group-replication/</guid><description>&lt;h2 id="1-安装mysq5719"&gt;1. 安装MySQ(&amp;gt;=5.7.19)&#10;&lt;/h2&gt;&#10;&lt;p&gt;具体安装方法，请&lt;a href="http://www.baidu.com"&gt;百度&lt;/a&gt;或&lt;a href="http://www.google.com"&gt;Google&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="2-gr准备工作"&gt;2. GR准备工作&#10;&lt;/h2&gt;&#10;&lt;h3 id="1-更改配置文件"&gt;1. 更改配置文件&#10;&lt;/h3&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;code&gt;loose-&lt;/code&gt;为配置前缀，后边才是变量名。&#10;正常情况下配置文件里参数是必须可用的，也就是必须先安装插件，后改配置文件，否则MySQL启动时会报错。加&lt;code&gt;loose-&lt;/code&gt;前缀后，如果参数不存在，会先忽略报错，待插件安装后，会自动将对应参数设置为配置文件的值。&lt;/p&gt;</description></item><item><title>Linux端口转发方式</title><link>https://blog.zhangjt.fun/linux-port-proxy/</link><pubDate>Wed, 18 May 2022 23:52:08 +0800</pubDate><author>281304173@qq.com (张天师)</author><guid>https://blog.zhangjt.fun/linux-port-proxy/</guid><description>&lt;h2 id="ssh端口转发模式"&gt;ssh端口转发模式&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;这种方式，有以下特点：&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;可以在本地执行，也可以在服务器执行，部署方案灵活；&lt;/li&gt;&#10;&lt;li&gt;通信会经过ssh加密，安全性好；&lt;/li&gt;&#10;&lt;li&gt;同样是因为经过ssh加密，所以性能比较低&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/blockquote&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-2ef7d625-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="shell" data-td-line-count="1"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-2ef7d625-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-shell" data-lang="shell"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ssh -L &lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;local_port&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;:&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;server_ip&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;:&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;server_port&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; -fN root@&lt;span class="si"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;proxy_ip&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="xinetd-端口转发"&gt;&lt;em&gt;xinetd&lt;/em&gt; 端口转发&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;没有加密，性能高；&lt;/li&gt;&#10;&lt;li&gt;在应用层转发，不需要root权限&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;/blockquote&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;安装xinetd：&lt;code&gt;yum install -y xinetd&lt;/code&gt;&lt;/p&gt;</description></item></channel></rss>