MySQL 数据库备份方案
一、逻辑备份
1、应用场景:数据量较小时,数据库出现数据故障且恢复时间要求不高;搭建主从环境、测试环境和备用库。
2、备份时间及地点:每日凌晨3:10在从库上进行备份,备份文件存放在从库的/data/backup/fullbackup/
目录下,如果有充足的机器,也可以备份到远程服务器。
3、备份方式:使用mysqldump
工具进行全库备份,通过定时任务执行 shell 脚本。
4、示例脚本:
#!/bin/bash bakdir=/data/backup/full datetime=$(date +%Y%m%d%H%M%S) user=root password=123456789 mysqldump -u${user} -p${password} --all-databases --single-transaction --flush-logs --master-data=2 > ${bakdir}/all-${datetime}.sql gzip ${bakdir}/all-${datetime}.sql rm -f /data/backup/full/all-$(date -d 'yesterday' +%Y%m%d%H%M%S).gz
二、物理备份
1、应用场景:数据量大且要求快速恢复。
2、备份时间及地点:每周一凌晨3:30在主库上进行备份,备份文件存放在远程服务器目录中。
3、备份方式:使用 Percona 的innobackupex
工具进行在线热备。
4、示例脚本:
#!/bin/bash backup_dir=/remote/backup/physical datetime=$(date +%Y%m%d%H%M%S) innobackupex --user=root --password=123456789 /data/mysql_data/ --socket=/tmp/mysql.sock mv /data/mysql_data/* $backup_dir/$datetime/
三、Binlog 备份
1、应用场景:需要恢复到特定时间点的数据。
2、备份时间及地点:实时将主库上的 binlog 同步到远程服务器。
3、备份方式:使用mysqlbinlog
工具进行日志拉取,并保存到远程服务器。
4、示例脚本:
#!/bin/bash mkdir -p /remote/backup/binlog datetime=$(date +%Y%m%d%H%M%S) mysqlbinlog --read-from-remote-server --host=1.1.1.1 --port=3306 --user=backup --password=backup --raw --stop-never mysql-bin.000840 > /remote/backup/binlog/mysql-bin.000840-${datetime}.bin
四、主从复制
1、应用场景:读写分离和故障转移。
2、备份时间及地点:几乎同步进行数据复制。
3、备份方式:采用 MySQL 提供的复制技术,将数据从主库复制到从库。
4、配置步骤:
确保主从库版本一致,并且在主库上创建复制用户。
编辑主库的my.cnf
配置文件,添加以下内容:
[mysqld] log-bin=mysql-bin server-id=1
在从库上执行CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_USER='replUser', MASTER_PASSWORD='replPass', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 4;
启动从库的 SQL 线程和 I/O 线程:START SLAVE;
五、数据恢复与测试
1、恢复测试频率:每周进行一次恢复测试。
2、测试方法:模拟主机数据全部丢失的情况,先恢复全备,再根据 binlog 恢复到最近时间点。
3、操作步骤:
停止 MySQL 服务。
清空/var/lib/mysql
目录,并还原最新的全备文件。
应用 binlog 日志,直到达到期望的时间点。
重启 MySQL 服务,检查数据一致性。
六、FAQs
Q1:如何确保备份数据的完整性?
A1:定期进行恢复测试,确保备份文件可用且能正确恢复,监控备份过程中的错误日志,及时处理问题。
Q2:如何处理大数据量的备份?
A2:对于大数据量,建议使用物理备份,并在低业务量时段进行备份,以减少对业务的影响,可以考虑增量备份策略,只备份变化的数据。
Q3:如何优化备份过程?
A3:优化备份过程可以从多方面入手,包括分区表、分页查询、批量操作、索引优化、并行度调整等,具体措施视实际情况而定。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1447811.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复