mysql自动定期清理日志文件

mysql自动定期清理日志文件,第1张

方法一: 修改配置文件

重启mysql生效

方法二:修改mysql变量

该方法在下次启动mysql后失效,也就是说重启mysql后expire_logs_days的值又还原为0了,

该方法的好处在于不用重启mysql就可以生效

CentOS 7

mysql8镜像

备份方式:mysqldump 命令

mysql_backup.sh 脚本,本例将其放置在 /home/test/db_bk 文件夹

执行以上脚本后,会在挂在路径下生成 “/backup/日期” 的文件夹,文件夹内存着备份的 sql 文件,当需要恢复备份时,执行对应的 sql 文件即可。

Linux 内置的 cron 进程可以用于开启定时任务

cron进程简介

进入 cron 编辑器:

编辑cron命令:

可以通过以下命令,查看定时任务情况:

执行以上脚本后,会在挂在路径下生成 “/backup/日期” 的文件夹,文件夹内存着备份的 sql 文件,当需要恢复备份时,执行对应的 sql 文件即可。

可以把备份的 sql 文件导出,然后用 navicat 之类的工具执行 sql 文件即可。

1.3.2.1

*注意: 需要设置字符集,否则会乱码,mysql -u [用户] -p --default-character-set=utf8mb4

1.3.2.2

使用event_scheduler实现,这是个事件的自动调度机制,会定期执行事件中定义的语句;

1 配置开启event scheduler

配置my.ini文件 中加上 event_scheduler = 1

重启mysql服务

验证event_scheduler是否已经开启: show variables like '%event%' #值为 ON 表明已开启

2 创建event

drop event event_test_a

CREATE EVENT event_test_a

ON SCHEDULE EVERY 1 day STARTS date_add(concat(current_date(), ' 00:00:00'), interval 0 second)

ON COMPLETION PRESERVE ENABLE

DO

delete from dbname.`user` where (`name`, `time` ) =

(

select `name`, max_time from

(select `name`, max(`time`) max_time from dbname.`user` group by 1) t

where max_time <date_add(current_timestamp, interval -2 month)

)

#说明:

ON SCHEDULE EVERY 1 day 指定循环间隔为每天执行

STARTS date_add(concat(current_date(), ' 23:59:00'), interval 0 second) 指定运行时间为23:59:00

ON COMPLETION PRESERVE ENABLE 指定创建完成后即启用,否则需手动启动

替换DO后边的语句中的相关部分(如数据库dbname, 表名,字段名等),DO 中也可以执行一个自定义的存储过程(该存储过程自已实现业务逻辑)

3 察看是否开始工作

SHOW PROCESSLIST --看是否有event_scheduler的user的进程;

4 手动关闭事件

ALTER EVENT event_test_a DISABLE

5 手动该事件为可用

ALTER EVENT event_test_a ENABLE


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8578563.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存