Linux中如何定时对mysql数据库进行备份导出sql文件
分类:计算机 | 数据库 | MySQL | 数据导入导出 1187
更新:2021-04-10 00:20:22编辑
1 查看mysqldump的位置
使用命令which mysqldump查找mysqldump所在的位置,如果提示命令找不到,这是因为系统默认会查找/usr/bin下面的命令,如果这个命令不在这个目录下,自然会提示命令找不到。
可以通过linux中执行mysqldump命令提示找不到命令的解决方法来解决这个问题。
2 编辑my.cnf文件, 指定执行mysqldump命令时使用的账号与密码
在/etc/my.cnf文件中添加如下配置:
[mysqldump]
user=root
password=root
然后重启mysql
3 编写脚本mysql_backup.sh
在/root/中添加脚本mysql_backup.sh,内容如下:
#mysqldump备份程序执行路径
DUMP=/usr/bin/mysqldump
#备份文件存放路径
OUT_DIR=/root/mysql_backup
#备份文件所属权限
LINUX_USER=root
#要备份的数据库名字
DB_NAME=mydb
#备份的天数,之前的删除
DAYS=1
#进入备份存放目录
cd $OUT_DIR
#获取当前系统时间
DATE=`date +%Y_%m_%d`
#备份数据库的文件名
OUT_SQL=$DB_NAME"_$DATE.sql"
#最终保存的数据库备份文件名
TAR_SQL=$DB_NAME"_$DATE.tar.gz"
#开始执行备份数据库
$DUMP --login-path=test --defaults-extra-file=/etc/my.cnf --default-character-set=utf8 $DB_NAME > $OUT_SQL
#压缩为.tar.gz格式
tar -czf $TAR_SQL ./$OUT_SQL
#删除.sql格式的备份文件
rm $OUT_SQL
#更改备份数据库文件的所有者
chown $LINUX_USER:$LINUX_USER $OUT_DIR/$TAR_SQL
#删除30天前的备份文件(注意:{} \;中间有空格)
find $OUT_DIR -name "*.tar.gz" -type f -mtime +$DAYS -exec rm -f {} \;
4 使用mysql_config_editor配置快捷登录
执行如下命令:
/usr/local/mysql/bin/mysql_config_editor set --login-path=test --host=localhost --user=root --port=3306 --password
其中,--login-path是登录路径名,相当于登录信息的一个秘钥,--host是mysql所在服务器的主机名或IP地址,--user是登录的数据库用户名,--port是登录数据库的对外服务端口,--password是登录的数据库用户密码。
执行该命令后会提示输入密码,输入密码后即可将登录信息保存到加密文件.mylogin.cnf中,注意这里系统不会对输入的密码进行正确性验证,不管对错,只是把密码保存了起来。
在使用mysql_config_editor配置快捷登录,输入密码时,如果密码中包含有一些特殊字符,比如&,$之类的,需要在密码前后加上双引号,否则mysql_config_editor配置的快捷登录就是无效的,在使用快捷登录时会提示“ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)”
5 添加定时任务执行mysql_backup.sh
执行命令:crontab -e
[root@VM-12-11-centos ~]# crontab -e
每小时的第30分钟执行一次mysql_backup.sh
30 * * * * /root/mysql_backup.sh
猿导航
阅读排行榜
- 1vue和el-table使用经验-如何刷新表格数据10880
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9445
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7176
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5751
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5436
- 6Spring学习经验—@ResponseBody注解的使用说明4844
- 7Intellij IDEA下的版本控制VCS的启用与关闭4782
- 8Druid异常解决经验—java.sql.SQLException url not set4459
- 9如何用批处理命令(bat脚本)启动和停止windows服务4228
- 10nuxt.js项目中如何添加和使用全局变量4096
- 11解决SpringBoot使用maven下载不了jar包的问题3451
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3340
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3205
- 14在Nuxt.js项目的head中引用外部js文件3040
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3018