在linux下使用mysql或Mariadb时,最好经常备份数据库,不然数据库坏掉了,后果是很严重的。
使用mysqldump
命令,可以通过以下方式:(密码紧挨着-p)
mysqldump -u username -ppassword DatabaseName > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql
更进一步,对数据库文件进行压缩
mysqldump -uusername -ppassword DatabaseName | gzip > /home/dbback/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz
这样将密码明文存放是不安全的。我们可以将密码放到配置文件中(/etc/my.cnf.d/mysql-clients.cnf)
在该文件的[mysqldump]
块下面加上:
user=username
password=passwd
然后,上面的mysqldump命令就可以直接跟databaseName了。
接下来通过crontab可以定期执行。但是还有一个问题,如果我们备份很多数据库文件,那么硬盘压力比较大。因此,我们通过脚本来定期删除,对于1天以内的备份,我们全部保留,1天以上的,每个月保留3天:日期为10,20,30。
这个可以通过find命令来实现:
find /mnt/sata1/database_backup/ -mtime +1 -regextype grep -regex "piwigo_[0-9]\{7,7\}[1-9]_.*.sql.gz" -exec rm -rf {} \;