电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

MySQL ibdata1文件減肥過程解析

瀏覽:4日期:2023-09-15 20:49:40
目錄引言人物介紹系統(tǒng)表空間獨立表空間通用表空間UNDO 表空間臨時表空間前情提要制定“減肥”計劃”減肥“前全量備份停止數(shù)據(jù)庫服務(wù)刪除原實例新建實例啟動新建的數(shù)據(jù)庫服務(wù)導(dǎo)入備份數(shù)據(jù)驗證結(jié)果生產(chǎn)環(huán)境建議UNDO 相關(guān)參數(shù)設(shè)置關(guān)于 SQLESQLE 獲取引言

夏天來了,沒想到連 ibdata1 文件也要開始“減肥”了~~~

作者:楊彩琳

愛可生華東交付部 DBA,主要負(fù)責(zé) MySQL 日常問題處理及 DMP 產(chǎn)品支持。愛好跳舞,追劇。

本文來源:原創(chuàng)投稿

有句話是這么說的:“在 InnoDB 存儲引擎中數(shù)據(jù)是按照表空間來組織存儲的”。其實潛臺詞就是:表空間是表空間文件,是實際存在的物理文件,MySQL 中有很多表空間,下面一起來了解一下吧。

人物介紹

在說“減肥”的故事之前,讓我們先了解一下需要“減肥”的文件包含哪些部分,都是什么。

系統(tǒng)表空間

首先要說的是本文的主角,系統(tǒng)表空間。它里面存儲的有:

InnoDB 表元數(shù)據(jù)doublewrite bufferchange bufferundo logs

若在未配置 innodb_file_per_table 參數(shù)情況下有新建表的操作,那么系統(tǒng)表空間也會存儲這些表和索引數(shù)據(jù)信息。前面有說過表空間也是實際存在的表空間文件,同樣系統(tǒng)表空間它可以有一個或多個數(shù)據(jù)文件,默認(rèn)情況下,是在數(shù)據(jù)目錄中創(chuàng)建一個名為 ibdata1 文件的系統(tǒng)表空間數(shù)據(jù)文件,其文件大小和數(shù)量可以由參數(shù) innodb_data_file_path 來定義。

獨立表空間

由 innodb_file_per_table 參數(shù)定義。啟用后,InnoDB 可以在 file-per-table 表空間中創(chuàng)建表,這樣新創(chuàng)建的數(shù)據(jù)庫表都單獨的表空間文件。該參數(shù)在 MySQL 5.6.7 及更高版本已經(jīng)默認(rèn)啟用了。

通用表空間

可以通過 CREATE tablespace 語法創(chuàng)建的共享 InnoDB 表空間。與系統(tǒng)表空間類似,它能存儲多個表的數(shù)據(jù),也可將數(shù)據(jù)文件放置在 MySQL 數(shù)據(jù)目錄之外單獨管理。

UNDO 表空間

主要存儲 undo logs,默認(rèn)情況下 undo logs 是存儲在系統(tǒng)表空間中的,可通過參數(shù) innodb_undo_tablespaces 來配置 UNDO 表空間的數(shù)量,只能在初始化 MySQL 實例時才能設(shè)置該參數(shù),并且在實例的使用壽命內(nèi)是固定的,MySQL 8.0 可支持動態(tài)修改。

臨時表空間

非壓縮的、用戶創(chuàng)建的臨時表和磁盤上產(chǎn)生的內(nèi)部臨時表都是存儲在共享的臨時表空間存儲的,可以通過配置參數(shù) innodb_tmp_data_file_path 來定義臨時表空間數(shù)據(jù)文件的路徑、名稱、大小和屬性,如果沒有指定,默認(rèn)是在數(shù)據(jù)目錄下創(chuàng)建一個名為 ibtmp1的大于 12M 的自動擴展數(shù)據(jù)文件。

前情提要

