一次生产环境mysql迁移操作(二)mysql空间释放(碎片整理)
一次生产环境mysql迁移操作(二)mysql空间释放(碎片整理)
上文中增加了定时归档,现在一些大表磁盘空间一直不释放,导致数据库文件越来越大。现在介绍下数据导入导出方案。
方案选择
暂时有两种方案选择:
1、停机数个小时,使用mysqldump进行备份(大表只最近导出10天的数据)和恢复,并将共享表空间设置为独立表空间
2、mysql使用OPTIMIZE 来进行碎片整理
2、搭建主从集群,记录备份时间点,然后将数据重新导入到从库,最后将从库切换为主库。
经过对比1、2、3,方案一操作简单,比较灵活可以先导入近一天数据,以后的数据慢慢导入,方案二需要锁表,且时间太长,而我们数据库版本是5.5.47且innodb-file-per-table参数没设置,所以不适合该方案,方案三操作比较麻烦,时间也需要很久,经过评估停机时间可以缩短为1小时,最后选择方案1。
实施
前置步骤
1、从我们归档的数据库中导出近期半个月数据。
mkdir -p /mnt/backup/mysql/
cd /mnt/backup/mysql/
mysqldump -uroot -p1 -t --skip-add-locks --single-transaction --quick --databases xxx --tables table1 --where 'clock >1543161600 and clock <=1543939200' >table1_1126-1204.sql
mysqldump -uroot -p1 -t --skip-add-locks --single-transaction --quick --databases xxx --tables table2 --where 'clock >1543161600 and clock <=1543939200' >table2_1126-1204.sql
...
...
...
2、从生产数据库中导出近一天的数据
比如说我们准备12月10升级,这里我们可以提前到处那六张大表的数据,该步骤可以不用停服务,并且不影响数据库正常运行。
mkdir -p /mnt/backup/mysql/
cd /mnt/backup/mysql/
mysqldump -uroot -p1 -t --skip-add-locks --single-transaction --quick --databases xxx --tables table1 --where 'clock >1543939200 and clock <=1544371200' >table1_1205-1209.sql
mysqldump -uroot -p1 -t --skip-add-locks --single-transaction --quick --databases xxx--table2 --where 'clock >1543939200 and clock <=1544371200' >table2_1205-1209.sql
...
...
...
操作步骤
1、停止相关服务
systemctl stop httpd
systemctl stop supervisord
systemctl stop xxx-server.service
2、执行清理脚本
由于这些大表都已经分区,所以清理就只需要保留当天的分区,以前的分区可以都drop掉,由于不同的库清理脚本不一样,所以脚本我这里就不列出来了
3、导出其余表数据
使用mysqldump导出主数据库中除了那6个大表以外的其他所有数据库的数据
mkdir -p /mnt/backup/mysql/
cd /mnt/backup/mysql/
mysqldump -R -uroot -p1 --databases db1 db2alert db3 guacamole --ignore-table=db1.table1 --ignore-table=db1.table2 > mysqldump.sql
备份mysql数据库中的用户和数据库信息
mysqldump -t -uroot -p1 --databases mysql> mysql_info_data.sql
4、使用mysqldump 分别导出 6个大表清理后的数据
cd /mnt/backup/mysql/
mysqldump -uroot -p1 --databases xxx --tables table1 --where 'clock >1544371200' >table1.sql
mysqldump -uroot -p1 --databases xxx --tables table2 --where 'clock >1544371200' >table2.sql
...
...
...
5、删除所有数据库
mysql -uroot -p1
drop database db1;
drop database db2;
drop database db3;
删除数据/var/lib/mysql下日志文件
systemctl stop mariadb
rm -rf /var/lib/mysql/ib*
#查看空间是否释放
df
6、配置/etc/my.cnf
修改/etc/my.cnf,这里需要将共享表空间设置为独立表空间。
备注:mysql 5.6.7版本后会默认开启独立表空间innodb-file-per-table=on
当前服务现在使用的版本是5.5.47,所以需要在my.cnf中进行配置,而openstack用的是5.6.22所以不用设置。
添加下面一句:
[mysqld]
innodb-file-per-table=1
systemctl start mariadb
mysql -uroot -p1
#查看设置是否生效,如果是on则说明已生效
show variables like '%per_table%';
7、分批导入数据库
cd /mnt/backup/mysql
mysql -uroot -p1
source mysqldump.sql;
use db1
source table1.sql;
source table2.sql;
...
...
...
8、验证数据
mysql -uroot -p1
use db1
show table status like 'table1%';
9、重启服务并验证
systemctl start httpd
systemctl start supervisord
systemctl start xxx-server.service
可以说现在服务运行正常了,现在就是慢慢导入历史数据了
后置步骤
导入历史数据
cd /mnt/backup/mysql
mysql -uroot -p1
use db1
source table1_1205-1209.sql;
source table2_1205-1209.sql;
...
...
...
一次生产环境mysql迁移操作(二)mysql空间释放(碎片整理)的更多相关文章
- 案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul
#案例分享 生产环境逐步迁移至k8s集群 - pod注册到consul #项目背景 多套业务系统, 所有节点注册到consul集群,方便统一管理 使用consul的dns功能, 所有节点hostnam ...
- MySQL - 日常操作二 备份还原
登录mysql的命令 # 格式: mysql -h 主机地址 -u 用户名 -p 用户密码 mysql -h 110. -P3306 -uroot -p mysql -uroot -p -S /dat ...
- Mysql基础(二):MySQL之存储引擎
目录 MySQL之存储引擎 1.MySQL存储引擎介绍 2.MySQL结构 3.MySQL存储引擎分类 4.存储引擎的使用 5.总结 MySQL之存储引擎 1.MySQL存储引擎介绍 MySQL中的数 ...
- MySQL权限系统(二). MySQL提供的特权 Privileges Provided by MySQL
MySQL provides privileges that apply in different contexts and at different levels of operation: Adm ...
- mysql二进制文件操作语法(mysql binary log operate statements)
开启 binary logs 功能 在 mysql 配置文件中配置 log-bin,重启 mysql my.cnf (on Linux/unix) or my.ini (on Windows) 例子: ...
- 生产环境实践:Cana实现MySQL到ES实时同步
注:由于文章篇幅有限,完整文档可扫下面二维码免费获取,更有深受好评的大数据实战精英+架构师好课等着你. 速点链接加入高手战队:http://www.dajiangtai.com/course/112. ...
- MySQL操作(二)MySQL配置文件
1.正常安装之后,有安装目录,我的直接安装在默认目录下,即 C:\Program Files\MySQL\MySQL Server 5.7 目录下 而数据存储在 C:\ProgramData\MySQ ...
- mysql迁移:ibd表空间迁移库表
问题描述:将一个库中的表迁移到另一个数据库或实例下,利用ibd文件物理迁移,可适用情况为数据库起不来,强制迁移数据文件恢复 将数据库中的zabbix数据迁移到另一个库中 frm:存储表的列信息 ibd ...
- MySQL - 日常操作三 mysql慢查询;
sql语句使用变量 use testsql; set @a=concat('my',weekday(curdate())); # 组合时间变量 set @sql := concat('CREATE T ...
- 生产环境中mysql数据库由主从关系切换为主主关系
目录 一.清除原从数据库数据及主从关系 1.1.关闭主从数据库原有的主从关系 1.2.清除从数据库原有数据 二.将主库上的数据备份到从库 2.1.备份主库数据到从库 2.2.在从库使用tsc.sql文 ...
随机推荐
- IT运维全面数字化|芯片设计行业领跑打造运维流程闭环
在当今数字化转型的浪潮中,科技行业正经历着前所未有的变革.随着5G.人工智能.物联网等新兴技术的快速发展,企业对于高效.智能的运营模式的需求日益迫切. 芯片设计公司作为科技产业链中的关键一环,不仅要在 ...
- PHP接入苹果支付
Ios苹果支付流程: 客户端先从苹果获取内购Id. 客户端将内购id,金额.用户id等传给服务端获取一个自己服务端生成的订单号. 客户端向苹果发起支付. 支付成功后,客户端从本地拿支付凭证.将支付凭证 ...
- 超大容量 | 瑞芯微RK3588J工业核心板新增16GB DDR + 128GB eMMC配置!
作为瑞芯微的金牌合作伙伴,创龙科技在2023年9月即推出搭载瑞芯微旗舰级处理器RK3588J的全国产工业核心板--SOM-TL3588. SOM-TL3588工业核心板是基于瑞芯微RK3588J/RK ...
- Nuxt3 的生命周期和钩子函数(十一)
title: Nuxt3 的生命周期和钩子函数(十一) date: 2024/7/5 updated: 2024/7/5 author: cmdragon excerpt: 摘要:本文详细介绍了Nux ...
- Pluto 轻松构建云应用:开发指南
开发者只需在代码中定义一些变量,Pluto 就能基于这些变量自动创建与管理必要的云资源组件,达到简化部署和管理云基础设施的目的,让开发者更容易使用云. 这里的云资源并非指 IaaS,而是指 BaaS. ...
- Curve 替换 Ceph 在网易云音乐的实践
Curve 块存储已在生产环境上线使用近三年,经受住了各种异常和极端场景的考验,性能和稳定性均超出核心业务需求预期 网易云音乐背景 网易云音乐是中国领先的在线音乐平台之一,为音乐爱好者提供互动的内容社 ...
- CGI、FastCGI和PHP-FPM区别和关系详解
在搭建 LAMP/LNMP 服务器时,会经常遇到 PHP-FPM.FastCGI和CGI 这几个概念.如果对它们一知半解,很难搭建出高性能的服务器.接下来我们就以图形方式,解释这些概念之间的关系. 1 ...
- SQL去重distinct方法解析
来源:https://www.cnblogs.com/lixuefang69/p/10420186.html SQL去重distinct方法解析 一 distinct 含义:distinct用来查询不 ...
- Vue3 之 reactive、ref、toRef、toRefs 使用与区别,源码分析详细注释
目录 reactive.ref.toRef.toRefs 使用与区别 reactive ref 作用及用法 toRef 作用及用法 toRefs 作用及用法 ref,toRef,toRefs 源码实现 ...
- 阅读翻译Mathematics for Machine Learning之2.5 Linear Independence
阅读翻译Mathematics for Machine Learning之2.5 Linear Independence 关于: 首次发表日期:2024-07-18 Mathematics for M ...