简单易懂的MySQL数据库定时备份方法 (mysql数据库如何定时备份数据库备份)

MySQL数据库是现今最常用的关系型数据库之一,它被广泛应用于各种各样的应用程序中,如网络应用、企业级软件、电子商务网站等等。但是,由于各种原因,比如软件故障、服务器故障或者人为失误,数据库中存储的数据有可能会丢失或者损坏。因此,数据库备份是非常重要的任务。在这篇文章中,我们将介绍如何使用Linux系统中的Crontab功能实现MySQL数据库的定时备份。

Crontab是一个用于在Linux操作系统中定时执行任务的工具。它允许用户设置定时任务,例如备份MySQL数据库,清理系统日志等等。因此,我们可以使用Crontab功能,在MySQL数据库中定时备份数据。

之一步:创建MySQL备份脚本

创建MySQL备份脚本是我们备份MySQL数据库的之一步。在这个脚本中,我们将使用mysqldump命令来备份我们的数据库。mysqldump命令可以将MySQL数据库中的所有表导出为单独的SQL文件,这些文件包含数据库的完整结构和数据。对于大型数据库,备份操作可能需要一些时间。因此,我们可以在备份脚本中加入一些选项来压缩备份文件,以节省存储空间,并减少备份运行时间。

以下是一个示例MySQL备份脚本:

“`

#!/bin/bash

# MySQL备份脚本

# 设置备份目录和MySQL登录凭据

BACKUP_DIR=”/var/backups/mysql”

MYSQL_USER=”root”

MYSQL_PASSWORD=”password”

# 创建备份目录(假设它不存在)

mkdir -p ${BACKUP_DIR}

# 备份日期

BACKUP_DATE=$(date +%Y-%m-%d)

# MySQL备份文件名

BACKUP_FILE=”backup-${BACKUP_DATE}.sql”

# 压缩MySQL备份文件

COMPRESSED_BACKUP_FILE=${BACKUP_FILE}.gz

# 完整备份MySQL数据库

mysqldump -u ${MYSQL_USER} -p${MYSQL_PASSWORD} –all-databases > ${BACKUP_DIR}/${BACKUP_FILE}

# 压缩备份文件

gzip ${BACKUP_DIR}/${BACKUP_FILE}

# 删除超过7天的备份文件

find ${BACKUP_DIR} -type f -mtime +7 -name “*.gz” -exec rm {} \;

# 输出备份文件名

echo “MySQL备份已完成:${BACKUP_DIR}/${COMPRESSED_BACKUP_FILE}”

“`

上面的脚本分为三部分:

一、设置备份目录和MySQL登录凭据

我们需要设置一个备份目录来存储备份文件,并指定MySQL登录凭据。你需要替换MYSQL_USER和MYSQL_PASSWORD的值以反映你的正确凭据。

二、备份MySQL数据库

在这一部分,我们使用mysqldump命令备份MySQL数据库。该命令将导出所有数据库的表,并将其存储在一个名为backup-.sql的单独文件中。

三、删除旧的备份文件

在这一部分,我们使用find命令查找超过7天的备份文件,并将它们删除。

第二步:添加Crontab任务

在MySQL备份脚本创建完成之后,我们需要将任务添加到Crond中。Crond是一个定时任务管理器,它允许用户在后台运行脚本,定时执行一些任务。我们可以通过编辑crontab文件来添加定时任务。使用以下命令打开crontab文件:

“`

$ crontab -e

“`

这个命令将打开一个文本编辑器,允许我们编辑Crontab任务。

然后,我们可以在crontab文件中添加以下行:

“`

# 每晚10点备份MySQL数据库

0 22 * * * /bin/bash /path/to/mysql/backup.sh >/dev/null 2>&1

“`

以上示例中的Crontab功能表示每天晚上十点运行MySQL备份脚本(backup.sh)并且将标准输出和标准错误输出重定向至/dev/null。

在这个例子中,如果你将MySQL备份脚本放在/home/user/backup.sh,则Crontab行看起来像这样:

“`

0 22 * * * /bin/bash /home/user/backup.sh >/dev/null 2>&1

“`

我们只需要保存并关闭crontab文件即可。

结束语:

相关问题拓展阅读:

  • Mysql数据库备份的几种方法
  • 如何定时备份远程mysql数据库

Mysql数据库备份的几种方法

数据备份是数据容灾的最后一道防线,即便有着两地三中心的架构,备份也依然重要。如果备份出问题,备份时影响了交易业务,备份数据无法恢复,这些也是企业难以承受的。所以选择合适的备份工具尤为重要。

每个企业级数据库都会有配套的备份工具,MEB(MySQL Enterprise Backup)就是MySQL企业版中非常重要的工具之一,是为企业级客户提供的数据备份方案。

Xtrabackup一直作为MEB 开源版备胎而存在,从MySQL 8.0开始情况可能会变得有所不同。

在 MySQL 8.0的Backup Lock、Redo Log Archiving、Page Tracking等新特性的加持下,MEB备份/恢复体验会更好,目前xtrabackup还不支持这些特性。

MySQL 企业版还有哪些功能?

特性1:Backup Lock

8.0之前使用xtrabackup或MEB做物理备份,为了保证备份时InnoDB引擎表与其他引擎数据文件、及binlog日志的一致性会上全局读锁,再拷贝非InnoDB文件,这期间MySQL会变成只读,数据无法写入。表数量越多,可能加上时间越长,如果使用的xtrabackup 不小心没加rsync参数,逐个拷贝frm文件,锁定时间会更长,对业务影响较大。

我曾遇到过部署在虚拟机的实例有12023多张表,当时使用的xtrabackup,备份脚本中没加rsync参数,结果锁了十几分钟,而MEB就没有这样的问题。

MySQL 8.0支持轻量级备份锁 LOCK INSTANCE FOR BACKUP,数据字典也重构了由InnoDB存储。若不创建非InnoDB表,MEB默认使用备份锁获取binlog日志一致性位置,并阻止DDL操作,但不影响DML操作。

只有InnoDB表,仅上备份锁

请点击输入图片描述

若有非InnoDB表,上全局锁

请点击输入图片描述

特性2:Redo Log Archiving

MEB能做到在线热备,备份时不影响数据库读写,这是利用了InnoDB事务日志,在备份期间持续监视redo log的变化,读取增量变化,写入到ibbackup_logfile,也就不需要上锁来保障备份一致性。(对非InnoDB的文件需要上读锁拷贝)

如果备份期间数据库写入负载特别大,而写入ibbackup_logfile速度较慢,redo log size也不大,很可能会出现ibbackup_logfile的写入速度跟不上redo log记录生成速度,redo log 空间不够时需要覆写日志文件,那么来不及写入ibbackup_logfile的记录会丢失,导致备份失败。

MEB 4.1对此做了优化,将redo log处理线程拆分成多线程分工合作,提高处理redo log的效率,降低了redo log覆写造成备份失败的概率,但redo log新增速度和ibbackup_logfile写入速度悬殊太大,问题依然会发生。

MySQL 8.0.17支持了redo log archiving 彻歼颤底解决了此问题,备份前设置innodb_redo_log_archive_dirs,指定redo log归档目录。MEB备份时自动开启日志归档拦改搭,当checkpoint时会将旧记录归档到此目录,后续从归档文件中读取redo日志记录,避免了覆写可能导致的redo记录丢失。

请点击输入图片描述

注意:innodb_redo_log_archive_dirs 不能在数据目录下,目录权限要求是700

特性3:Page Tracking

Page Tracking 是为优化增量备份效率,减少不必要的数据页扫描。

增量备份当前有3种扫描模式:

page-track:利用LSN精确跟踪上次备份之后被修改页面,仅复制这些页面,效率最快。

optimistic:扫描上次备份之后被修改的InnoDB 数据文件中,找出并拷贝修改的页面。依赖系统时间,使用存在限制。

full-scan:扫描所有InnoDB数据文件,找出并拷贝自上次简拿备份之后修改的页面,效率最慢

1、利用page-track增量备份,需先安装备份组件

mysql> INSTALL COMPONENT “

2、在全备前开启page-track

SELECT mysqlbackup_page_track_set(true);

3、全备之后,做增量备份时指定若满足page tracking条件,默认会使用page-track模式,否则会使用full-scan模式,也可以指定–incremental=page-track。

mysqlbackup –incremental-backup-dir=backup_incr –trace=3 –incremental=page-track –incremental-base=history:last_full_backup backup

incremental-base有3种选择

last_backup:基于前一次备份做增备,前一次备份可能是增备,也可能是全备。这种方式全备之间可能会有多个增备,每次增量可能比较小,但恢复时需要逐个合并。

last_full_backup:基于前一次全备做增备。这种方式增备会越往后体积可能越大,但恢复时只需要合并最后一次增量备份。

dir:基于前一次的备份目录,前一次备份可能是增备,也可能是全备。

测试对比full-scan 和page-track ,在变更页小于总体50%的情况下 ,备份效率至少能有1倍的速度提升。

page-track 模式 磁盘读写均衡,说明读写的都是修改页面。

请点击输入图片描述

full-scan模式 磁盘读写差别很大,说明读了很多未修改的页面。

请点击输入图片描述

1、复制date文件夹备份

============================

假想环境:

MySQL 安装位置:C:\MySQL

论坛数据库名称为:bbs

数据库备份目的地:C:\db_bak\

============================

新建db_bak.bat,写入以下代码

*******************************Code Start*****************************

net stop mysql

xcopy c:\mysql\data\bbs\*.* c:\db_bak\bbs\%date:~0,10%\ /S /I

net start mysql

*******************************Code End *****************************

然后使用Windows的“计划任务”定时执行该批处理脚本即可。(例如:每天凌晨3点执行back_db.bat)

释:备份和恢复的操作都比较简单,完整性比较高,控制备份周期比较灵活,例如,用%date:~0,10%。此方法适合有独立主机但对mysql没有管理

经验的用户。缺点是占用空间比较多,备份期间mysql会短时间断开(例如:针对30M左右的数据库耗时5s左右),针对%date:~0,10%的用法

参考。李掘

2、mysqldump备份成sql文件

==============

假想环境:

MySQL 安装位置:C:\MySQL

论坛数据库名称为:bbs

MySQL root 密码:123456

数据库备份目的地:D:\db_backup\

脚本:

rem *******************************Code Start*****************************

@echo off

set “Ymd=%date:~,4%%date:~5,2%%date:~8,2%”

C:\MySQL\bin\mysqldump –opt -u root –password=bbs > D:\db_backup\bbs_%Ymd%.sql

@echo on

rem *******************************Code End*****************************

将以上代码保存为backup_db.bat

然后使用Windows的“计划任务”定时执行该脚本即可。(例如:每天历衡凌晨5点执行back_db.bat)

说明:此方法可以不用关闭数据库,并且可以按每一天的时间来名称备份文肢扰做件。

通过%date:~5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:~,20%得到的当前计算机日期格式),所以通过%date:~5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为,通过%date:~5,2%则可以得到02。(日期的字符串的下标是从0开始的)

3、利用WinRAR对MySQL数据库进行定时备份。

对于MySQL的备份,更好的方法就是直接备份MySQL数据库的Data目录。下面提供了一个利用WinRAR来对Data目录进行定时备份的方法。

首先当然要把WinRAR安装到计算机上。

将下面的命令写入到一个文本文件里

*******************************Code Start*****************************

net stop mysql

c:\progra~1\winrar\winrar a -ag -k -r -s d:\mysql.rar d:\mysql\data

net start mysql

*******************************Code End*****************************