客戶反饋 MySQL 5.7 的配置文件中沒有開啟 UNDO 表空間和 UNDO 回收參數(shù),導(dǎo)致 ibdata1 文件過大,并且一直在增長。需要評估下 ibdata1 文件大小如何回收及 UNDO 相關(guān)參數(shù)配置。

制定“減肥”計劃

思路:ibdata1 文件中包含了 InnoDB 表的元數(shù)據(jù),change buffer,doublewrite buffer,undo logs 等數(shù)據(jù),無法自動收縮,必須使用將數(shù)據(jù)邏輯導(dǎo)出,刪除 ibdata1 文件,然后將數(shù)據(jù)導(dǎo)入的方式來釋放 ibdata1 文件。

夏天來了,沒想到連 ibdata1 文件也要開始“減肥”了~~~

”減肥“前

減肥之前的 ibdata1 重量是 512M。

ps:因為是測試‘減肥計劃’,所以只模擬了一個‘微胖’的 ibdata1 文件。

[root@10-186-61-119 data]# lltotal 2109496-rw-r----- 1 mysql mysql56 Jun 14 14:26 auto.cnf-rw-r----- 1 mysql mysql 409 Jun 14 14:26 ib_buffer_pool-rw-r----- 1 mysql mysql 536870912 Jun 14 14:35 ibdata1-rw-r----- 1 mysql mysql 536870912 Jun 14 14:35 ib_logfile0-rw-r----- 1 mysql mysql 536870912 Jun 14 14:35 ib_logfile1-rw-r----- 1 mysql mysql 536870912 Jun 14 14:32 ib_logfile2-rw-r----- 1 mysql mysql 12582912 Jun 14 14:26 ibtmp1drwxr-x--- 2 mysql mysql 4096 Jun 14 14:26 mysql-rw-r----- 1 mysql mysql 5 Jun 14 14:26 mysqld.pidsrwxrwxrwx 1 mysql mysql 0 Jun 14 14:26 mysqld.sock-rw------- 1 mysql mysql 5 Jun 14 14:26 mysqld.sock.lock-rw-r----- 1 mysql mysql 6675 Jun 14 14:32 mysql-error.log-rw-r----- 1 mysql mysql 967 Jun 14 14:34 mysql-slow.logdrwxr-x--- 2 mysql mysql 8192 Jun 14 14:26 performance_schemadrwxr-x--- 2 mysql mysql 8192 Jun 14 14:26 sysdrwxr-x--- 2 mysql mysql 172 Jun 14 14:30 test全量備份

對庫做全量備份。我們使用 mysqldump 做全備,因為 Xtrabackup 會備份 ibdata1 文件。

/data/mysql/3309/base/bin/mysqldump -uroot -p \-S /data/mysql/3309/data/mysqld.sock \--default-character-set=utf8mb4 \--single-transaction --hex-blob \--triggers --routines --events --master-data=2 \--all-databases > /data/full_$(date +%F).sql停止數(shù)據(jù)庫服務(wù)systemctl stop mysql_3309刪除原實例[root@10-186-61-119 data]# rm -rf /data/mysql/3309[root@10-186-61-119 data]# rm -rf /etc/systemd/system/mysql_3309.service新建實例

重新創(chuàng)建一個同端口的 MySQL 實例(步驟略過),注意配置文件中需要配置下列參數(shù):

innodb_undo_tablespaces = 3innodb_max_undo_log_size = 4Ginnodb_undo_log_truncate = 1innodb_file_per_table = 1

新建實例數(shù)據(jù)文件如下:

