对于企业而言,数据是非常重要的,要对数据库进行定期备份,万一数据库丢了那就得连夜逃跑了。常用,梳理回顾下,做下记录。
导出db1数据库
mysqldump -u root -p 123456 db1 > /root/mysql/db1_`date +%Y%m%d`.sql
导出db1数据库并压缩
mysqldump -u root -p 123456 db1 | gzip > /root/mysql/db1_`date +%Y%m%d`.sql.gz
备份db1 db2多个数据库
mysqldump -u root -p 123456 db1 db2 > /root/mysql/db_1_2_`date +%Y%m%d`.sql
备份db1 table1表
mysqldump -u root -p 123456 db1 table1 > /root/mysql/db1_table1_`date +%Y%m%d`.sql
备份db1的table1、table2多张表
mysqldump -u root -p 123456 db1 table1 table2 > /root/mysql/db1_table1_table2_`date +%Y%m%d`.sql
mysql-test容器备份db1数据库并压缩
docker exec mysql-test mysqldump -u root -p 123456 db1 | gzip > /root/mysql/db1_`date +%Y%m%d`.sql.gz
删除7天前的db1数据库备份
find /root/mysql/backup/ -mtime +7 -name 'db1_[1-9].sql.gz' -exec rm -f {
} \;
mysql-dump.sh备份示例:
#!/usr/bin/env bash
# 数据做备份
docker exec mysql-test mysqldump -u root -p 123456 db1 | gzip > /root/mysql/backup/db1_`date +%Y%m%d`.sql.gz
dump=`date 'date +%Y%m%d'`
if [ $? -ne 0 ]
then
echo "$dump 数据备份失败" >> /root/mysql/logs/mysqldump_fail.log
exit -1
else
echo "$dump 数据备份成功" >> /root/mysql/logs/mysqldump_success.log
exit 0
fi
# 删除7天前备份数据
find /root/mysql/backup/ -mtime +7 -name 'db1_[1-9].sql.gz' -exec rm -f {
} \;
Linux定时任务执行mysql-dump.sh脚本
chmod +x /root/mysql/mysql_dump.sh
crontab -e
# 每周日凌晨2点定时执行备份任务
00 02 * * 7 /root/mysql/mysql_dump.sh > /root/mysql/mysql_dump_exec.log 2>&1
小结:
个人认为,定期备份数据和开启binlog日志,很重要!