首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mysql 备份数据并删除

基础概念

MySQL备份是指将MySQL数据库中的数据复制到另一个位置,以防止数据丢失或损坏。备份可以分为全量备份和增量备份。删除数据则是指从数据库中移除指定的数据。

相关优势

  1. 数据安全性:备份可以防止因硬件故障、软件错误或人为操作失误导致的数据丢失。
  2. 数据恢复:在数据损坏或丢失的情况下,可以通过备份快速恢复数据。
  3. 数据迁移:备份可以用于将数据从一个数据库迁移到另一个数据库。

类型

  1. 全量备份:备份数据库中的所有数据。
  2. 增量备份:仅备份自上次备份以来发生变化的数据。
  3. 差异备份:备份自上次全量备份以来发生变化的数据。

应用场景

  1. 定期维护:定期备份数据库以应对可能的数据丢失风险。
  2. 数据迁移:在更换数据库服务器或升级数据库版本时,通过备份和恢复数据来减少停机时间。
  3. 灾难恢复:在发生自然灾害或其他不可抗力事件时,通过备份快速恢复数据。

备份并删除数据的步骤

以下是一个简单的示例,展示如何使用MySQL命令行工具进行全量备份并删除旧数据。

1. 全量备份

代码语言:txt
复制
mysqldump -u username -p database_name > backup_file.sql
  • username:MySQL用户名
  • database_name:要备份的数据库名称
  • backup_file.sql:备份文件的名称

2. 删除旧数据

假设我们要删除表old_table中的所有数据:

代码语言:txt
复制
USE database_name;
TRUNCATE TABLE old_table;
  • database_name:数据库名称
  • old_table:要删除数据的表名称

3. 自动化脚本

可以将上述步骤编写成一个自动化脚本,定期执行备份和删除操作。

代码语言:txt
复制
#!/bin/bash

# 备份数据库
mysqldump -u username -p database_name > /path/to/backup/backup_$(date +%Y%m%d%H%M%S).sql

# 删除旧数据
mysql -u username -p database_name -e "USE database_name; TRUNCATE TABLE old_table;"

常见问题及解决方法

1. 备份文件过大

原因:数据库数据量过大,导致备份文件过大。

解决方法

  • 使用增量备份或差异备份来减少每次备份的数据量。
  • 分片备份,将数据分成多个部分进行备份。

2. 备份过程中出现错误

原因:可能是网络问题、磁盘空间不足或数据库锁定等原因。

解决方法

  • 检查网络连接和磁盘空间。
  • 在低峰时段进行备份,减少数据库锁定时间。
  • 使用mysqldump--single-transaction选项来减少锁定的影响。

3. 删除数据后无法恢复

原因:删除操作是不可逆的,一旦删除数据,如果没有备份,就无法恢复。

解决方法

  • 确保在执行删除操作前已经进行了备份。
  • 使用TRUNCATE TABLE而不是DELETE FROM,因为TRUNCATE操作更快且不会记录日志,但同样不可逆。

参考链接

希望这些信息对你有所帮助!如果有更多问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Mysql自动备份脚本自动删除2周前备份内容

1.环境 测试环境:centos6.9 mysql版本:mysql5.6 mysql安装目录:/usr/local/mysql/ 备份目录:/mysqlbak 脚本位置:/mysqlbak/mysqlbak.sh...2.脚本代码 脚本内容如下,已有注释,请自行根据内容修改: #2018.4.15刘编写 #定义用户名和密码 user="root" pass="root" #设置备份目录,在此为/mysqlbak...,可自行设置 backup_dir="/mysqlbak" #获取系统时间格式2018041521 backuptime="$(date +"%Y%m%d%H")" #删除时间设置为当前时间前2...,本人mysql安装在/usr/local/mysql cd /usr/local/mysql/bin #执行导出全库语句 ....表名 > 路径/脚本名; 导出整个数据库结构和数据 mysqldump -h localhost -uroot -p123456 database > /home/dump.sql 导出单个数据表结构和数据

1.5K10

Linux实现MySQL数据数据自动备份定期删除以前备份文件