[root@10-186-61-119 ~]# ll /data/mysql/3309total 4drwxr-x--- 2 mysql mysql 6 Jun 14 14:51 backupdrwxr-x--- 9 mysql mysql 129 Jun 14 14:52 basedrwxr-x--- 2 mysql mysql 77 Jun 14 14:52 binlogdrwxr-x--- 5 mysql mysql 331 Jun 14 14:52 data-rw-r--r-- 1 mysql mysql 3609 Jun 14 14:52 my.cnf.3309drwxr-x--- 2 mysql mysql 6 Jun 14 14:51 redologdrwxr-x--- 2 mysql mysql 6 Jun 14 14:51 relaylogdrwxr-x--- 2 mysql mysql 6 Jun 14 14:52 tmp啟動新建的數(shù)據(jù)庫服務(wù)[root@10-186-61-119 ~]# systemctl start mysql_3309[root@10-186-61-119 ~]# ps -ef | grep 3309mysql 7341 1 0 14:52 ?00:00:01 /data/mysql/3309/base/bin/mysqld --defaults-file=/data/mysql/3309/my.cnf.3309 --daemonize導(dǎo)入備份數(shù)據(jù)[root@10-186-61-119 data]# /data/mysql/3309/base/bin/mysql -uroot -p \-S /data/mysql/3309/data/mysqld.sock < full_2023-06-14.sql驗證結(jié)果

減肥前 512M,減肥后 128M。

[root@10-186-61-119 data]# lltotal 1747000-rw-r----- 1 mysql mysql56 Jun 14 14:52 auto.cnf-rw-r----- 1 mysql mysql 422 Jun 14 14:52 ib_buffer_pool-rw-r----- 1 mysql mysql 134217728 Jun 14 14:57 ibdata1-rw-r----- 1 mysql mysql 536870912 Jun 14 14:57 ib_logfile0-rw-r----- 1 mysql mysql 536870912 Jun 14 14:57 ib_logfile1-rw-r----- 1 mysql mysql 536870912 Jun 14 14:52 ib_logfile2-rw-r----- 1 mysql mysql 12582912 Jun 14 14:52 ibtmp1drwxr-x--- 2 mysql mysql 4096 Jun 14 14:55 mysql-rw-r----- 1 mysql mysql 5 Jun 14 14:52 mysqld.pidsrwxrwxrwx 1 mysql mysql 0 Jun 14 14:52 mysqld.sock-rw------- 1 mysql mysql 5 Jun 14 14:52 mysqld.sock.lock-rw-r----- 1 mysql mysql 6841 Jun 14 14:55 mysql-error.log-rw-r----- 1 mysql mysql 414 Jun 14 14:52 mysql-slow.logdrwxr-x--- 2 mysql mysql 8192 Jun 14 14:52 performance_schemadrwxr-x--- 2 mysql mysql 8192 Jun 14 14:52 sysdrwxr-x--- 2 mysql mysql 172 Jun 14 14:56 test-rw-r----- 1 mysql mysql 10485760 Jun 14 14:57 undo001-rw-r----- 1 mysql mysql 10485760 Jun 14 14:57 undo002-rw-r----- 1 mysql mysql 10485760 Jun 14 14:57 undo003

恭喜 ibdata1 文件減肥成功!

生產(chǎn)環(huán)境建議

上面的“減肥”計劃對于生產(chǎn)環(huán)境可能有點暴力,所以,對于生產(chǎn)環(huán)境若是遇到相同場景的,建議采用下面較溫和謹(jǐn)慎的方法:

申請一臺新的服務(wù)器,部署從庫。配置好 innodb_file_per_table 參數(shù),UNDO 相關(guān)參數(shù);主庫進行邏輯全備;將主庫備份數(shù)據(jù)恢復(fù)到新從庫,并建立復(fù)制關(guān)系;主從切換,提升新從庫為主庫。UNDO 相關(guān)參數(shù)設(shè)置

注意:MySQL5.7 不支持在線或者離線分離 UNDO 表空間操作,UNDO 表空間的獨立必須在數(shù)據(jù)庫初始化時指定。

## 控制 Innodb 使用的 UNDO 表空間的數(shù)據(jù)量,默認(rèn)值為 0,即記錄在系統(tǒng)表空間中。innodb_undo_tablespaces = 3## 控制 UNDO 表空間的閾值大小innodb_max_undo_log_size = 4G## 控制將超過 innodb_maxundo_log_size 定義的閾值的 UNDO 表空間被標(biāo)記為 truncationinnodb_undo_log_truncate = 1關(guān)于 SQLE

