暂无图片
关于从库的表空间碎片过多
我来答
分享
M
msg
2022-02-22
关于从库的表空间碎片过多

背景

发现一些从库的表比主库大,进行排查,发现是表空间碎片过多,对表空间进行重新整理,表大小恢复正常

反思

  1. 为什么从库多,因为我有个同步脚本,需要获取binlog日志,为了不影响实际数据库,就通过主从的方式,来获取从库的binlog日志
  2. 为什么从库碎片多,我这边的一个猜测这边有二种从库,一种是为了备份,一种是为了同步脚本
    1. 那么为了备份的从库表空间碎片能跟主库保持大概的一致
    2. 那么为了同步脚本的从库表空间碎片就很多
      这是为啥,就因为我用了同步脚本,或者说我去获取了binlog日志导致的???
我来答
添加附件
收藏
分享
问题补充
13条回答
默认
最新
薛晓刚

binlog什么模式?

暂无图片 评论
暂无图片 有用 0
打赏 0
msg
题主
2022-02-22
Row模式
M
msg

Row模式

暂无图片 评论
暂无图片 有用 0
打赏 0
M
msg
升级问题到: 潜在风险
暂无图片 评论
暂无图片 有用 0
打赏 0
薛晓刚

那实在不应该发生这种情况。

暂无图片 评论
暂无图片 有用 0
打赏 0
M
msg

实际发生了,有一些还很离谱image.pngimage.png

暂无图片 评论
暂无图片 有用 0
打赏 0
M
msg

目前能想到的解决方案:就是写个脚本,半夜定时执行,整理超过G单位的表空间
但是无法治根,很难受

暂无图片 评论
暂无图片 有用 0
打赏 0
严少安
暂无图片

什么版本的mysql,表定义是什么样的?

暂无图片 评论
暂无图片 有用 0
打赏 0
M
msg

8.0.18版本的mysql
表引擎是innodb
从库是备份来的,跟主库完全一致

暂无图片 评论
暂无图片 有用 0
打赏 0
伊织鸟

先关注下,感觉还是mysql内部机制的问题

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
GreatSQL

这种情况很正常,从库上的relay log apply行为跟在主库上不一样,更容易造成碎片。

另外,这种情况似乎在云数据库RDS上更常见。

暂无图片 评论
暂无图片 有用 1
打赏 0
M
msg

但是使用mysql自带的主从同步就不会产生很多的碎片,自写的脚本同步就会产生很多的碎片

暂无图片 评论
暂无图片 有用 0
打赏 0
严少安
暂无图片

自写的脚本同步是如何实现的?用到了什么工具?读主库的binlog解析成sql然后写从库?

暂无图片 评论
暂无图片 有用 0
打赏 0
M
msg
不是,mysql之前是用自带的同步,脚本是获取binlog同步到别的类型数据库
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 单行插入会对主键产生间隙锁吗?
回答 1
https://zhuanlan.zhihu.com/p/356824126希望对你有帮助
主从手动切换如何进行?
回答 1
B上resetslaveall清空的是B上的中继日志,这个中继日志是从A同步过来的,一般同步完会自动删掉的在A上changemastertohost'B',然后再开启同步就可以从B上拉取日志了
MySQL audit日志有没有参数控制它自动删除?
回答 2
已采纳
只能手工备份后清理。
有没有好的学习资料推荐,官方文档太难读了
回答 3
已采纳
深入浅出mysql高性能mysqlmysql实战mysql8.0运维与优化
MySQL的二进制日志(binlog)有什么重要用途?
回答 1
已采纳
二进制日志(binlog)记录着数据库的变更,还记录着每个变更花费时间的信息,记录的单位是事件(enent),不是事务(transaction),一个事务可以包含多个事件。从MySQL8.0开始,二进
mysql IN 太长有什么解决思路?
回答 1
用join或in直接嵌套你的A表子查询
mysql如何查看change master的命令参数,不查官方手册,只通过命令?
回答 1
在mysql客户端执行helpchangemasterto;
mysql有类似于oracle的 awr 报告吗?
回答 2
MySQL没有内置与OracleAWR(AutomaticWorkloadRepository)完全相同的功能,但是MySQL提供了一些工具和功能,可以用来生成类似的性能分析报告。这些工具可以帮助数据
mysql innodb引擎,单表查询查询到结果过多怎么提速?
回答 3
已采纳
为啥要一次性查询这么多,如果确实要查询这么多数据,最好进行分区,利用分区裁剪的特性,同时也不要走索引,最好能走主键
mysql如何查看所有复合主键的表名?
回答 2
已采纳
查询mysql.indexes里面