您当前的位置:首页 > 互联网教程

如何定时备份Mysql数据库

发布时间:2025-05-22 02:24:46    发布人:远客网络

如何定时备份Mysql数据库

一、如何定时备份Mysql数据库

数据库的自动备份,可以减轻维护者的工作量也便于系统恢复,对于比较重要的数据库,最好还是设置下自动备份。

打开navicat客户端,连上mysql后,双击左边你想要备份的数据库。点击“计划”,再点击“新建批处理作业”。

双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。

点击保存,弹出个命名对话框,给这个任务取个名字,点击“确定”

弹出的对话框,选择“计划”,再点击“新建”。

这里设置为从2014年1月24号起每天早上九点备份该数据库。如果想提高备份频率、或者设置备份截止日期,请点击“高级”。

高级选项可以把备份设置的更精细,比如这里设置的是在24小时内每隔2小时就备份一次。加上前面的基本设置,任务计划就是:从2014年1月24号开始,每天九点,每隔2小时备份一次,每天的备份都持续24小时。

最后,输入电脑密码就大功告成。

二、Navicat设定mysql实时备份计划任务问题

在开发过程中经常会遇到这样一个问题:

每天必须定时去执行一条sql语句或更新或删除或执行特定的sql语句。

MySQL的客户端工具Navicat for MySQL提供了计划任务的形式,可以很好地实现该功能,而且也确实可行,比如像定时备份就做的很好。

然而当在执行的语句中包含有中文的时候,却无法定时执行了。

那么就想到用mysql的event计划任务去实现:

要想执行event事件,就必须保证mysql的版本的5.1.6以上,否则会报如下错误:

1、要想保证能够执行event事件,就必须保证定时器是开启状态,默认为关闭状态

set GLOBAL event_scheduler= 1;

set GLOBAL event_scheduler= ON;

要查看当前是否已开启事件调度器,可执行如下SQL:

SHOW VARIABLES LIKE'event_scheduler'

2、如果原来存在该名字的任务计划则先删除

drop event if exist upload_to_sdmp;

<pre name="code" class="sql">CREATE EVENT [IF NOT EXISTS] event_name

[ON COMPLETION [NOT] PRESERVE]

AT TIMESTAMP [+ INTERVAL INTERVAL]

| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

quantity{YEAR| QUARTER| MONTH| DAY| HOUR| MINUTE|

WEEK| SECOND| YEAR_MONTH| DAY_HOUR| DAY_MINUTE|

DAY_SECOND| HOUR_MINUTE| HOUR_SECOND| MINUTE_SECOND}

--设置时区并设置计划事件调度器开启,也可以 event_scheduler= ON

set time_zone='+8:00';

set GLOBAL event_scheduler= 1;

--设置该事件使用或所属的数据库base数据库

#如果原来存在该名字的任务计划则先删除

drop event if exists upload_to_sdmp;

#设置分隔符为'$$',mysql默认的语句分隔符为';',这样在后续的 create到 end这段代码都会看成是一条语句来执行

#创建计划任务,设置第一次执行时间为'2014-07-30 10:00:00',并且每天执行一次

on schedule every 1 day starts timestamp'2014-07-30 10:00:00'

-- do something编写你的计划任务要做的事

INSERT aaa VALUES(3,'222');

INSERT aaa VALUES(2,'222');

#将语句分割符设置回';'

[ON COMPLETION [NOT] PRESERVE]

ALTER EVENT upload_to_sdmp DISABLE;

ALTER EVENT upload_to_sdmp ENABLE;

注意:真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler= ON;的语句

三、如何在linux下实现mysql数据库每天自动备份

1.在根目录下新建定时备份存储文件夹mkdir/mysql_backup

2.新建备份的脚本vim/root/mysql_backup.sh

3.在mysql_backup.sh中输入内容:

backupdir=/mysqlbackup time=` date+%Y%m%d%H`mysqldump-uroot-proot abc| gzip>$backupdir/abc$time.sql.gzfind$backupdir-name“abc*.sql.gz"-type f-mtime+5-exec rm{}\;>/dev/null 2>&1

——————————————————————————————

backupdir=备份文件存储文件夹time=获取当前时间年月日时(2014111417)2014年11月14日17点mysqldump备份数据库指令 abc要备份的数据库find$backupdir-name“abc*.sql.gz"-type f-mtime+5-exec rm{}\;>/dev/null 2>&1删除5天前的备份文件

先按一下键盘上的" esc"然后输入”:wq“

执行一下脚本,看根目录下的mysql_backup文件夹是否有.sql.gz后缀名的文件

写入每天的定时任务修改/etc/crontabvi/etc/crontab

02 4*** root/root/mysql_backup.sh

先按一下键盘上的" esc"然后输入”:wq“表示保存

service crond restart或/etc/rc.d/init.d/crond restart