愛可生開源社區(qū)的 SQLE 是一款面向數(shù)據(jù)庫使用者和管理者,支持多場景審核,支持標(biāo)準(zhǔn)化上線流程,原生支持 MySQL 審核且數(shù)據(jù)庫類型可擴展的 SQL 審核工具。

SQLE 獲取類型地址版本庫https://github.com/actiontech/sqle文檔https://actiontech.github.io/sqle-docs/發(fā)布信息https://github.com/actiontech/sqle/releases數(shù)據(jù)審核插件開發(fā)文檔https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_audit...

以上就是MySQL ibdata1文件減肥過程解析的詳細(xì)內(nèi)容,更多關(guān)于MySQL ibdata1文件減肥的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫
主站蜘蛛池模板: 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 商用绞肉机-熟肉切片机-冻肉切丁机-猪肉开条机 - 广州市正盈机械设备有限公司 | 金联宇电缆|广东金联宇电缆厂家_广东金联宇电缆实业有限公司 | 柔性测斜仪_滑动测斜仪-广州杰芯科技有限公司 | 杭州画室_十大画室_白墙画室_杭州美术培训_国美附中培训_附中考前培训_升学率高的画室_美术中考集训美术高考集训基地 | 圆窗水平仪|伊莉莎冈特elesa+ganter | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 南京试剂|化学试剂|分析试剂|实验试剂|cas号查询-专业60年试剂销售企业 | 智能气瓶柜(大型气瓶储存柜)百科| 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 无刷电机_直流无刷电机_行星减速机-佛山市藤尺机电设备有限公司 无菌检查集菌仪,微生物限度仪器-苏州长留仪器百科 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 净化工程_无尘车间_无尘车间装修-广州科凌净化工程有限公司 | 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 冷藏车-东风吸污车-纯电动环卫车-污水净化车-应急特勤保障车-程力专汽厂家-程力专用汽车股份有限公司销售二十一分公司 | 浙江栓钉_焊钉_剪力钉厂家批发_杭州八建五金制造有限公司 | 广东护栏厂家-广州护栏网厂家-广东省安麦斯交通设施有限公司 | 智能电表|预付费ic卡水电表|nb智能无线远传载波电表-福建百悦信息科技有限公司 | 洛阳永磁工业大吊扇研发生产-工厂通风降温解决方案提供商-中实洛阳环境科技有限公司 | 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 温控器生产厂家-提供温度开关/热保护器定制与批发-惠州市华恺威电子科技有限公司 | 鲁尔圆锥接头多功能测试仪-留置针测试仪-上海威夏环保科技有限公司 | ISO9001认证咨询_iso9001企业认证代理机构_14001|18001|16949|50430认证-艾世欧认证网 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 搜木网 - 木业全产业链交易平台,免费搜货、低价买货! | 广东成考网-广东成人高考网 | 上海APP开发-APP制作-APP定制开发-上海APP开发制作公司-咏熠科技 | 内窥镜-工业内窥镜厂家【上海修远仪器仪表有限公司】 | 建筑工程资质合作-工程资质加盟分公司-建筑资质加盟 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 台湾阳明固态继电器-奥托尼克斯光电传感器-接近开关-温控器-光纤传感器-编码器一级代理商江苏用之宜电气 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 进口便携式天平,外校_十万分之一分析天平,奥豪斯工业台秤,V2000防水秤-重庆珂偌德科技有限公司(www.crdkj.com) | 广西正涛环保工程有限公司【官网】 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体 | 齿轮减速机_齿轮减速电机-VEMT蜗轮蜗杆减速机马达生产厂家瓦玛特传动瑞环机电 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 云南成人高考_云南成考网| 铸钢件厂家-铸钢齿轮-减速机厂家-淄博凯振机械有限公司 |