MySQL备份与恢复
2021/7/24 2:39:59
本文主要是介绍MySQL备份与恢复,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 备份过程中注意目录读写权限 1.使用xtrabackup备份mysql 1.1全量备份 全量备份 innobackupex --user=root --password='123456' /xtrabackup/full 恢复备份 innobackupex --apply-log /xtrabackup/full/2020-1-0 innobackupex --copy-back /xtrabackup/full/2020-1-0 1.2增量备份 首先全量备份一次 innobackupex --user=root --password='123456' /xtrabackup/ 假设全量生成的备份包为2020-1-0 第一次增量备份 innobackupex --user=root --password='123456' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-0/ # 基于全量的包 假设第一次增量生成的包为 2020-1-1 第二次增量备份 innobackupex --user=root --password='123456' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-1/ # 基于第一次增量包 假设第二次增量生成的包为 2020-1-2 第三次增量备份 innobackupex --user=root --password='123456' --incremental /xtrabackup/ --incremental-basedir=/xtrabackup/2020-1-2/ # 基于第二次增量包 假设第三次增量生成的包为 2020-1-3 先回滚全量的包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 回滚第一次增量包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-1 回滚第二次增量包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-2 回滚第三次增量包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 --incremental-dir=/xtrabackup/2020-1-3 恢复回滚好的第一次全量包 innobackupex --copy-back /xtrabackup/2020-1-0 1.3差异备份 首先进行一次完全备份 innobackupex --user=root --password='123456' /xtrabackup 假设完全备份的包是2020-1-0 进行第一次差异备份 innobackupex --user=root --password='123456' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-0 # 基于第一次的全备 假设第一次差异备份包是2020-1-1 进行第二次差异备份 innobackupex --user=root --password='123456' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 # 还是基于第一次的全备 假设第二次差异备份的包是2020-1-2 进行第三次差异备份 innobackupex --user=root --password='123456' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 # 还是基于第一次的全备 假设第三次差异备份的包是2020-1-3 进行第四次差异备份 innobackupex --user=root --password='123456' --incremental /xtrabackup --incremental-basedir=/xtrabackup/2020-1-1 # 还是基于第一次的全备 假设第四次差异备份的包是2020-1-4 假设恢复到第三次差异备份的数据 我们回滚时候只需要回滚完全备份包和第三次差异包备份即可 回滚全量备份包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0 回滚第三次差异备份包 innobackupex --apply-log --redo-only /xtrabackup/2020-1-0--incremental-dir=/xtrabacku/2020-1-3 恢复回滚好的第一次全量包 innobackupex --copy-back /xtrabackup/2020-1-0 2.使用mysqldump备份mysql mysqldump -uroot -p'123456' --all-databases --single-transaction --master-data=2 --flush-logs > /backup/2020-01-01-01-mysql-all.sql mysqldump -uroot -p'123456' < /backup/2020-01-01-01-mysql-all.sql 不记录恢复操作(或在my.conf中关闭log_bin) mysql> set sql_log_bin=0; mysql> source 2020-01-01-01-mysql-all.sql mysql> set sql_log_bin=1; 3.二进制日志恢复 查看二进制截取记录 cat /xtrabackup/full/2020-1-0/xtrabackup_binlog_info cat /backup/2020-01-01-01-mysql-all.sql 从记录中的截断位置之后的数据内容恢复 mysqlbinlog localhost-bin.000002 localhost-bin.000003 localhost-bin.000004 --start-position=154 | mysql -uroot -p'123456' 从记录中的截断位置之后的数据内容保存在文本中 mysqlbinlog localhost-bin.000002 localhost-bin.000003 localhost-bin.000004 --start-position=154 > binlog.txt 4.记录的导入和导出 vim /etc/my.cnf [mysqld] secure-file-priv=/backup SELECT ... INTO OUTFILE ... mysql> select * from testdb.t1 into outfile '/backup/testdb.t1.txt' 使用mysql命令导出 mysql -uroot -p'123456' -e 'select * from testdb.t2' > /backup/testdb.t2.txt mysql -uroot -p'123456' --xml -e 'select * from testdb.t2' > /backup/testdb.t2.xml mysql -uroot -p'123456' --html -e 'select * from testdb.t2' > /backup/testdb.t2.html LOAD DATA INFILE ... INTO ... mysql> load data infile '/backup/testdb.t3.txt' into table testdb.t3;
这篇关于MySQL备份与恢复的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南