溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于percona xtrabackup的innobackupex如何實現(xiàn)基于時間點數(shù)據(jù)庫恢復(fù)

發(fā)布時間:2021-11-03 15:12:49 來源:億速云 閱讀:130 作者:柒染 欄目:MySQL數(shù)據(jù)庫

基于percona xtrabackup的innobackupex如何實現(xiàn)基于時間點數(shù)據(jù)庫恢復(fù),很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

前言

數(shù)據(jù)庫在運行期間,可能是因為人為原因誤操作或者出現(xiàn)存儲故障,導(dǎo)致某些表不能正常訪問,此時,可以使用基于時間點的恢復(fù),采用數(shù)據(jù)庫備份及二進制日志,把誤操作或出現(xiàn)故障的數(shù)據(jù)還原回來,建議不要在生產(chǎn)系統(tǒng)中進行基于時間點的恢復(fù),可以在一個臨時的環(huán)境把數(shù)據(jù)恢復(fù)出來,然后讓業(yè)務(wù)及開發(fā)確認,然后再把數(shù)據(jù)導(dǎo)回到生產(chǎn)數(shù)據(jù)庫,這樣也不影響數(shù)據(jù)庫中其它業(yè)務(wù)的運行。

基于時間點或基于二進制日志位置的數(shù)據(jù)庫恢復(fù)

1,數(shù)據(jù)庫的當前數(shù)據(jù)庫

mysql> select * from zxydb.t_go;

+----+------+

| a  | b    |

+----+------+

|  1 |    1 |

|  2 |    2 |

|  3 |    3 |

|  5 |    5 |

|  8 |    8 |

| 10 |   10 |

| 11 |   11 |

| 12 |   12 |

+----+------+

8 rows in set (0.00 sec)

2,構(gòu)建數(shù)據(jù)庫的基準備份

--構(gòu)建存儲數(shù)據(jù)庫基準備份的目錄

[root@standbygtid mysql]# mkdir -p /database_base_dir

[root@standbygtid mysql]# innobackupex  -uroot -psystem /database_base_dir --no-timestamp

[root@standbygtid mysql]# cd /database_base_dir/

[root@standbygtid database_base_dir]# ll

總用量 77868

-rw-r----- 1 root root      418 11月  5 00:56 backup-my.cnf

drwxr-x--- 2 root root     4096 11月  5 00:56 completedb

-rw-r----- 1 root root 79691776 11月  5 00:56 ibdata1

drwxr-x--- 2 root root     4096 11月  5 00:56 mysql

drwxr-x--- 2 root root     4096 11月  5 00:56 performance_schema

drwxr-x--- 2 root root     4096 11月  5 00:56 test

-rw-r----- 1 root root       18 11月  5 00:56 xtrabackup_binlog_info

-rw-r----- 1 root root      115 11月  5 00:56 xtrabackup_checkpoints

-rw-r----- 1 root root      507 11月  5 00:56 xtrabackup_info

-rw-r----- 1 root root     2560 11月  5 00:56 xtrabackup_logfile

drwxr-x--- 2 root root     4096 11月  5 00:56 zxydb

3,準備用于恢復(fù)上述的基準備份

(注:其實就是用在線日志應(yīng)用到基準備份,確保數(shù)據(jù)一致性)

[root@standbygtid database_base_dir]# innobackupex  -uroot -psystem --apply-log  /database_base_dir

[root@standbygtid database_base_dir]# ll

總用量 196652

-rw-r----- 1 root root      418 11月  5 00:56 backup-my.cnf

drwxr-x--- 2 root root     4096 11月  5 00:56 completedb

-rw-r----- 1 root root 79691776 11月  5 01:01 ibdata1

-rw-r----- 1 root root 50331648 11月  5 01:01 ib_logfile0

-rw-r----- 1 root root 50331648 11月  5 01:01 ib_logfile1

-rw-r----- 1 root root 12582912 11月  5 01:01 ibtmp1

drwxr-x--- 2 root root     4096 11月  5 00:56 mysql

drwxr-x--- 2 root root     4096 11月  5 00:56 performance_schema

drwxr-x--- 2 root root     4096 11月  5 00:56 test

-rw-r----- 1 root root       18 11月  5 00:56 xtrabackup_binlog_info

-rw-r--r-- 1 root root       19 11月  5 01:01 xtrabackup_binlog_pos_innodb

-rw-r----- 1 root root      115 11月  5 01:01 xtrabackup_checkpoints

-rw-r----- 1 root root      507 11月  5 00:56 xtrabackup_info

-rw-r----- 1 root root  8388608 11月  5 01:01 xtrabackup_logfile

drwxr-x--- 2 root root     4096 11月  5 00:56 zxydb

4,查看上述基準備份對應(yīng)的二進制日志及位置

(注:如下基于時間點恢復(fù)就是從這個二進制日志及位置開始恢復(fù)到某個時間點,很重要喲)

[root@standbygtid database_base_dir]# more xtrabackup_binlog_info

binlog.000001120

[root@standbygtid database_base_dir]# 

5,為了更好模擬基于時間點恢復(fù),切換二進制日志,產(chǎn)生新的二進制日志

mysql> flush logs;

Query OK, 0 rows affected (0.01 sec)

6,查看當前的二進制日志及位置

mysql> show master status;

+---------------+----------+--------------+------------------+-------------------+

| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+---------------+----------+--------------+------------------+-------------------+

| binlog.000002 |      337 |              |                  |                   |

+---------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

--共計2個二進制日志

mysql> show binary logs;

+---------------+-----------+

| Log_name      | File_size |

+---------------+-----------+

| binlog.000001 |       164 |

| binlog.000002 |       337 |

+---------------+-----------+

2 rows in set (0.00 sec)

7,產(chǎn)生數(shù)據(jù)變更

mysql> use zxydb;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select * from t_go;

+----+------+

| a  | b    |

+----+------+

|  1 |    1 |

|  2 |    2 |

|  3 |    3 |

|  5 |    5 |

|  8 |    8 |

| 10 |   10 |

| 11 |   11 |

| 12 |   12 |

+----+------+

8 rows in set (0.00 sec)

mysql> insert into t_go select 13,13;

