数据无价,多自动备份,定期全量备份
MySQL是博主最常使用的数据库,小应用啥的都是基于MYSQL,服务器中配置数据库备份脚本很有必要,本文分享最近使用mysqldump工具进行备份的过程,这是一个非常强大的命令行工具,用于导出数据库的内容到一个文本文件中,这个文本文件可以是SQL文件,也可以是其他格式,比如CSV。
常用的备份方式
| 备份方式 | 说明 | 备注 |
|---|---|---|
| mysqldump | 默认情况下仅备份:表,视图和触发器 | 默认不备份存储过程和事件,需要加配置参数,如果需要备份存储过程和事件,需要增加-ER参数,且dump用户需要增加show events的 |
| Global Privilege | binlog 有时间期限,可以配置,一般保留5天记录即可 | |
| mysqlpump | 默认备份 表,视图,存储过程,存储函数,触发器,事件, | MySQL 5.7及以上版本才支持 |
| xtrabackup | 需要重启数据库,恢复时需要清空数据库的数据目录,可以支持增量备份 | 只支持Linux |
基于版本
MYSQL8.0.26 CentOS Linux release 8.5.2111
备份方法
1.备份所有数据库
languagemysqldump --all-databases -u [用户名] -p[密码] > alldb_backup_$(date +%F).sql
这里的[用户名]和[密码]需要替换成你的MySQL用户名和密码。>操作符将输出重定向到一个文件,文件名包含当前日期,以便于识别和管理。-p后的密码建议默认为空,根据系统提示输入密码,保证安全性。
2.逐个数据库备份
如果需要更细致地控制备份过程,或者某些数据库非常大,可以逐个备份数据库。博主编写以下脚本来实现:
编辑新建脚本
languagevim backup_all_dbs.sh
粘贴以下内容
language#!/bin/bash USER="你的用户名" PASSWORD="你的密码" for DB in $( mysql -u$USER -p$PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|mysql|performance_schema|phpmyadmin)" ) do echo "Dumping $DB..." mysqldump -u$USER -p$PASSWORD $DB > "${DB}_$(date +%F).sql" done
这个脚本会遍历所有数据库,除了系统数据库(如mysql、information_schema等),然后逐个导出。
3.使用cron job自动化备份
如果你需要定期自动备份数据库,可以将上述脚本设置为cron job:
• 将脚本保存为backup_all_dbs.sh。
• 给予执行权限:chmod +x backup_all_dbs.sh。
• 编辑cron表:crontab -e。
• 添加一行来设置备份时间,例如每天凌晨1点:0 1 * * * /path/to/backup_all_dbs.sh。
确保替换/path/to/为你的脚本实际路径。
注意事项
• 确保你有足够的磁盘空间来存储备份文件。
• 定期检查备份文件的完整性和可用性。
• 考虑备份文件的安全性,特别是在包含敏感信息的数据库中。