MysqL 的物理恢复方式
发布时间:2023-09-21 10:15:59 所属栏目:MySql教程 来源:
导读:跟逻辑恢复一样,物理恢复通常也支持两种恢复方式:完全恢复、不完全恢复,本小节结合xtrabackup开源工具,介绍这两种恢复方式的操作步骤。
1. 完全恢复
MysqL 中,物理备份的完全恢复相对比较简单,下面来看个案
1. 完全恢复
MysqL 中,物理备份的完全恢复相对比较简单,下面来看个案
跟逻辑恢复一样,物理恢复通常也支持两种恢复方式:完全恢复、不完全恢复,本小节结合xtrabackup开源工具,介绍这两种恢复方式的操作步骤。 1. 完全恢复 MysqL 中,物理备份的完全恢复相对比较简单,下面来看个案例: 实际案例:全量备份恢复 恢复数据一致性, 通过回滚未提交的事务及同步已经提交的事务至数据文件,使用得数据文件处于一致性状态。 innobackupex 通常还可以使用 --user-memory 选项来指定其可以使用的内存的大小,如果有足够的内存空间可用,可以多划分一些内存给 prepare 的过程,以提高其完成备份的速度。 [root@localhost ~]# innobackupex --apply-log /MysqL/dbbackup/ :: innobackupex: Starting the apply-log operation IMPORTANT: Please check that the apply-log run completes successfully. At the end of successful apply-log run innobackupex prints "completed OK!". innobackupex version . based on MysqL server . Linux (x86_64) (revision id: ) xtrabackup: to /MysqL/dbbackup/ xtrabackup: This target seems to not prepared yet. InnoDB: Number of pools: xtrabackup: xtrabackup_logfile detected: size=, start_lsn=() ...... InnoDB: . started; log sequence number xtrabackup: starting shutdown with innodb_fast_shutdown = InnoDB: FTS optimize thread exiting. InnoDB: Starting shutdown... InnoDB: Shutdown completed; log sequence number :: completed OK! 恢复备份文件至数据目录: [root@localhost ~]# service MysqLd stop Shutting down MysqL.... SUCCESS! [root@localhost ~]# mv /MysqL/data/ /MysqL/data_bak [root@localhost ~]# mkdir /MysqL/data [root@localhost ~]# innobackupex --default-file=/etc/my.cnf --copy-back --rsync /MysqL/dbbackup/ :: innobackupex: Starting the copy-back operation IMPORTANT: Please check that the copy-back run completes successfully. At the end of successful copy-back run innobackupex prints "completed OK!". innobackupex version . based on MysqL server . Linux (x86_64) (revision id: ) :: [] copying ib_logfile0 to /MysqL/data/ib_logfile0 :: [] ...done ...... :: [] Creating directory /MysqL/data/--01_06- :: [] ...done :: completed OK! [root@localhost ~]# chown -R MysqL:MysqL /MysqL/data [root@localhost ~]# service MysqLd start Starting MysqL.. SUCCESS! 恢复后检查数据一致性: MysqL> use tempdb Database changed MysqL> select * from customer; +----+-----------+------------+------------+--------+---------+ | id | last_name | first_name | birth_date | gender | balance | +----+-----------+------------+------------+--------+---------+ | | | | NULL | | | | | | | -- | | | +----+-----------+------------+------------+--------+---------+ rows in set ( sec) 2. 不完全恢复 逻辑恢复中,MysqLbinlog 的不完全恢复方法,同样适用于物理备份的不完全恢复。 运维人员误删除表 customer,可以用备份和 binlog 日志恢复到故障前(中午12点,物理备份数据库) 从备份文件目录找到 binlog 位置文件 xtrabackup_binlog_info,查看备份结束时 binlog 的位置: [root@localhost ~]# cd /MysqL/dbbackup [root@localhost ~]# ls -l -rw-r----- 1 root root 433 Aug 24 12:11 backup-my.cnf -rw-r----- 1 root root 42884 Aug 24 12:11 ib_buffer_pool -rw-r----- 1 root root 104857600 Aug 24 12:11 ibdata1 -rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile0 -rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile1 -rw-r----- 1 root root 1048576000 Aug 24 12:11 ib_logfile2 -rw-r----- 1 root root 12582912 Aug 24 12:11 ibtmp1 drwxr-x--- 2 root root 4096 Aug 24 12:11 MysqL drwxr-x--- 2 root root 4096 Aug 24 12:11 performance_schema drwxr-x--- 2 root root 12288 Aug 24 12:11 sys drwxr-x--- 2 root root 4096 Aug 24 12:11 tempdb -rw-r----- 1 root root 166 Aug 24 12:11 xtrabackup_binlog_info -rw-r--r-- 1 root root 21 Aug 24 12:11 xtrabackup_binlog_pos_innodb -rw-r----- 1 root root 121 Aug 24 12:11 xtrabackup_checkpoints -rw-r----- 1 root root 703 Aug 24 12:11 xtrabackup_info -rw-r----- 1 root root 8388608 Aug 24 12:11 xtrabackup_logfile [root@localhost ~]# cat xtrabackup_binlog_info MysqL-bin 查看当前的 binlog 文件 MysqL> show master logs; +------------------+-----------+ | Log_name | File_size | +------------------+-----------+ | MysqL-bin | | | MysqL-bin | | | MysqL-bin | | | MysqL-bin | | | MysqL-bin | | | MysqL-bin | | +------------------+-----------+ rows in set ( sec) 恢复备份文件,然后使用 binlog 日志跳过故障时间点,完成恢复 -- 恢复备份文件 完全恢复 -- 使用binlog日志恢复到故障前 [MysqL@localhost ~]$ MysqLbinlog --start-position="190" --stop-datetime="2020-08-24 12:59:59" MysqL-bin.000022 MysqL-bin.000023 | MysqL -uroot -p tempdb Enter password: -- 使用binlog日志跳过故障时间点 [MysqL@localhost ~]$ MysqLbinlog --start-datetime="2020-08-24 13:01:00" MysqL-bin.000022 MysqL-bin.000023 | MysqL -uroot -p tempdb 3. 小结 本小节通过 xtrabackup 工具,介绍了物理恢复的两种恢复方式:完全恢复、不完全恢复。 物理备份的完全恢复相对简单,恢复最新的全备文件 不完全恢复相对要复杂,分为基于时间点的恢复和基于位置的恢复,通常适用于人为误操作的恢复场景 (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |