如何進行MySQL句柄恢復的簡單嘗試,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

10年積累的成都網(wǎng)站制作、做網(wǎng)站經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有磐石免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
今天突然想起一個問題,那就是對于ibdata的恢復,如果我們簡單模擬一下,就會發(fā)現(xiàn)還是蠻有意思的。
首先我們得到兩個參數(shù)值,一個是刷臟頁的指標,另外一個是數(shù)據(jù)文件的目錄。
mysql> show variables like '%pct%';
+------------------------------------------+-----------+
| Variable_name | Value |
+------------------------------------------+-----------+
| innodb_buffer_pool_dump_pct | 25 |
| innodb_compression_failure_threshold_pct | 5 |
| innodb_compression_pad_pct_max | 50 |
| innodb_max_dirty_pages_pct | 75.000000 |
| innodb_max_dirty_pages_pct_lwm | 0.000000 |
| innodb_old_blocks_pct | 37 |
+------------------------------------------+-----------+
6 rows in set (0.01 sec)
mysql> show variables like 'datadir';
+---------------+----------------+
| Variable_name | Value |
+---------------+----------------+
| datadir | /home/data/s1/ |
+---------------+----------------+
1 row in set (0.00 sec)
這個時候的文件是下面的幾個:
[root@grtest s1]# ll ib*
-rw-r----- 1 mysql mysql 413 Jun 20 14:01 ib_buffer_pool
-rw-r----- 1 mysql mysql 12582912 Jun 20 14:01 ibdata1
-rw-r----- 1 mysql mysql 50331648 Jun 20 14:01 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Jun 20 14:01 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Jun 20 14:02 ibtmp1
其中,ib_buffer_pool是5.7的新特性,暫時沒有打開,兩個redo日志,一個臨時文件。
我們可以測試一下破壞的情況,同時和事務(wù)結(jié)合起來。
mysql> create database test;
Query OK, 1 row affected (0.00 sec)
mysql> use test
Database changed
mysql> create table test(id int);
Query OK, 0 rows affected (0.01 sec)
手工開啟一個事務(wù),但是不提交。
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values(1000);
Query OK, 1 row affected (0.01 sec)
這個時候沒有commit,所以查看binlog里面目前是沒有匹配記錄的。
# mysqlbinlog -vv binlog.000001 |grep -i INSERT
而一旦提交之后,binlog里面就會包含進去。
commit
[root@grtest s1]# mysqlbinlog -vv binlog.000001 |grep -i -a5 INSERT
BINLOG '
UZNjWRPhYAAAKwAAABIHAAAAANsAAAAAAAEABHRlc3QABHRlc3QAAQMAAQ==
UZNjWR7hYAAAJAAAADYHAAAAANsAAAAAAAEAAgAB//7oAwAA
'/*!*/;
### INSERT INTO `test`.`test`
### SET
### @1=1000 /* INT meta=0 nullable=1 is_null=0 */
# at 1846
#170710 22:47:11 server id 24801 end_log_pos 1873 Xid = 477
COMMIT/*!*/;
我們來驗證一下這種破壞場景下的數(shù)據(jù)情況,插入一條記錄,不提交,然后破壞文件,查看恢復的情況。
mysql> start transaction;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values(2000);
Query OK, 1 row affected (0.00 sec)
我們就把這些ib_字樣的文件刪除了。
查看mysqld的pid,發(fā)現(xiàn)測試環(huán)境中有大量的同類服務(wù)。
# pidof mysqld
30518 29944 29698 29401 15307 10659
換一個姿勢。
# netstat -nltp|grep mysqld|grep 24801
tcp 0 0 :::24801 :::* LISTEN 29401/mysqld
在系統(tǒng)目錄下,按照規(guī)律會發(fā)現(xiàn)下面的文件。
# ll /proc/29401/fd|grep ib_*|grep delete
lrwx------ 1 root root 64 Jul 10 22:49 10 -> /home/data/s1/ib_logfile1 (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 11 -> /home/data/s1/ibtmp1 (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 12 -> /tmp/ibHcflkp (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 4 -> /home/data/s1/ibdata1 (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 5 -> /tmp/ibq7lvQK (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 6 -> /tmp/ib59bGj5 (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 7 -> /tmp/ibYubRMp (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 8 -> /tmp/ib8LAUL4 (deleted)
lrwx------ 1 root root 64 Jul 10 22:49 9 -> /home/data/s1/ib_logfile0 (deleted)
我們做兩件事情,一件事給當前的環(huán)境上鎖,然后進行文件的拷貝。
[root@grtest s1]# chown mysql:mysql xxxx
[root@grtest s1]# mv 10 /home/data/s1/ib_logfile1
[root@grtest s1]# mv 11 /home/data/s1/ibtmp1
[root@grtest s1]# mv 9 /home/data/s1/ib_logfile0
[root@grtest s1]# mv 4 /home/data/s1/ibdata1
正常停庫,啟庫。
這個時候驗證數(shù)據(jù)就會發(fā)現(xiàn),之前的那個事務(wù)已經(jīng)做了回滾。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
文章題目:如何進行MySQL句柄恢復的簡單嘗試
分享網(wǎng)址:http://chinadenli.net/article14/ipchde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、域名注冊、品牌網(wǎng)站設(shè)計、面包屑導航、商城網(wǎng)站、移動網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)