mysql (mariadb)数据库使用 mysqldump 备份全部数据库,并自动按当前时间名保存文件

备份所有数据库

开发服务器要定时备份所有数据库那么
fox.风

mysqldump -h127.0.0.1 --port=3306 \
-uroot -proot \
--lock-tables=0 \
--all-databases > /root/db-`date "+%Y-%m-%d-%H-%M-%S"`.sql

–all-databases 全部数据库
–lock-tables=0 不锁表
date "+%Y-%m-%d-%H-%M-%S" 时间戳

备份所有数据库 时不包括 Database|information_schema|performance_schema|mysql|test 这几个数据库

mysql -e "show databases;" -h127.0.0.1 -uroot -proot | grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -h127.0.0.1 -uroot -proot --databases > mysql_dump-`date "+%Y-%m-%d-%H-%M-%S"`.sql

来源 https://bbs.csdn.net/topics/390847803

备份指定数据库

mysqldump -h127.0.0.1 --port=3306 \
-uroot -proot \
--lock-tables=0 \
--databases nacos > /root/nacos-`date "+%Y-%m-%d-%H-%M-%S"`.sql

还原所有数据库

首先 test 这个库要存在,存在了,系统会自动创建其他数据库和导入数据

mysql -h127.0.0.1 -uroot -proot test < db-xx.sql

定时备份数据库

/www/crontab/db目录下back-up-db.sh文件 内容如下

#!/bin/bash


#备份地址
backupdir=/www/crontab/db/logs
#备份文件后缀时间
time=_`date +%Y_%m_%d_%H_%M_%S`

mysql -e "show databases;" -h127.0.0.1 -uroot -proot | grep -Ev "Database|information_schema|performance_schema|mysql|test" | xargs mysqldump -h127.0.0.1 -uroot -proot --databases > ${backupdir}/db${time}.sql


#删除7天之前的备份文件
find $backupdir -name "db*.sql" -type f -mtime +7 -exec rm -rf {} \; > /dev/null 2>&1

echo ${time}" ok"

保存成功后 设置 该文件 可执行权限

chmod +x /www/crontab/db/back-up-db.sh

设置 定时器

crontab -e

加入

# 每天 3 点 10 执行
10 3 * * * /bin/bash /www/crontab/db/back-up-db.sh

# 启动后执行
@reboot /bin/bash /www/crontab/db/back-up-db.sh

你可能感兴趣的:(数据库,sql)