mysql数据库定时备份mysqldump

备份整个数据库
mysqldump -u root -p123456 dbname > backdb.sql

有时候密码中含有特殊字符比如%,会被识别为命令,可以改成这样写

mysqldump --user='root' --password='123456' dbname > backdb.sql
备份数据库中的某个表
mysqldump -u root -p123456 dbname tbname1, tbname2 > backdb.sql
备份多个数据库
mysqldump -u root -p123456 --databases dbname1, dbname2 > backdb.sql
备份系统中所有数据库
mysqldump -u root -p123456 --all-databases > backdb.sql
备份并压缩,文件名按日期显示
mysqldump -u root -p123456 --all-databases | gzip > backdb_`date '+%Y-%m-%d'`.sql.gz
跨主机备份

将host1上的sourceDb复制到host2的targetDb,前提是host2主机上已经创建targetDb数据库
-C指示主机间的数据传输使用数据压缩

mysqldump --host=host1 --opt sourceDb| mysql --host=host2 -C targetDb
添加到定时任务,每天凌晨1点备份一次
0 1 * * * mysqldump -u root -p123456 --all-databases | gzip > /data/dockers/mysql/data/backdb_`date '+%Y-%m-%d'`.sql.gz

发现在我的系统上,crontab里面带日期的居然执行失败了,于是放到shell文件中了。

0 1 * * * /bin/sh /data/www/backup.sh
如果mysql是由docker运行的,保存路径为宿主机的路径,而不是容器里面的
0 1 * * * docker exec mysql mysqldump -u root -p123456 --all-databases | gzip > /data/dockers/mysql/data/backdb_`date '+%Y-%m-%d'`.sql.gz
补充说明

当mysql版本为5.7(我的是5.7.24)的时候,上面的命令会报错
mysqldump: [Warning] Using a password on the command line interface can be insecure.
同时定时任务也执行失败。需要做如下修改。
修改配置文件/etc/my.cnf.d/mysql-clients.cnf添加如下内容

[mysqldump]
user = root
password = 'mypass'
host = 127.0.0.1

不需要重启mysql,因为这是对于mysqldump的配置。

执行命令

mysqldump --defaults-extra-file=/etc/my.cnf.d/mysql-clients.cnf chpay > /data/www/backdb/backdb_`date '+%Y-%m-%d'`.sql

没有再报错了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值