文章目录
mysql数据库备份
单机的备份方案
全量备份
在使用`mysqldump`进行MySQL数据库备份时,可以选择多种参数来定制备份过程。以下是一些常用的`mysqldump`参数:
1. **-u, --user=#**: 指定连接到MySQL服务器的用户名。
2. **-p, --password=#**: 指定用户密码。如果使用`-p`而没有跟随密码,`mysqldump`会提示输入密码。
3. **-h, --host=#**: 指定服务器的主机名或IP地址。
4. **-P, --port=#**: 指定连接到MySQL服务器的端口号。
5. **-A, --all-databases**: 备份所有数据库。
6. **-d, --no-data**: 只备份表结构,不包含数据。
7. **-t, --no-create-info**: 只备份数据,不包含表结构。
8. **--databases**: 指定要备份的数据库列表。
9. **--events**: 备份存储的事件。
10. **--single-transaction**: 对事务性表进行备份时,确保数据的一致性 这是个非常重要的参数,建议带上。
11. **--flush-logs**: 在备份前刷新日志,确保备份的一致性。
12. **--master-data=1** 或 **--master-data=2**: 用于复制设置,备份文件中包含二进制日志的位置信息。
13. **--quick** 或 **-q**: 快速备份,不锁定表。
14. **--lock-tables**: 在备份前锁定所有表。
15. **--routines**: 备份存储的例程(存储过程和函数)。
16. **--triggers**: 备份触发器。
17. **--ignore-table=#**: 忽略指定的表。
18. **--where=#**: 只备份符合WHERE子句条件的数据。
19. **--compress** 或 **-C**: 压缩备份结果。
20. **--order-by-primary**: 按照主键顺序导出数据,以减少插入时的索引查找。
21. **--default-character-set=#**: 指定默认字符集。
22. **--result-file=#**: 将备份结果输出到指定文件。
23. **--no-create-db**: 不包含创建数据库的语句。
24. **--skip-opt**: 跳过优化选项。
25. **--tz-utc**: 将时间戳转换为UTC。
这些参数可以根据你的具体需求进行组合使用,以达到最佳的备份效果。例如,如果你想要快速备份所有数据库的结构和数据,
可以使用`-A --quick`参数。如果你需要确保备份的一致性,可以使用`--single-transaction`参数。
设置定时任务进行全量备份
#!/bin/bash dump.sh
# 备份工具
tool=mysqldump
# 用户名和密码
username=root
password=你的密码
# 要备份的数据库
database_name=你的数据库名
# 备份保存路径和文件名
backup_dir=/你的备份路径
dumpFile="${database_name}_$(date +%Y%m%d).sql"
# 执行备份
$tool -u$username -p$password $database_name > $backup_dir/$dumpFile
crontab -e 编辑当前用户的定时任务文件 添加一行定时任务脚本
0 3 * * * /path/to/your/dump.sh
crontab -l 查看当前用户的定时任务列表
增量备份
利用bin-log文件
并且在每次全量备份的时候 都带上参数 flush-logs 假如此时bin-log 文件为 mysql-bin.00007
恢复的时候
先 mysql dump.sql
再 mysqlbinlog mysql-bin.00007 | mysql