java定时任务备份mysql数据库,使用mysqldump

直接执行此命令,可以备份,但是java在定时任务中执行时,报错

mysqldump -uroot -p'root'  dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql

使用查找出命令所在地址

whereis mysqldump 
image.png

将命令修改为:

/usr/bin/mysqldump -uroot -p'root'  dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql

Runtime.getRuntime().exec()执行还不行,尝试使用 ProcessBuilder 执行:

  //   /bin/bash指定shell linux环境    -c 指定后边为“命令”
  ProcessBuilder builder = new ProcessBuilder("/bin/bash", "-c", dumpCommand);
  Process process = builder.start();

mysql5.7以后出现警告:

Using a password on the command line interface can be insecure.

解决办法:

在/ete/my.cnf 中添加

[mysqldump]
user=root
password=你的密码

重启服务,修改mysqldump语句,去掉-uroot -p参数

/usr/bin/mysqldump dataName > /usr/local/data_back/dataName_2024-04-12_10-26-00.sql
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容