Query OK, 1 row affected (0.00 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

8,查看當前二進制日志對應(yīng)的事件信息

mysql> show binlog events in 'binlog.000002';

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| Log_name      | Pos | Event_type  | Server_id | End_log_pos | Info                                                                 |

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| binlog.000002 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.25-enterprise-commercial-advanced-log, Binlog ver: 4 |

| binlog.000002 | 120 | Query       |         1 |         201 | BEGIN                                                                |

| binlog.000002 | 201 | Query       |         1 |         306 | use `zxydb`; insert into t_go select 13,13                           |

| binlog.000002 | 306 | Xid         |         1 |         337 | COMMIT /* xid=41 */                                                  |

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

4 rows in set (0.00 sec)

9,繼續(xù)變化數(shù)據(jù)

mysql> insert into t_go select 18,18;

Query OK, 1 row affected (0.02 sec)

Records: 1  Duplicates: 0  Warnings: 0

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

mysql> show binlog events in 'binlog.000002';

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| Log_name      | Pos | Event_type  | Server_id | End_log_pos | Info                                                                 |

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

| binlog.000002 |   4 | Format_desc |         1 |         120 | Server ver: 5.6.25-enterprise-commercial-advanced-log, Binlog ver: 4 |

| binlog.000002 | 120 | Query       |         1 |         201 | BEGIN                                                                |

| binlog.000002 | 201 | Query       |         1 |         306 | use `zxydb`; insert into t_go select 13,13                           |

| binlog.000002 | 306 | Xid         |         1 |         337 | COMMIT /* xid=41 */                                                  |

| binlog.000002 | 337 | Query       |         1 |         418 | BEGIN                                                                |

| binlog.000002 | 418 | Query       |         1 |         523 | use `zxydb`; insert into t_go select 18,18                           |

| binlog.000002 | 523 | Xid         |         1 |         554 | COMMIT /* xid=48 */                                                  |

+---------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------+

7 rows in set (0.00 sec)

10,因為基于時間點恢復(fù)要用于二進制日志,備份下述的二進制文件到另一個目錄

(注:即使二進制日志非常重要,一定要定期進行備份,不然真要進行基于時間點恢復(fù),而所需要的二進制日志又沒有了,哪就會導(dǎo)致數(shù)據(jù)損失了)

[root@standbygtid database_base_dir]# cd /var/lib/mysql

[root@standbygtid mysql]# ll

總用量 188464

-rw-rw---- 1 mysql mysql       56 11月  4 23:52 auto.cnf

-rw-rw---- 1 mysql mysql      164 11月  5 01:06 binlog.000001

-rw-rw---- 1 mysql mysql      554 11月  5 01:12 binlog.000002

-rw-rw---- 1 mysql mysql       32 11月  5 01:06 binlog.index

drwxr-x--- 2 mysql mysql     4096 11月  4 23:48 completedb

-rw-r----- 1 mysql mysql 79691776 11月  5 01:12 ibdata1

-rw-r----- 1 mysql mysql 50331648 11月  5 01:12 ib_logfile0

-rw-r----- 1 mysql mysql 50331648 11月  4 23:48 ib_logfile1

-rw-r----- 1 mysql mysql 12582912 11月  4 23:48 ibtmp1

drwxr-x--- 2 mysql mysql     4096 11月  4 23:48 mysql

srwxrwxrwx 1 mysql mysql        0 11月  4 23:52 mysql.sock

-rw------- 1 root  root       159 11月  4 23:52 nohup.out

drwxr-x--- 2 mysql mysql     4096 11月  4 23:48 performance_schema

-rw-r----- 1 mysql root      2508 11月  4 23:52 standbygtid.err

-rw-rw---- 1 mysql mysql        6 11月  4 23:52 standbygtid.pid

drwxr-x--- 2 mysql mysql     4096 11月  4 23:48 test

drwxr-x--- 2 mysql mysql     4096 11月  4 23:48 zxydb

[root@standbygtid mysql]# mysqlbinlog  binlog.000001 binlog.000002 --start-position=120 --stop-position=337 > /base_binlog_pos.sql

[root@standbygtid mysql]# 

11,關(guān)閉數(shù)據(jù)庫

 mysqladmin -uroot -psystem shutdown

12,物理刪除數(shù)據(jù)文件

[root@standbygtid mysql]# pwd

/var/lib/mysql

[root@standbygtid mysql]# rm -rf *

13,還原上述的備份到數(shù)據(jù)庫的數(shù)據(jù)文件目錄

[root@standbygtid mysql]# innobackupex  --datadir=/var/lib/mysql --copy-back /database_base_dir

14,授權(quán)數(shù)據(jù)庫的數(shù)據(jù)文件目錄

[root@standbygtid mysql]# chown -Rf mysql:mysql *

[root@standbygtid mysql]# ll

總用量 188448

drwxr-x--- 2 mysql mysql     4096 11月  5 01:49 completedb

-rw-r----- 1 mysql mysql 79691776 11月  5 01:49 ibdata1

-rw-r----- 1 mysql mysql 50331648 11月  5 01:49 ib_logfile0

-rw-r----- 1 mysql mysql 50331648 11月  5 01:49 ib_logfile1

-rw-r----- 1 mysql mysql 12582912 11月  5 01:49 ibtmp1

drwxr-x--- 2 mysql mysql     4096 11月  5 01:49 mysql

drwxr-x--- 2 mysql mysql     4096 11月  5 01:49 performance_schema

drwxr-x--- 2 mysql mysql     4096 11月  5 01:49 test

-rw-r----- 1 mysql mysql       19 11月  5 01:49 xtrabackup_binlog_pos_innodb

-rw-r----- 1 mysql mysql      507 11月  5 01:49 xtrabackup_info

drwxr-x--- 2 mysql mysql     4096 11月  5 01:49 zxydb

15,刪除上述與xtrabackup相關(guān)的文件

[root@standbygtid mysql]# rm -rf xtrabackup_*

16,重啟數(shù)據(jù)庫

[root@standbygtid mysql]# nohup mysqld_safe  --user=mysql&

17,基于時間點恢復(fù)

(注:我們就恢復(fù)到二進制日志的 337,見上述的第9步)

[root@standbygtid mysql]# mysql -uroot -psystem < /base_binlog_pos.sql

Warning: Using a password on the command line interface can be insecure.

[root@standbygtid mysql]# 

mysql> select * from zxydb.t_go;

+----+------+

| a  | b    |

+----+------+

|  1 |    1 |

|  2 |    2 |

|  3 |    3 |

|  5 |    5 |

|  8 |    8 |

| 10 |   10 |

| 11 |   11 |

| 12 |   12 |

| 13 |   13 |

+----+------+

9 rows in set (0.00 sec)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI