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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Navicat设定mysql实时备份计划任务问题相关的知识,希望对你有一定的参考价值。

我服务器是win2012,在使用navicat做计划任务时报如图错误,以下百度出来方法都试了1、安全设置->本地策略->安全选项",再到右边的框内找到:“帐户:使用空白密码的本地帐户只允许进行控制台登录”改为“停用”,就可以了。2、看看组策略的用户权利指派里,禁止用户访问的几个项目有没有对应的名字! 3、选择计算机配置->windows设置->安全设置->本地策略->用户权利指派 双击右边的 从网络访问此计算机 把需要的用户名添加到列表。4、选择计算机配置->Windows设置->安全设定->本地策略->安全选项 双击右边的 域控制器:允许服务器操作员计划任务,打开启用5、请您试着将“拒绝从网络访问这台计算机”策略中的Everyone删除,并点击[应用]和[确认]按钮。再次配置计划任务看是不是还会出现上述错误提示信息提示但还是不行。还是报错,请高手指教。

在开发过程中经常会遇到这样一个问题:
每天必须定时去执行一条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;

3、执行事件
event事件语法格式:

[sql] view plain copy print?
<pre name="code" class="sql">CREATE EVENT [IF NOT EXISTS] event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;

schedule:
AT TIMESTAMP [+ INTERVAL INTERVAL]
| EVERY INTERVAL [STARTS TIMESTAMP] [ENDS TIMESTAMP]

INTERVAL:
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

[sql] view plain copy print?
set time_zone = '+8:00';
set GLOBAL event_scheduler = 1;

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

# 如果原来存在该名字的任务计划则先删除
drop event if exists upload_to_sdmp;

# 设置分隔符为 '$$' ,mysql默认的语句分隔符为 ';' ,这样在后续的 create 到 end 这段代码都会看成是一条语句来执行
DELIMITER $$
# 创建计划任务,设置第一次执行时间为'2014-07-30 10:00:00',并且每天执行一次
create event upload_to_sdmp
on schedule every 1 day starts timestamp '2014-07-30 10:00:00'
#on schedule every 1 SECOND
do

# 开始该计划任务要做的事
begin

-- do something 编写你的计划任务要做的事
INSERT aaa VALUES (3,'222');
INSERT aaa VALUES (2,'222');

-- 结束计划任务
end $$

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

4、查询事件的运行状态

修改事件语法格式:

[sql] view plain copy print?
ALTER EVENT event_name
[ON SCHEDULE schedule]
[RENAME TO new_event_name]
[ON COMPLETION [NOT] PRESERVE]
[COMMENT 'comment']
[ENABLE | DISABLE]
[DO sql_statement]

5、关闭\打开事件:

[sql] view plain copy print?
关闭事件:
ALTER EVENT upload_to_sdmp DISABLE;
[sql] view plain copy print?
开启事件:
ALTER EVENT upload_to_sdmp ENABLE;

6、查询事件是否开启

[sql] view plain copy print?
select * from mysql.event

注意:真实的开发环境中,会遇到mysql服务重启或者断电的情况,此时则会出现事件调度器被关闭的情况,所有事件都不在起作用,要想解决这个办法,则需要在mysql.ini文件中加入event_scheduler = ON; 的语句
参考技术A 005错误是账户名字或者密码不对,和别的没有关系,看看是不是啥马虎填错了.也有可能是密码对但是修改过默认账户名

Navicat 进行数据库自动备份

今天经历一次数据库丢库事件,顿时觉得定时备份数据库很重要。

但是每天自己手动备份实在是太麻烦了,于是乎,想到用计划任务进行每天定时自动备份。

发现Navicat自带就有备份  还可以直接计划任务,贼方便。下面上方法。

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

技术图片

 

 2.现在左边选择你要备份的数据库,然后在右侧双击上面的可用任务,它就会到下面的列表里去,代表你选择了这个任务。技术图片

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

技术图片

4.点击“设置”计划任务。

技术图片

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

技术图片

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

技术图片

 

以上是关于Navicat设定mysql实时备份计划任务问题的主要内容,如果未能解决你的问题,请参考以下文章

怎么用navicat自动备份mysql数据库

怎么用navicat自动备份mysql数据库

怎么用navicat自动备份mysql数据库

Navicat 进行数据库自动备份

使用Navicat进行数据库自动备份

使用Navicat定时备份mysql数据库和创建报表并邮件自动发送