当前位置: 首页 > news >正文

MySQL使用触发器进行备份

触发器+脚本备份
实现方案:

1.配置mysql调用外部脚本的插件mysqludf

链接:https://pan.baidu.com/s/1MCrf1u_SRWwcZoxM9JDNiw
提取码:kgt0

解压
在这里插入图片描述
在这里插入图片描述

2.解压后放进:

mysql安装路径/lib/plugin/

在这里插入图片描述

3.在mysql执行命令创建自定义函数,下面创建两个函数的返回执行结果,另一个是返回命令行的字符串

1 DROP FUNCTION IF EXISTS sys_exec;
2 DROP FUNCTION IF EXISTS sys_eval;
3 CREATE FUNCTION sys_exec RETURNS integer SONAME 'lib_mysqludf_sys_x64.dll';
4 CREATE FUNCTION sys_eval RETURNS string SONAME 'lib_mysqludf_sys_x64.dll';
5 SELECT sys_eval("ipconfig/all");

执行结果显示为lib_mysqludf_sys_x64.dll要替换成mysql安装路径/lib/plugin/路径中的文件名

在这里插入图片描述

即为成功,且可在名为mysql的数据库->func表中看到
在这里插入图片描述

4、使用sys_exec备份

创建备份bat文件

@echo off
set BACKUP_DIR=E:\database
set MYSQL_USER=roXXX   // 自己的mysql用户名
set MYSQL_PASS=1XXXX   // 自己的mysql密码
set MYSQL_HOST=localhost
set DATABASE_NAME=XXXXXX // 自己的数据库表名
set DATE=%date:~0,4%-%date:~5,2%-%date:~8,2%_%time:~0,2%-%time:~3,2%-%time:~6,2%
set DATE=%DATE: =0%// 跳转自己mysql安装位置
pushd C:\Program Files\MySQL\MySQL Server 8.0\bin  //存储
REM 创建备份文件mysqldump -u %MYSQL_USER% -p%MYSQL_PASS% -h %MYSQL_HOST% %DATABASE_NAME% > %BACKUP_DIR%\mysql_backup_%DATABASE_NAME%_%DATE%.sqlREM 压缩备份文件(可选)
REM 你也可以选择使用 zip 或其他压缩工具进行备份压缩
REM 例如使用 7zip
REM "C:\Program Files\7-Zip\7z.exe" a -tzip %BACKUP_DIR%\mysql_backup_%DATE%.zip %BACKUP_DIR%\mysql_backup_%DATE%.sqlREM 删除超过30天的备份文件(可选)
forfiles /p "%BACKUP_DIR%" /m *.sql /d -30 /c "cmd /c del @path"[mysqldump]user=user_namepassword=password

创建触发器命令

-- 每次触发器进行备份
新增
CREATE TRIGGER `insert-change` AFTER INSERT ON `表名`
FOR EACH ROW 
BEGINDECLARE redata INT;SELECT sys_exec('E:/database/XXXXX备份文件.bat') INTO redata;
END;修改
CREATE TRIGGER `update-change` AFTER UPDATE ON `表名`
FOR EACH ROW 
BEGINDECLARE redata INT;SELECT sys_exec('E:/database/XXXXX.bat') INTO redata;
END;删除
CREATE TRIGGER `delete-change` AFTER DELETE ON `表名`
FOR EACH ROW 
BEGINDECLARE redata INT;SELECT sys_exec('E:/database/XXXXX.bat') INTO redata;
END;

当表被修改时,会进行备份
在这里插入图片描述

5.可能的报错信息

在这里插入图片描述
解决办法:把my.ini 中的

secure-file-priv=“”

在这里插入图片描述

1.secure_file_priv = NULL ,限制文件的读取和写入。2.secure_file_priv = 文件路径 ,限制文件的读取和写入只能在设定的文件夹中。3.secure_file_priv= “”, 对文件和读取和写入没有任何限制。
http://www.lryc.cn/news/516354.html

相关文章:

  • 数据结构与算法-顺序表
  • OpenAI CEO 奥特曼发长文《反思》
  • Shell编程详解
  • 跨站脚本攻击(XSS)详解
  • 03-QT中的QMainWindow+对话框QDialog
  • c# 中Parallel.ForEach 对其中一个变量进行赋值 引发报错
  • ElasticSearch备考 -- 整体脉络梳理
  • vue Element Ui Upload 上传 点击一个按钮,选择多个文件后直接上传,使用防抖解决多次上传的问题。
  • 【HF设计模式】05-单例模式
  • 运维人员的Python详细学习路线
  • 软件体系结构与设计模式
  • 安徽省地图arcgis数据美化后mxd文件shp格式下载后内容测评
  • MySQL数据库备份与恢复策略
  • go语言zero框架中教务crm系统的在职继承和离职交接的设计与实践
  • C# 设计模式(结构型模式):桥接模式
  • C# 设计模式(行为型模式):解释器模式
  • 如何 cURL Elasticsearch:进入 Shell
  • 深信服云桌面系统的终端安全准入设置
  • Node.js 模块系统
  • 数据结构知识收集尊享版(迅速了解回顾相关知识)
  • SpringMVC启动与请求处理流程解析
  • C++ 日志库 spdlog 使用教程
  • `http_port_t
  • SpringBoot中实现拦截器和过滤器
  • 不锈钢均温板结合强力粘合技术革新手机内部架构
  • Docker安装使用
  • React 如何进行路由变化监听
  • Unity UGUI使用技巧与经验总结(不定期更新)
  • 中国乡镇界shp全境arcgis格式shp数据乡镇名称下载后内容测评
  • 第 31 章 - 源码篇 - Elasticsearch 写入流程深入分析