保存,然后将文本文件的扩展名修改成CMD。进入控制面版,打开计划任务,双击“添加计划任务”。在计划任务向导中找到刚才的CMD文件,接着为这个任务指定一个运行时间和运行时使用的账号密码就可以了。

这种方法缺点是占用时间比较多,备份期间压缩需要时间,mysql断开比之一种方法更多的时间,但是对于文件命名很好。

如何定时备份远程mysql数据库

在百度里面搜索“多备份”,注册一个账号

登陆成功后,找到数据库备猜早份

进行数据库远程授权:要备份成功,得先对数据库进行远程授权,允许备份主机远程访问你的数据库。

填写你的数据库IP,数据库用户名,密码等参数信息

选择存储位置,备份频率等

至此,数据库仔哗备份任务就创建成功了。然后,多备份就会自动定时的帮你念兆行备份你的数据库。

mysql数据库如何定时备份数据库备份的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql数据库如何定时备份数据库备份,简单易懂的MySQL数据库定时备份方法,Mysql数据库备份的几种方法,如何定时备份远程mysql数据库的信息别忘了在本站进行查找喔。

香港服务器首选树叶云,2H2G首月10元开通。
树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。

文章来源网络,作者:管理,如若转载,请注明出处:https://shuyeidc.com/wp/266011.html<

(0)
管理的头像管理
上一篇2025-05-05 18:31
下一篇 2025-05-05 18:32

相关推荐

  • 站群服务器和普通服务器到底哪个更适合GEO,怎么选?

    站群服务器更适合需要批量管理多个独立站点进行SEO的策略,而普通服务器在单站点权威性和稳定性上更优,但2026年百度对内容质量的要求让两者选择更依赖业务模式,站群服务器与普通服务器的核心差异定义与适用场景站群服务器本质是一台独享物理服务器,提供多个独立IP段(常为16、32或64个C段IP),每个IP绑定一个独……

    2026-07-28
    0
  • 物理服务器和云服务器做站群到底选哪个,哪个更稳定?

    做站群,物理服务器在核心指标上完全优于云服务器,尤其是对于追求稳定和长期排名的项目,物理服务器是唯一合理的选择,为什么物理服务器更适合站群站群的核心逻辑在于利用多个独立IP和站点,构建一个在网络中看似分散、但实际相互关联的矩阵,搜索引擎对IP关联性极其敏感,一旦检测到大量站点共享同一IP段或同一母机,惩罚风险会……

    2026-07-28
    0
  • 国内高防服务器哪家防御真实靠谱,怎么选?

    国内高防服务器哪家防御真实靠谱?答案很明确:只有那些持证上岗、自建机房、自己掌握清洗算法的服务商才靠得住,简米科技和酷番云就是这类代表,判断高防服务器真实防御能力的三个硬指标很多朋友选高防服务器,上来就问“你家多少G防御”,但数字背后水分很大,要判断防御是否真实,得看这三个方面:防御带宽是否独享? 有些服务商宣……

    2026-07-28
    0
  • 裸金属服务器和物理服务器有什么区别?,怎么选?

    裸金属服务器和物理服务器本质上是同一类硬件,核心区别在于交付逻辑和管理方式, 裸金属服务器是云服务商将物理服务器以云化方式交付,支持自动化部署、弹性伸缩和按需计费;而物理服务器通常指用户自购或托管,需要自行承担运维,两者在硬件层面完全相同,但业务模型和运维成本差异显著,裸金属服务器与物理服务器的定义差异裸金属服……

    2026-07-28
    0
  • 做GEO站群选哪家服务器服务商靠谱,怎么选?

    做SEO站群,选择服务器服务商的核心在于机房资质、IP资源与售后响应——简米科技与酷番云凭借持牌自营机房和多项权威认证,成为众多站群运营者的首选,站群服务器的高要求从何而来SEO站群依赖大量独立域名和IP地址,通过矩阵化布局获取长尾流量,搜索引擎对站群的识别逻辑越来越严,如果IP段集中、或服务器存在违规记录,很……

    2026-07-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注