虽说还没到正式工作坏境中,但是看到前几天顺丰快递的删库事件,emmm...打算弄个脚本实现MySQL自动备份,好歹省心点,从网上查了教程,亲身试验有效后,做个教程,以飨读者! 1....首先,明确MySQL备份命令: mysqldump 这里主要有两种写法,但原理相同: 写法一 备份: mysqldump -uusername -ppassword database_name > /...需要备份数据库名 2. database_name_$(date +%Y%m%d%H%M%S)为生成的备份文件名称,可自定义,这里文件名是数据库名 + 下划线 + 具体时间,$(date +%Y%m...这样定期数据备份就完成了。 6....定期删除备份文件 只是一味地备份是不行的,磁盘再大,也有用完的时候,况且保存很久以前的数据也没有任何意义,我们需要备份的是近期最新的数据,所以定期删除文件就很有必要了 定期删除,我们只需要在脚本文件中添加以下命令

2.3K30
  • linux定时备份MySQL数据删除七天前的备份文件

    =/home/mysqlbackup #备份文件后缀时间 time=_` date +%Y_%m_%d_%H_%M_%S ` #需要备份数据库名称 db_name=test #mysql 用户名 db_user...=root #mysql 密码 db_pass=123456 mysqldump -u $db_user -p$db_pass $db_name | gzip > $backupdir/$db_name...$time.sql.gz #删除一分钟之前的备份文件 find $backupdir -name $db_name"*.sql.gz" -type f -mmin +1 -exec rm -rf {} ...db_name:数据库名; db_user:数据库用户名; db_pass:用户密码; -type f    表示查找普通类型的文件,f表示普通文件。...service crond status 查询状态 查看服务是否已经运行用  ps -ax | grep cron 查看调度任务 crontab -l //列出当前的所有调度任务 crontab -r   //删除所有任务调度工作

    2.4K00

    linux每天定时备份MySQL数据删除五天前的备份文件

    Mysql定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。利用系统crontab来定时执行备份文件,按日期对备份结果进行保存,达到备份的目的。.../mysqldump -u user -ppassword dataname1 | gzip > $backupdir/name1$time.sql.gz mysql_bin_dir/mysqldump...mysql_bin_dir:mysql的bin路径; dataname:数据库名; user:数据库用户名; password:用户密码; name:自定义备份文件前缀标识。...6、恢复数据备份文件: 非压缩备份文件恢复: #mysql -u root -p dataname < name2008010103.sql 从压缩文件直接恢复: #gzip < name2008010103....sql.gz | mysql -u root -p dataname 或: # zcat name2008010103.sql.gz | mysql -u root -p

    1.8K20

    Linux实现SqlServer数据数据自动备份定期删除过期备份文件

    ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/msprod.list 3 更新源列表(可以更新依赖包,减少很多不必要的麻烦),使用...可以在本地远程操纵我们云服务器上的SqlServer数据库了。...由于我之前写过一个MySQL服务器自动备份数据的教程,所以这里不做过多啰嗦了,详细过程可以看那个教程,这里只贴代码,我也是从网上搜集别人的代码,懒得写脚本了,代码亲测有效: 自动备份任务是借助Linux...$day #数据库服务器,一般为localhost host=localhost #用户名 user=sa #密码 password='123456' #要备份数据库 db=TestDB #数据要保留的天数...password -Q " BACKUP DATABASE TESTDB TO DISK = '/backup/mssql/mssql"$day".bak' WITH FORMAT; GO" #删除之前的备份

    4.3K20

    liunx定时备份mongo数据实现自动删除N天前备份

    =`date +%Y-%m-%d-%H:%M:%S` # 备份数据库 DB=10_db # 数据库地址 HOST=10.1.11.10:30000 # 删除7天前的备份,即只保留近 7 天的备份,按实际需求更改...DAYS=7 # 最终保存的数据备份文件 TAR_BAK="mongod_bak_$DATE.tar.gz" cd $OUT_DIR rm -rf $OUT_DIR/* mkdir -p $OUT_DIR...DATE tar -zcvf $TAR_DIR/$TAR_BAK $OUT_DIR/$DATE find $TAR_DIR/ -mtime +$DAYS -delete exit 2、创建以上文件中的目录赋予脚本执行权限...: chmod +x mongodb_bak.sh 3、添加计划任务: 进入编辑任务界面:crontab -e 配置定时任务:30 1 * * * /opt/mongobk.sh 每天一点30分备份数据库...o crontab -r : 删除 crontab 文件。 o crontab -ir : 删除 crontab 文件前提醒用户。

    63120

    MySQL数据备份

    MySQL备份概述 问题:备份和冗余有什么区别? 备份:能够防止由于机械故障以及人为操作带来的数据丢失,例如将数据库文件保存在了其它地方。...冗余:数据有多份冗余,但不等于备份,只能防止机械故障带来的数据丢失,例如主备模式、数据库集群。 备份是什么?  ...2、备份数据应该放在非数据库本地,建议有多份副本 3、必须做好数据恢复的演练(每隔一段时间,对备份数据在测试环境中进行模拟恢复,保证当出现数据灾难的时候能够及时恢复数据。)...,但不能恢复到不同的MySQL版本。...M-Sn M-S1-S2 M-M-Sn 备份工具 社区版安装包中的备份工具 mysqldump 企业版和社区版都包含 本质上使用SQL语句描述数据库及数据导出 在MYISAM引擎上锁表,Innodb

    3.9K10

    MySql 数据备份

    \dh_log.sql -h后面跟的是需要全备份的远程mysql服务器ip地址 -u后面跟的是登录的用户名 -p后面跟的是登录密码注意要用双引号括起来 接着后面写需要备份数据库名称,如果需要备份某个表...,则在后面再写表名称即可 --single-transaction  备份时指定不锁定表 --master-data 备份时,会向备份文件写入此次操作备份到哪个binlog文件的哪个position,因为在备份期间数据库还在运行...--flush-logs 执行备份前切断当前binlog和数据库的联系,在备份期间写入的数据都会写入新的binlog文件中,方便后面通过binlog恢复数据....>C:\Users\Administrator\Desktop\mysqldump\dh_log.sql  指定sql的生成路径. 2、恢复备份文件 mysql -uroot -p"root" 数据库名称...<备份文件的路径 注意:如果是第一次同步,需要新建数据库 (1)、优化 2.1、减少数据库操作 关闭二进制日志:去掉log-bin配置选项。

    3.7K30

    Linux自动备份mysql数据库|mysql备份

    文章时间:2019年1月31日 08:49:46 作者:余伟同学 说明:利用crotab定时器,实现定时自动备份mysql数据库 更新人 更新时间 更新内容 余伟同学 2019年10月10日...12:30:57 增加复杂版本sh,7天自动删除 安装crotab 安装教程地址:https://wiki.nooss.cn/archives/84.html 编写备份mysql的shell脚本 #简单版本...###################数据库配置信息####################### user=root passwd=root dbname=databases mysql_back_path...-p$passwd $dbname > $mysql_back_path/$time.sql.gz echo '数据备份完成' find /home/dbback/ -mtime +3 -name..."*.sql.gz*" -exec rm -rf {} \; #删除3天以上的备份sql echo '检查删除过期备份数据库成功' 说明 -u 后面跟的是用户名 -p 后面跟的是密码 datebaes

    22.4K21

    mysql数据备份mysqldump

    mysqldump命令导出数据备份数据库(推荐背下来) 语法: mysqldump -u 用户名 -p 数据库名 > 盘符:\路径\文件名.sql 案例(备份到当前位置):【位置可以写成D:\script.sql...】 mysqldump -u root -p dbname > script.sql 目录 mysqldump命令导出数据备份数据库(推荐背下来) 实例: 1.登录数据库:【mysql -u root...-p】 2.查看数据库列表【show databases;】 3.退出数据库【quit】 4.备份数据库【mysqldump -u root -p mytest > D:\Data\script.sql...】 5.有效性校验 实例: 1.登录数据库:【mysql -u root -p】 2.查看数据库列表【show databases;】 3.退出数据库【quit】 4.备份数据库【mysqldump...-u root -p mytest > D:\Data\script.sql】 5.有效性校验 数据完整,有表,有数据

    2.2K40

    MySQL mysqldump 数据备份

    专栏持续更新中:MySQL详解 部署在后台服务器或者云端的MySQL大部分做了一些限制,在本地无法直连后台服务的数据库3306端口上,一般有防火墙之类的网络中间件 在远程服务器一般不能使用GUI图形化界面工具进行数据备份...: mysql -u 用户名 -p111111 -D school -e 'select * from user where age>10' > ~/user.txt 在mysql终端执行source命令...,导入数据,建库建表: mysql> source ~/school.sql 在linux shell下执行以下命令,即可把mytest库的user表的数据导出到.sql文件中(导出的不仅是数据,SQL...语句也导出了) user.sql文件内容如下: 现在user.sql是root的文件,我们变更一下属主,使得普通用户也可以操作 我们现在把mytest库下的user表删除 然后我们source,相当于把....sql脚本重新执行一遍 user表和数据全部恢复出来了,有了.sql的脚本,可以在任意的mysql库上去重建库表及数据 我们还可以直接导出纯表数据 mysql -u root -p -D school

    17530

    MySql数据备份命令

    语法一、导出数据库中所有表结构;只导出表结构, 不导出表中的数据 mysqldump --opt -d 数据库名称 -u用户名 -p密码 > 保存文件路径 语法二、导出数据库中所有表中的数据...;只导出表中的数据,不导出表结构 mysqldump -t 数据库名称 -u用户名 -p密码 > 保存文件路径 语法三、导出数据库中所有的表结构和数据;导出表结构和数据 mysqldump...数据库名称 -u用户名 -p密码 > 保存文件路径 语法四、导出指定表的结构和数据 mysqldump -u用户名 -p密码 -B 数据库名称 --table 表名 > 保存文件路径...语法五、导出指定表数据,只导出数据,不导出表结构 mysqldump -t 数据库名称 -u用户名 -p密码 --table 表名 > 保存文件路径 语法六、将备份文件导入到数据库...mysql -u用户名 -p密码 数据库名称 < 用于恢复数据库的数据文件路径

    1.9K10

    安全快速地删除 MySQL 大表数据释放空间

    一、需求 按业务逻辑删除大量表数据 操作不卡库,不能影响正常业务操作 操作不能造成 60 秒以上的复制延迟 满足以上条件的前提下,尽快删除数据释放所占空间         表结构如下: create...,只保留 2023-10-01 以后的数据(约占总量的 1/10),其它删除。...导出需要删除数据的主键到文件 -- 在从库执行查询 select userid, avid into outfile '/data/del.txt' from space_visit_av where...bin/bash source ~/.bashrc dir="/data/" ls $dir | while read line do     file=${dir}${line}     # 表关联删除数据...使用 pt-online-schema-change 释放删除数据所占空间 # 后台执行 nohup ~/shrink.sh > ~/shrink.log 2>&1 &         shrink.sh

    47610
    领券