Navicat设定mysql实时备份计划任务问题
发布网友
发布时间:2022-04-21 19:29
我来回答
共3个回答
懂视网
时间:2022-04-29 23:23
中的
[mysqld]
添加 event_scheduler=ON
2.如果客户端远程访问,确认是否授权用户:
ERROR 1044: Access denied for user: ‘@127.0.0.1 ‘ to database ‘mysql‘
说明你没有将权限下放到远端连接帐户上,由于mysql的安全性在不断的提高,权限设置默认是拒绝的,你必须自己开放权限。
在服务器上用mysql -h 192.168.0.1 -u root -p mysql命令登录mysql数据库
然后用grant命令下放权限。
GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY ‘root-password‘ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO root@127.0.0.1 IDENTIFIED BY ‘root-password‘ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO root@‘%‘ IDENTIFIED BY ‘root-password‘ WITH GRANT OPTION;
例如:
GRANT ALL PRIVILEGES ON *.* TO root@‘%‘ identified by ‘123456‘
注意:自己根据情况修改以上命令中的 “用户”“ip地址”“密码”。
完成此两步骤后可以使用客户端进行任务的创建了,这里仅列出创建每天执行一次的定时任务,当前时间+6小时后开启,直接上代码:
CREATE EVENT `EVENT_EMULATE_STATISTICS`
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR
ON COMPLETION NOT PRESERVE
ENABLE
DO
CREATE TABLE IF NOT EXISTS mooc_sf_emulate_statistics_day
(
id BIGINT NOT NULL,
emulate_id BIGINT,
learn_day_number INTEGER,
create_time DATETIME,
modify_time DATETIME,
delete_flag BIT,
PRIMARY KEY (id)
);
通过设定全局变量event_scheduler 的值即可动态的控制事件调度器是否启用。
查看是否event_scheduler开启 mysql> SHOW VARIABLES LIKE ‘%event%‘;
设置开启 mysql> SET GLOBAL event_scheduler=ON;
详细功能参考开源中国博客:http://www.oschina.net/question/4873_20927
navicat下mysql任务计划
标签:
热心网友
时间:2022-04-29 20:31
在开发过程中经常会遇到这样一个问题:
每天必须定时去执行一条sql语句 或更新或删除或执行特定的sql语句。
MySQL的客户端工具Navicat for MySQL提供了计划任务的形式,可以很好地实现该功能,而且也确实可行,比如像定时备份就做的很好。
然而当在执行的语句中包含有中文的时候,却无法定时执行了。
那么就想到用mysql的event计划任务去实现:
要想执行event事件,就必须保证mysql的版本的5.1.6以上,否则会报如下错误:
1、要想保证能够执行event事件,就必须保证定时器是开启状态,默认为关闭状态
set GLOBAL event_scheler = 1;
或
set GLOBAL event_scheler = ON;
要查看当前是否已开启事件调度器,可执行如下SQL:
SHOW VARIABLES LIKE 'event_scheler'
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 schele
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE]
[COMMENT 'comment']
DO sql_statement;
schele:
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_scheler = ON
[sql] view plain copy print?
set time_zone = '+8:00';
set GLOBAL event_scheler = 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 schele every 1 day starts timestamp '2014-07-30 10:00:00'
#on schele 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 schele]
[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_scheler = ON; 的语句
热心网友
时间:2022-04-29 21:49
005错误是账户名字或者密码不对,和别的没有关系,看看是不是啥马虎填错了.也有可能是密码对但是修改过默认账户名