日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

mysql主从数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题

發(fā)布時(shí)間:2024/10/14 142 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主从数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者:戴駿賢

網(wǎng)易游戲 技術(shù)部資深數(shù)據(jù)庫(kù)系統(tǒng)工程師。

本文來(lái)源:原創(chuàng)投稿

*愛(ài)可生開(kāi)源社區(qū)出品,原創(chuàng)內(nèi)容未經(jīng)授權(quán)不得隨意使用,轉(zhuǎn)載請(qǐng)聯(lián)系小編并注明來(lái)源。

1. 問(wèn)題起源

不久前用戶反饋部門的 MySQL 數(shù)據(jù)庫(kù)發(fā)生了數(shù)據(jù)更新丟失。為了解決這個(gè)問(wèn)題,當(dāng)時(shí)對(duì)用戶使用的場(chǎng)景進(jìn)行了分析。發(fā)現(xiàn)可能是因?yàn)橛脩粼趦膳_(tái)互為主從的機(jī)器上都進(jìn)行了寫入導(dǎo)致的數(shù)據(jù)丟失。

如圖所示,是正常和異常情況下應(yīng)用寫入數(shù)據(jù)庫(kù)的示例。隨后在更加深入調(diào)查問(wèn)題的過(guò)程中,DBA 發(fā)現(xiàn)了故障引起數(shù)據(jù)丟失的原因:

如圖 1-2 所示為故障具體過(guò)程的還原。從圖中可以看出在第 3 步 DP 上的寫入操作,在恢復(fù) DA 到 DP 的同步之后,覆蓋了第 4 步 DA 上的寫入。因此導(dǎo)致了最終兩臺(tái)機(jī)器數(shù)據(jù)不一致,并且有一部分?jǐn)?shù)據(jù)更新丟失。

在這里相信讀者都會(huì)有一個(gè)疑問(wèn), 在第 4 步之后數(shù)據(jù)變成了(id : 1 ,name : name4),那么第 3 步操作的時(shí)候?qū)懭氲恼Z(yǔ)句是 update t20200709 set name = 'name3' where id =1 and name='name2',在第 5 步恢復(fù)同步的時(shí)候這條語(yǔ)句在 DA 上重放應(yīng)該不會(huì)被成功執(zhí)行,畢竟 Where 條件都不匹配了。而且在 DP 產(chǎn)生的 Binlog 中,確實(shí)也記錄了 SQL 語(yǔ)句的 Where 條件,無(wú)論從哪個(gè)角度上來(lái)看第 3 步的 SQL 語(yǔ)句都不應(yīng)該被重放成功。### UPDATE `test`.`t20200709`

### WHERE

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2='name2' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */

### SET

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2='name3' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */

# at 684315240

那么這個(gè)問(wèn)題難道是 MySQL 自身的 Bug,抑或是 MySQL 在某些特殊參數(shù)或者條件下的正常表現(xiàn)?對(duì)于這個(gè)問(wèn)題,本文將可能的給出這個(gè)問(wèn)題的詳細(xì)解釋和分析。

2. Row 格式下 RelayLog 的重放

2.1 BEFOR IMAGE && AFTER IMAGE && binlog_row_image 參數(shù)

在最后解釋本文最初提出的問(wèn)題前,需要先來(lái)看下 RelayLog 是怎么被重放的。一般情況下,當(dāng)有 DML 語(yǔ)句變更數(shù)據(jù)庫(kù)中的數(shù)據(jù)的時(shí)候,Binlog 會(huì)記錄下事件描述信息、BEFORE IMAGE 和 AFTER IMAGE 等信息。在這里有一個(gè)概念 BEFORE IMAGE 和 AFTER IMAGE 需要先介紹下:BEFORE IMAGE : 前鏡像,既數(shù)據(jù)修改前的樣子。

AFTER IMAGE : 后鏡像,既數(shù)據(jù)修改后的樣子。

為了方便理解,這里貼一個(gè) Binlog 的例子。假設(shè)當(dāng)前有表 t20200709,然后表中數(shù)據(jù)如下:mysql> select * from t20200709 ;

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

| id | name |

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

| 1 | name4 |

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

1 rows in set (0.00 sec)

之后執(zhí)行 SQL 語(yǔ)句 update t20200709 set name =1 where id = 1;mysql> update t20200709 set name =1 where id = 1;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1 Changed: 1 Warnings: 0

然后來(lái)看下 Binlog 中的記錄:#200715 17:28:28 server id 15218 end_log_pos 400 CRC32 0xe4dedec0 Update_rows: table id 4034114356 flags: STMT_END_F

### UPDATE `test`.`t20200709`

### WHERE

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2='name4' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */

### SET

### @1=1 /* INT meta=0 nullable=0 is_null=0 */

### @2='1' /* VARSTRING(255) meta=255 nullable=1 is_null=0 */

# at 400

可以見(jiàn)得,在修改之前 name 字段的值是 'name4',在 Binlog 中用 Where 條件 @2='name4' 來(lái)指明,而修改后的 name 的值是 '1',在 Binlog 中就是 @2='1' 來(lái)指明。因此 BEFORE IMAGE 就是 Binlog 中 WHERE 到 SET 的部分。而 AFTER IMAGE 就是 SET 之后的部分。

那么 DELETE,UPDATE 和 INSERT 語(yǔ)句被記錄在 Binlog 中的時(shí)候,是否都有 BEFORE IMAGE 和 AFTER IMAGE?其實(shí)不是所有的 DML 事件類型都擁有兩個(gè) IMAGE 的,參見(jiàn)圖 2-2 可知只有 UPDATE 語(yǔ)句,會(huì)同時(shí)擁有 BEFORE IMAGE 和 AFTER IMAGE。

BEFOR IMAGE 和 AFTER IMAGE 默認(rèn)會(huì)記錄所有的列的變更,因此會(huì)導(dǎo)致 Binlog 的內(nèi)容變得很大。那么有沒(méi)有參數(shù)可以控制 IMAGE(對(duì)于 BEFOR IMAGE 和 AFTER IMAGE 以下合并簡(jiǎn)稱為 IMAGE)的行為?MySQL5.7 之后引入了一個(gè)新的參數(shù) binlog_row_image

用于控制 IMAGE 的行為。binlog_row_image 參數(shù)的值有三個(gè):full:Log all columns in both the before image and the after image. 既所有的列的值的變更,都會(huì)在IMAGE中記錄。系統(tǒng)默認(rèn)是full。

minimal:Log only those columns in the before image that are required to identify the row to be changed; log only those columns in the after image where a value was specified by the SQL statement, or generated by auto-increment. BEFOR IMAGE 只記錄哪些能夠唯一標(biāo)識(shí)數(shù)據(jù)的列,比如主鍵,唯一鍵等。AFTER IMAGE 只記錄了變更的列。可以看出,minimal會(huì)有效的減少Binlog的大小。

noblob:Log all columns (same as full), except for BLOB and TEXT columns that are not required to identify rows, or that have not changed. 對(duì)于其他列的行為都和 full 參數(shù)一樣。但是對(duì)于 BLOB 和 TEXT,在不是可以標(biāo)識(shí)數(shù)據(jù)行或者有變更的情況下不做記錄。

可以看出binlog_row_image可以有效控制Binlog的大小,但是如果要保證數(shù)據(jù)的一致性,最好的值就是設(shè)置為full。

2.2 slave_rows_search_algorithms 參數(shù)

前文提到了 IMAGE 與 binlog_row_image 相關(guān)的內(nèi)容。本節(jié)開(kāi)始將主要介紹 Relay Log 的重放的時(shí)候,對(duì)于被重放的記錄的查找邏輯。對(duì)于 DELETE 和 UPDATE 操作,需要先對(duì)數(shù)據(jù)庫(kù)中的記錄進(jìn)行檢索以確定需要執(zhí)行 Binlog 重放的數(shù)據(jù)。如果從庫(kù)的表上沒(méi)有主鍵或唯一鍵時(shí),則需要根據(jù)每一個(gè)行記錄 BEFOR IMAGE 在所有數(shù)據(jù)中進(jìn)行一次全表掃描。在大多數(shù)情況下這種開(kāi)銷非常巨大,會(huì)導(dǎo)致從庫(kù)和主庫(kù)的巨大延遲。從 MySQL5.6 開(kāi)始提供了參數(shù) slave_rows_search_algorithms參數(shù)說(shuō)明:

用于控制在 Relay Log 執(zhí)行重放的時(shí)候?qū)τ谟涗浀臋z索行為。其基本的思路是收集每條記錄的 BEFOR IMAGE 信息,然后根據(jù) BEFOR IMAGE 的信息在被重放的表中檢索對(duì)應(yīng)的記錄。根據(jù) MySQL 的文檔,檢索數(shù)據(jù)的方式有如下的幾種:INDEX_SCAN

TABLE_SCAN

HASH_SCAN

如上三個(gè)方式可以兩兩組合并賦值給 slave_rows_search_algorithms 參數(shù)。MySQL 文檔也給出了如下的說(shuō)明:Index used / option valueINDEX_SCAN,HASH_SCANINDEX_SCAN,TABLE_SCANPrimary key or unique keyIndex scanIndex scan

(Other) KeyHash scan over indexIndex scan

No indexHash scanTable scanThe default value is INDEX_SCAN,TABLE_SCAN, which means that all searches that can use indexes do use them, and searches without any indexes use table scans.

To use hashing for any searches that do not use a primary or unique key, set INDEX_SCAN,HASH_SCAN. Specifying INDEX_SCAN,HASH_SCAN has the same effect as specifying INDEX_SCAN,TABLE_SCAN,HASH_SCAN, which is allowed.

Do not use the combination TABLE_SCAN,HASH_SCAN. This setting forces hashing for all searches. It has no advantage over INDEX_SCAN,HASH_SCAN, and it can lead to “record not found” errors or duplicate key errors in the case of a single event containing multiple updates to the same row, or updates that are order-dependent.INDEX_SCAN,TABLE_SCAN: 可以看出在默認(rèn)的情況下,既 INDEX_SCAN,TABLE_SCAN 如果有主鍵或者唯一鍵,則通過(guò)主鍵或者唯一鍵來(lái)查詢數(shù)據(jù)并重放 AFTER IMAGE。如果沒(méi)有主鍵或者唯一鍵,則通過(guò)二級(jí)索引完成這個(gè)工作。如果什么都沒(méi)有,則使用全表掃描的方式。

INDEX_SCAN,HASH_SCAN : 在表有主鍵或者唯一鍵的情況下, INDEX_SCAN,HASH_SCAN 配置也是使用的主鍵或者唯一鍵去定位數(shù)據(jù)。在表有二級(jí)索引或者完全沒(méi)有索引的情況下會(huì)使用 HASH_SCAN 的方法。

可以見(jiàn)得 Slave 檢索需要重放的數(shù)據(jù)的時(shí)候,三個(gè)檢索方式的優(yōu)先級(jí)是 Index Scan > Hash Scan > Table Scan

相信讀者在這里會(huì)有 2 個(gè)疑問(wèn):Hash Scan 的原理是什么?它和 Table Scan 以及 Index Scan 有什么區(qū)別?文檔中還提到了 Hash scan over index 這個(gè)和 Index 有什么關(guān)系?

前文提到在表沒(méi)有主鍵或者唯一鍵的時(shí)候,會(huì)通過(guò)二級(jí)索引來(lái)定位數(shù)據(jù)。假設(shè)表中有 N 個(gè)二級(jí)索引(包括單列索引和聯(lián)合索引),哪個(gè)二級(jí)索引會(huì)被選中?

2.3 Hash Scan && Table Scan && Index Scan 實(shí)現(xiàn)

分析 MySQL 源碼可知最后決定使用哪個(gè)檢索方式是在函數(shù) Rows_log_event::decide_row_lookup_algorithm_and_key 里面實(shí)現(xiàn)的。9745 void

9746 Rows_log_event::decide_row_lookup_algorithm_and_key()

9747 {

9748

... ...

9781 /* PK or UK => use LOOKUP_INDEX_SCAN */

9782 this->m_key_index= search_key_in_table(table, cols, (PRI_KEY_FLAG | UNIQUE_KEY_FLAG));

9783 if (this->m_key_index != MAX_KEY)

9784 {

9785 DBUG_PRINT("info", ("decide_row_lookup_algorithm_and_key: decided - INDEX_SCAN"));

9786 this->m_rows_lookup_algorithm= ROW_LOOKUP_INDEX_SCAN;

9787 goto end;

9788 }

... ...

9790 TABLE_OR_INDEX_HASH_SCAN:

... ...

9808 TABLE_OR_INDEX_FULL_SCAN:

... ...

9827 end:

... ...

在 9782 行會(huì)先檢索表中是否有主鍵和唯一鍵。之后在 TABLE_OR_INDEX_HASH_SCAN 和 TABLE_OR_INDEX_FULL_SCAN 決定最后使用哪種檢索方式。在 do_apply_event 函數(shù)中,會(huì)根據(jù) decide_row_lookup_algorithm_and_key 的結(jié)果去調(diào)用函數(shù):11286 switch (m_rows_lookup_algorithm)

11287 {

11288 case ROW_LOOKUP_HASH_SCAN:

11289 do_apply_row_ptr= &Rows_log_event::do_hash_scan_and_update;

11290 break;

11291

11292 case ROW_LOOKUP_INDEX_SCAN:

11293 do_apply_row_ptr= &Rows_log_event::do_index_scan_and_update;

11294 break;

11295

11296 case ROW_LOOKUP_TABLE_SCAN:

11297 do_apply_row_ptr= &Rows_log_event::do_table_scan_and_update;

11298 break;

11299

11300 case ROW_LOOKUP_NOT_NEEDED:

11301 DBUG_ASSERT(get_general_type_code() == binary_log::WRITE_ROWS_EVENT);

11302

11303 /* No need to scan for rows, just apply it */

11304 do_apply_row_ptr= &Rows_log_event::do_apply_row;

11305 break;

11306

11307 default:

11308 DBUG_ASSERT(0);

11309 error= 1;

11310 goto AFTER_MAIN_EXEC_ROW_LOOP;

11311 break;

11312 }

可以見(jiàn)得:do_hash_scan_and_update: 對(duì)應(yīng) hash_scan 方式。

do_index_scan_and_update: 對(duì)應(yīng) index_scan 方式。

do_table_scan_and_update:對(duì)應(yīng) table_scan 方式。

接下來(lái)分別介紹下這三個(gè)函數(shù)所完成的內(nèi)容。

2.3.1 do_hash_scan_and_update

do_hash_scan_and_update 函數(shù)主要實(shí)現(xiàn)了 Hash Scan 檢索數(shù)據(jù)的功能。在實(shí)現(xiàn)方式上又可以分為 H --> Hash Scan 和 Hi --> Hash over Index 兩種方式。首先來(lái)看下 Hash Scan 的實(shí)現(xiàn)方法,圖 2-5 給出 Hash Scan 的實(shí)現(xiàn)邏輯。

可以見(jiàn)得 Binlog 中的 BI 在 Slave 上會(huì)被處理到一個(gè) Hash 表中。因?yàn)闆](méi)有合適的索引可以使用,所以使用全表掃描的方式每獲取一條記錄就根據(jù)記錄的值計(jì)算一個(gè) hash 值,然后在 BI 的 Hash 表中匹配。如果匹配到了 BI,則重放并刪除 Hash 表中的記錄。

如果 test06 表中 id 列上有索引,那么在 Slave 重放的使用會(huì)使用 Hi --> Hash over index 的方式。如圖 2-6 所示給出了 Hash over Index 方式(以下均簡(jiǎn)稱 Hi)的實(shí)現(xiàn)邏輯。

可以見(jiàn)得如果通過(guò) Hi 方式進(jìn)行重放,則會(huì)對(duì)使用的二級(jí)索引生成一個(gè) m_distinct_keys 結(jié)構(gòu),這個(gè)結(jié)構(gòu)存放著這個(gè) BI 中這個(gè)索引所有的去重值。然后對(duì)于 Slave 上的 test06 表通過(guò) m_distinct_keys 中的每一個(gè)值在二級(jí)索引上進(jìn)行遍歷,遍歷獲取的記錄與 m_hash 中的結(jié)果對(duì)比并執(zhí)行重放邏輯。

ps : 對(duì)于 Hash Scan 方式還要一個(gè)比較迷惑的特性,讀者可以參考下這篇文章技術(shù)分享 | HASH_SCAN BUG 之迷惑行為大賞

2.3.2 do_index_scan_and_update

Index Scan 方式會(huì)通過(guò)索引檢索 Slave 上需要重放的數(shù)據(jù)。通過(guò)索引檢索數(shù)據(jù)的方式又可以分為:通過(guò)主鍵/唯一鍵索引檢索數(shù)據(jù)。

通過(guò)二級(jí)索引檢索數(shù)據(jù)。

在通過(guò)主鍵或者唯一鍵索引檢索數(shù)據(jù)的時(shí)候會(huì)調(diào)用 do_index_scan_and_update 函數(shù),在函數(shù)邏輯中直接通過(guò)主鍵/唯一鍵索引返回了記錄然后重放 Binlog。

而在通過(guò)二級(jí)索引檢索數(shù)據(jù)的時(shí)候,會(huì)對(duì)二級(jí)索引返回的數(shù)據(jù)與 BI 中每一條記錄做比較,如果一致就會(huì)重放 Binlog。

至此可以發(fā)現(xiàn) Index Scan 下對(duì)于主鍵/唯一鍵和二級(jí)索引的實(shí)現(xiàn)邏輯有一些不同。對(duì)于主鍵/唯一鍵,對(duì)于索引到的記錄并不會(huì)和 BI 中的每一個(gè)列做比較,而二級(jí)索引獲取到的數(shù)據(jù)會(huì)與 BI 中每一個(gè)列做比較,如果不一致而不會(huì)重放并報(bào)錯(cuò)。

2.3.3 do_table_scan_and_update

Table Scan 的實(shí)現(xiàn)相對(duì)簡(jiǎn)單,如果沒(méi)有任何的索引可以使用,只能通過(guò)全表掃描的方式獲取每一行數(shù)據(jù)并和BI中的每一行做比較。因此如果 Slave 上的數(shù)據(jù)和 Master 上的數(shù)據(jù)不一致,也會(huì)如圖 2-9 中所示一樣報(bào)錯(cuò)。關(guān)于 Table Scan 更加具體的實(shí)現(xiàn)方式,讀者可以參考 MySQL 源碼 sql/log_event.cc 文件中的 do_table_scan_and_update 函數(shù),在這里就不過(guò)多的展開(kāi)。

2.3.4 小結(jié)

至此可以回答本文之前提出的這個(gè)問(wèn)題了:Hash scan 方法的原理是什么?它和 Table scan 以及 Index scan 有什么區(qū)別?文檔中還提到了 Hash scan over index 這個(gè)和 Index 又有什么關(guān)系?

可以見(jiàn)得,Hash Scan 的原理是將 BI 每一行的內(nèi)容都放入一個(gè) Hash 表中。如果可以使用二級(jí)索引(既 Hash scan over index 這個(gè)方式),則額外的對(duì) BI 中二級(jí)索引的值生成一個(gè) Hash 結(jié)構(gòu),并且將 BI 中二級(jí)索引列的去重值放入這個(gè) Hash 結(jié)構(gòu)中。之后不管是通過(guò)全表掃描還是索引的方式獲取數(shù)據(jù),都會(huì)通過(guò) Hash 結(jié)構(gòu)去定位 BI 中的數(shù)據(jù)。對(duì)于 Table Scan 和 Index Scan 在獲取表中的每一行之后,都需要去和 BI 中的記錄做一次查找和比較(有主鍵或者唯一鍵的時(shí)候不做比較),而 BI 的每一行并沒(méi)有生成類似于 Hash 的結(jié)構(gòu),因此從算法的時(shí)間復(fù)雜度效率上來(lái)說(shuō)是屬于 O(n^2) 的。而 Hash Scan 在獲取一條記錄之后也需要根據(jù) BI 生成的 Hash 結(jié)構(gòu)中查找記錄,但是對(duì)于 Hash 結(jié)構(gòu)的查找來(lái)說(shuō)效率是 O(1),因此可以忽略不計(jì)。由此可以看出,在沒(méi)有主鍵的情況下 Hi 和 Ht 方式的效率是會(huì)比 Table Scan 和 Index Scan 來(lái)的高一些。

同時(shí)到這里,也可以回答本文開(kāi)頭的問(wèn)題,為什么當(dāng)前表中的記錄有一列值已經(jīng)和 BI 中的記錄不一致了,Binlog 中的操作還會(huì)重放。原因就是因?yàn)樵谀J(rèn)的 INDEX_SCAN,TABLE_SCAN 方式下,對(duì)于有主鍵/唯一鍵的表不會(huì)去比較 BI 中的記錄是否和檢索到的數(shù)據(jù)一致。

2.4 Hash Scan Over Index && Index Scan 中二級(jí)索引的選擇

前文提到了在有二級(jí)索引的情況下,Hash Scan 和 Index Scan 都會(huì)選擇二級(jí)索引進(jìn)行掃描。如果表中存在多個(gè)二級(jí)索引,MySQL 會(huì)選擇哪個(gè)?通過(guò)源碼分析,最后驚訝的發(fā)現(xiàn),在 binlog_row_image 參數(shù)是 Full 的情況下,如果表中存在多個(gè)二級(jí)索引,MySQL 會(huì)默認(rèn)選擇使用第一個(gè)索引進(jìn)行重放。在 decide_row_lookup_algorithm_and_key 函數(shù)中,除了決定了使用哪種方式檢索數(shù)據(jù)以外(例如使用 Hash Scan 還是 Table Scan),也決定了后續(xù)使用哪個(gè)索引。

如圖 2-10 給出了選擇二級(jí)索引的時(shí)候的邏輯。可以發(fā)現(xiàn)如果在遍歷的過(guò)程中,找到了第一個(gè)所有的列都在 BI 中 key,則會(huì)使用這個(gè) key。給出一個(gè)例子,test06 的表結(jié)構(gòu)和表中數(shù)據(jù)如下:*************************** 1. row ***************************

Table: test06

Create Table: CREATE TABLE `test06` (

`id` int(11) NOT NULL,

`name` varchar(255) DEFAULT NULL,

`c1` int(11) DEFAULT NULL,

KEY `k1` (`id`),

KEY `k2` (`id`,`name`),

KEY `k3` (`c1`,`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.13 sec)

mysql> select * from test06 ;

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

| id | name | c1 |

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

| 2582 | name3 | 1 |

| 2582 | name4 | 1 |

| 1 | name1 | 0 |

| 1 | name2 | 0 |

| 1 | name3 | 0 |

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

5 rows in set (0.00 sec)

在 Master 上執(zhí)行 SQL,同時(shí) Master 上的執(zhí)行計(jì)劃如下:delete from test06 where id = 1 and name ='name3' and c1=0;

mysql> explain delete from test06 where id = 1 and name ='name3' and c1=0;

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

| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |

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

| 1 | DELETE | test06 | NULL | range | k1,k2,k3 | k2 | 772 | const,const | 1 | 100.00 | Using where |

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

1 row in set (0.00 sec)

可以見(jiàn)得,在 Master 上優(yōu)化器選擇了 k2 這個(gè)聯(lián)合索引。通過(guò) GDB 跟蹤 Slave 的進(jìn)程,在 log_event.cc 第 9733 行打斷點(diǎn):9714 if (key_type & MULTIPLE_KEY_FLAG && table->s->keys)

9715 {

9716 DBUG_PRINT("debug", ("Searching for K."));

9717 for (key=0,keyinfo= table->key_info ;

9718 (key < table->s->keys) && (res == MAX_KEY);

9719 key++,keyinfo++)

9720 {

9721 /*

9722 - Skip innactive keys

9723 - Skip unique keys without nullable parts

9724 - Skip indices that do not support ha_index_next() e.g. full-text

9725 - Skip primary keys

9726 */

9727 if (!(table->s->keys_in_use.is_set(key)) ||

9728 ((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME) ||

9729 !(table->file->index_flags(key, 0, true) & HA_READ_NEXT) ||

9730 (key == table->s->primary_key))

9731 continue;

9732

9733 res= are_all_columns_signaled_for_key(keyinfo, bi_cols) ?

9734 key : MAX_KEY;

9735

9736 if (res < MAX_KEY)

9737 DBUG_RETURN(res);

9738 }

9739 DBUG_PRINT("debug", ("Not all columns signaled for K."));

9740 }

可以觀察到這時(shí)候 m_key_index 的值是 0,并且觀察 keyinfo 變量的值為:(gdb) print *keyinfo

$4 = {key_length = 4, flags = 0, actual_flags = 0, user_defined_key_parts = 1, actual_key_parts = 1, unused_key_parts = 0, usable_key_parts = 1, block_size = 0, algorithm = HA_KEY_ALG_UNDEF, {

parser = 0x0, parser_name = 0x0}, key_part = 0x7f2f4c015a00, name = 0x7f2f4c012bb1 "k1", rec_per_key = 0x7f2f4c012bc0, m_in_memory_estimate = -1, rec_per_key_float = 0x7f2f4c012bf8, handler = {

bdb_return_if_eq = 0}, table = 0x7f2f4c92d1a0, comment = {str = 0x0, length = 0}}

接下來(lái),刪除 k1 這個(gè)索引,再來(lái)觀察下 m_key_index 和 keyinfo 的值。(gdb) print *keyinfo

$7 = {key_length = 772, flags = 64, actual_flags = 64, user_defined_key_parts = 2, actual_key_parts = 2, unused_key_parts = 0, usable_key_parts = 2, block_size = 0, algorithm = HA_KEY_ALG_UNDEF, {

parser = 0x0, parser_name = 0x0}, key_part = 0x7f2f4c92b680, name = 0x7f2f4c92e7d1 "k2", rec_per_key = 0x7f2f4c92e7d8, m_in_memory_estimate = -1, rec_per_key_float = 0x7f2f4c92e808, handler = {

bdb_return_if_eq = 0}, table = 0x7f2f4ca9fd90, comment = {str = 0x0, length = 0}}

可以發(fā)現(xiàn)刪除了 k1 之后,Slave 上就選擇 k2 這個(gè)索引,和 Master上的執(zhí)行計(jì)劃選擇的索引一致了。通過(guò)前面的源碼分析和調(diào)試跟蹤可以發(fā)現(xiàn),MySQL 在 Slave 重放數(shù)據(jù)的時(shí)候(沒(méi)有主鍵和唯一鍵的情況),選擇的索引是第一個(gè)所有的列都在 BI 中存在的索引。因此可能存在 Slave 上選擇的索引不是最優(yōu)的導(dǎo)致 Slave 和 Master 有巨大延遲。

3. 總結(jié)

至此前文提出的幾個(gè)問(wèn)題都基本清楚了,可以總結(jié)出如下的幾點(diǎn)內(nèi)容:在有主鍵或者唯一鍵的情況下,Slave 重放 Binlog 并不會(huì)去比較檢索到的記錄的每一列是否和BI相同,因此如果 Slave 和 Master 存在數(shù)據(jù)不一致,會(huì)直接覆蓋 Slave 的數(shù)據(jù)而不會(huì)報(bào)錯(cuò)。

在沒(méi)有主鍵或者唯一鍵的情況下,Hash Scan / Hash Scan Over Index 的執(zhí)行效率 在理論上分析高于 Table Scan 和Index Scan 。

在沒(méi)有主鍵或者唯一鍵的情況下,Slave 選擇的二級(jí)索引是第一個(gè)所有的列都在 BI 中存在的索引,不一定是 Master 執(zhí)行計(jì)劃所選擇的索引。

最后本文所有分析的源碼都是基于 mysql-5.7.28 版本。限于作者的水平有限,如果文章中有錯(cuò)誤之處,望大家不吝指正。

4. 參考文獻(xiàn)

[1]. MySQL無(wú)主鍵延遲優(yōu)化(slave_rows_search_algorithms). https://www.centos.bz/2018/01...(slave_rows_search_algorithms)

[2]. MySQL 5.7貼心參數(shù)之binlog_row_image. https://www.cnblogs.com/gomys...

[3]. 技術(shù)分享 | delete大表slave回放巨慢的問(wèn)題分析. https://mp.weixin.qq.com/s/ae...

[4]. Causes and Workarounds for Slave Performance Too Slow with Row-Based Events. https://www.percona.com/blog/...

[5]. 技術(shù)分享 | 從庫(kù)數(shù)據(jù)的查找和參數(shù) slave_rows_search_algorithms. https://mp.weixin.qq.com/s/Jh...

[6]. 技術(shù)分享 | HASH_SCAN BUG 之迷惑行為大賞. https://mp.weixin.qq.com/s/7z...

總結(jié)

以上是生活随笔為你收集整理的mysql主从数据丢失_故障分析 | 记一次 MySQL 主从双写导致的数据丢失问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

成人v| 欧美性生交大片免网 | 婷婷丁香自拍 | 国产精品久久久久久久久婷婷 | 午夜av日韩 | 午夜精品一区二区三区在线观看 | 国产精品 日韩 欧美 | 少妇资源站 | 国产视频一区二区在线 | 中文字幕在线免费看线人 | 九色在线 | 国产精品18久久久久vr手机版特色 | 欧美成人h版在线观看 | 免费看污片 | 免费看的黄色录像 | 人人干网| 国产原创av在线 | 免费一级特黄毛大片 | 欧美一区二区三区不卡 | 91成人破解版 | 久久国语 | 欧美成人高清 | 99精品观看| 久久精品99精品国产香蕉 | 国产美女免费观看 | 国产精品午夜久久久久久99热 | 亚洲成人精品久久 | 丁香色婷 | 五月色婷 | 9在线观看免费高清完整版在线观看明 | 手机在线免费av | 久久久免费毛片 | 一区二区三区在线看 | 国产精品久久久久久麻豆一区 | 精品视频中文字幕 | 免费黄色在线 | 丁香花中文字幕 | 精品a视频 | 麻豆视频大全 | 三级在线视频观看 | 精品一区久久 | 一级片视频免费观看 | 欧美 国产 视频 | 亚洲黄色三级 | 成人久久精品视频 | 黄色app网站在线观看 | 国产精品精品久久久久久 | 一区二区三区国 | 五月婷网站 | 国内99视频 | 久久久精选| 免费污片| 日韩精品一区二区三区不卡 | 久久欧美视频 | 国产免费高清视频 | 欧美精品久久久久久久 | 激情五月伊人 | 五月天综合在线 | 日韩 在线观看 | 婷婷色综合| 一区国产精品 | 伊人官网 | 天天操操操操操操 | 亚洲综合色丁香婷婷六月图片 | av天天澡天天爽天天av | 六月婷色 | 免费日韩一区二区三区 | 婷婷六月网| 国产精品成人久久 | 日韩在线观看你懂得 | 日韩激情小视频 | 国产在线色 | 性色av免费在线观看 | 香蕉久草| 日日夜夜免费精品视频 | 日韩av手机在线观看 | 九九九九热精品免费视频点播观看 | 欧美日韩3p | 欧美日韩在线精品 | av免费在线观看网站 | 久久免费福利 | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 国产免费黄色 | 国产视频网站在线观看 | 欧美在线观看视频一区二区三区 | 韩国精品视频在线观看 | 日本久久影视 | 超碰在97 | 婷婷六月中文字幕 | 天天插天天爽 | 国产女人40精品一区毛片视频 | 天天干天天上 | 久久网址 | 精品视频免费观看 | 欧美性大战久久久久 | 欧美国产一区在线 | 99热这里只有精品免费 | 密桃av在线| 超碰在线中文字幕 | 特级西西444www大胆高清无视频 | 日日久视频 | 亚洲精品字幕 | 欧美伦理一区 | 国产黄色大片免费看 | 在线观看 国产 | 超碰免费97 | 五月宗合网 | 日韩国产精品一区 | 天天操天天插 | 天堂av观看 | 国产视频 久久久 | 国产小视频免费在线观看 | 91九色视频国产 | 国产精品欧美 | 欧美极品一区二区三区 | 免费一级片久久 | 日本女人的性生活视频 | 天天综合天天做天天综合 | 91av原创| 欧美一级日韩三级 | 欧美 国产 视频 | 99精品欧美一区二区三区黑人哦 | 国产美女久久 | 91在线超碰 | 一区二区中文字幕在线播放 | 天天爽夜夜操 | 激情五月av | 国产成人一区二区三区在线观看 | 麻豆视频在线免费看 | 免费试看一区 | 91大神免费在线观看 | 欧美一进一出抽搐大尺度视频 | 四川bbb搡bbb爽爽视频 | 日韩网站一区二区 | 在线视频亚洲 | 青青河边草免费观看 | 色99在线 | 毛片一区二区 | 超碰在线免费97 | 青春草免费视频 | 福利视频区 | www.夜夜操 | 成片免费观看视频999 | 亚洲干视频在线观看 | 激情综合网色播五月 | 欧美日比视频 | 在线导航福利 | 国产精品第10页 | 久久韩国免费视频 | 亚洲最大av网站 | 久久不卡电影 | 人人爽人人av | 亚洲精品美女久久 | 亚洲二区精品 | 好看av在线 | 久久久久久久久久影视 | 免费色视频网址 | 丁香狠狠| 免费一级特黄毛大片 | 亚洲国产成人精品久久 | 最近日本字幕mv免费观看在线 | 就要干b | 日本黄色片一区二区 | 国产色影院 | 国产精品高清免费在线观看 | 麻豆视频在线观看免费 | 粉嫩一二三区 | 麻豆免费在线视频 | 久久y | 麻豆视频大全 | 婷婷在线免费观看 | 中文免费在线观看 | 一区二区影视 | 又黄又刺激的网站 | 人人玩人人爽 | 中文字幕在线影院 | 国产欧美精品一区二区三区四区 | 人人澡av | 一级成人网 | 99re6热在线精品视频 | av一级网站 | 亚洲电影自拍 | 在线看一区二区 | 国产手机视频精品 | 久久伊人91| 特黄一级毛片 | 国产九色在线播放九色 | 婷婷av网站 | 日韩动漫免费观看高清完整版在线观看 | 51久久成人国产精品麻豆 | 久久国产系列 | 视频在线观看亚洲 | 天天射天天干天天 | 伊人久在线| 日韩欧美在线第一页 | 婷婷色网视频在线播放 | 国产免费叼嘿网站免费 | 精品国产视频在线观看 | 99热精品国产 | 免费a v观看 | 欧美精品乱码久久久久久按摩 | 久久久久久黄 | 国产传媒一区在线 | 亚洲精品免费视频 | 国产福利91精品 | 在线成人中文字幕 | 亚洲乱码久久久 | 欧美日韩久久 | 涩涩网站在线观看 | 99久久久国产免费 | 久久精品美女视频 | 国产精品一级视频 | 国产99在线播放 | 国产99久久精品一区二区300 | 亚洲国产高清在线观看视频 | 一区二区三区精品在线视频 | 午夜在线观看影院 | 日韩精品一区二区三区电影 | 欧美一区视频 | 久久久久久久久久久久av | 成人国产精品久久久 | 天堂av免费观看 | 亚洲综合导航 | 国语对白少妇爽91 | 在线观看中文字幕视频 | 亚洲精品资源在线观看 | 成人av资源在线 | 91入口在线观看 | 国产精品久久久久av福利动漫 | 日韩性片| 免费91麻豆精品国产自产在线观看 | 手机在线永久免费观看av片 | 成人全视频免费观看在线看 | 人人干人人草 | av在线电影免费观看 | 国产精品激情 | 91久色蝌蚪 | 欧美少妇xx | 97精品久久人人爽人人爽 | 日本系列中文字幕 | av电影在线免费观看 | 亚洲91av | 久久成人免费视频 | 国产又黄又爽又猛视频日本 | 欧美黄污视频 | 亚洲精品色 | 综合色久 | 日韩av片无码一区二区不卡电影 | 日韩中文在线字幕 | 四虎国产精品永久在线国在线 | 欧美黑人巨大xxxxx | 日本黄色免费电影网站 | 日韩中文在线电影 | 国产精品短视频 | 日韩资源在线观看 | 国产一区二区中文字幕 | 久久久久北条麻妃免费看 | 久久久久免费电影 | 99久久精品国产一区二区成人 | 国产精品美女久久久免费 | 97香蕉久久国产在线观看 | 久久久久亚洲国产 | 天天操天天色天天 | 一级欧美黄 | 色婷婷激情四射 | 在线免费性生活片 | 日韩在观看线 | 国产精品欧美 | av成人在线播放 | 视频91| 伊人激情网 | 日韩中文字幕亚洲一区二区va在线 | 久草视频免费在线观看 | 美女在线免费视频 | 久久久久久免费 | 精品日韩视频 | 国产97在线视频 | 日韩欧美在线观看 | 国产69久久久 | 久久99精品久久久久久三级 | 日本久久综合网 | 久久亚洲欧美日韩精品专区 | 亚洲精品乱码久久久久久写真 | 麻豆 91 在线 | 999ZYZ玖玖资源站永久 | 日本爱爱免费视频 | 超碰97在线看 | 色在线视频网 | 999久久a精品合区久久久 | 91视频在线免费观看 | 久久久久久久久久久久国产精品 | 中文字幕乱码亚洲精品一区 | 欧美少妇bbwhd | 免费久久网 | 97超碰总站| 久久精品国产一区二区三区 | 69国产精品视频免费观看 | 婷五月天激情 | 黄色a一级视频 | 国产免费xvideos视频入口 | 成人在线中文字幕 | 久久tv视频| 色视频国产直接看 | 最新日韩在线 | 美女网站在线看 | av大全在线免费观看 | 日本黄色免费在线 | bbb搡bbb爽爽爽 | 尤物九九久久国产精品的分类 | 日日夜夜精品网站 | 91精品综合在线观看 | av福利免费 | 伊人久久在线观看 | 高清国产午夜精品久久久久久 | 在线免费黄色片 | 综合色站 | 免费看黄在线观看 | 日韩高清免费电影 | 天天射色综合 | 一区二区三区免费播放 | 国产青草视频在线观看 | 国产一级片久久 | 久久精品最新 | 国产小视频在线免费观看 | 国产精品 欧美 日韩 | av成人在线观看 | 久久国产福利 | 色小说在线 | 在线97| 五月香视频在线观看 | 久久国产精彩视频 | 在线电影a | 国产明星视频三级a三级点| 亚洲一级免费电影 | 在线观看亚洲a | www.天天成人国产电影 | 成人a免费看 | 麻豆传媒视频在线 | 久久er99热精品一区二区三区 | 色婷婷亚洲 | 久草国产在线观看 | 玖玖视频精品 | 狠狠操狠狠插 | 福利视频网址 | 久久国产精品99久久人人澡 | 狠狠干我 | 国产精品一区二区av日韩在线 | 美女网站视频一区 | 在线免费观看国产 | 日韩激情视频在线观看 | 97人人网 | 久久成年人视频 | 久久国产精品网站 | 久插视频 | 久久九九精品久久 | 欧美a级片网站 | 免费的国产精品 | 精品欧美一区二区在线观看 | 超碰成人av | 国产成人av在线 | 99久久国产免费,99久久国产免费大片 | 娇妻呻吟一区二区三区 | 国产一区自拍视频 | 亚洲精品无| 成人免费在线观看入口 | 欧美日韩另类视频 | 国产免费又粗又猛又爽 | 在线观看网站黄 | 国产一级视频免费看 | 精品一区电影国产 | 国产精品专区在线 | 国产视频一区在线 | 一区二区三区高清在线 | 夜夜躁日日躁狠狠久久88av | 婷婷精品 | 久久久久久久久久久久国产精品 | 国产成人精品一区二区三区网站观看 | 中文字幕 第二区 | 欧美日本国产在线观看 | 丁香网婷婷| 国产精品一区二区三区视频免费 | 国产一区欧美二区 | 香蕉在线观看 | 久久久免费av | 日韩精品免费 | 玖玖在线免费视频 | 欧美日韩不卡一区二区 | 天天爱天天色 | 国产一区精品在线 | 成人黄色大片在线观看 | 亚洲视频在线免费观看 | 成人在线视频你懂的 | 最近2019年日本中文免费字幕 | 欧洲激情综合 | 激情中文字幕 | 国产伦理一区二区 | 麻豆91小视频 | 久久精品老司机 | 欧美日韩国产成人 | 天天操天天谢 | 国内免费久久久久久久久久久 | 国产福利久久 | 一级成人在线 | 99精品免费视频 | 午夜精品久久久久久久久久久 | 欧美精品乱码久久久久久按摩 | 在线亚洲午夜片av大片 | 色五丁香 | 国产精品专区h在线观看 | 国产视频美女 | 日韩av影视 | 中文字幕在线免费 | 国产精品 中文字幕 亚洲 欧美 | 精品在线一区二区 | 国产白浆在线观看 | 波多野结衣电影一区二区三区 | 黄色成人影视 | 91av视频| 丁香电影小说免费视频观看 | 国产亚洲婷婷 | 精品视频免费在线 | 免费观看www7722午夜电影 | 国产精品精品久久久久久 | 免费日韩av片 | 亚洲精品视频免费在线 | 国产精品久久久久久影院 | 亚洲男人天堂a | 欧美性生活免费 | 国色天香在线观看 | 五月天丁香综合 | av女优中文字幕在线观看 | 国产香蕉97碰碰碰视频在线观看 | 精品自拍网 | 久久久久国产精品免费 | 日本aa在线 | 国产精品午夜久久 | 在线免费观看涩涩 | 91超国产| 日本资源中文字幕在线 | 国产在线一区观看 | 国产精品午夜av | 国产一区av在线 | 18pao国产成视频永久免费 | 久久精品国产第一区二区三区 | 国产精品久久久久永久免费看 | 天操夜夜操 | 国产精品手机看片 | 狠狠干夜夜| 国产精品国产三级国产aⅴ9色 | 久久久久福利视频 | 天天色影院 | 日日爱av| 国内精品美女在线观看 | 国产成人三级在线播放 | 97在线观看免费视频 | 亚洲精区二区三区四区麻豆 | 久久精品一区二区三区视频 | 日批网站免费观看 | 日韩欧美视频 | 亚洲精品看片 | 999久久久久久久久 69av视频在线观看 | 免费观看性生交大片3 | 高清不卡一区二区三区 | 国产人成一区二区三区影院 | 国产黄a三级三级 | 中文乱幕日产无线码1区 | 日韩中文字幕在线不卡 | 最近中文字幕免费av | 亚洲91网站 | 国产精品色| 中文字幕在线观 | 在线观看视频在线观看 | 亚洲人成人天堂h久久 | 国产精品国产亚洲精品看不卡15 | 综合婷婷久久 | 国产视频美女 | 特及黄色片 | 久久 精品一区 | 国产又粗又猛又黄又爽的视频 | 在线天堂中文www视软件 | 成人黄色片免费 | 亚洲一区二区三区miaa149 | 久久激情五月激情 | 精品视频免费在线 | 91毛片在线 | 精品中文字幕在线观看 | www.天天操 | 国产日韩精品久久 | 国产黄色大片 | 天天色天天色天天色 | 91热视频在线观看 | 在线亚洲天堂网 | 成年人视频在线 | 国产综合在线观看视频 | 国产成人av一区二区三区在线观看 | 91免费版在线 | 97超碰国产精品女人人人爽 | 欧美久久久久久久 | 亚洲成 人精品 | 天天曰天天| 在线视频 91 | av中文在线 | 69精品在线观看 | 91亚洲国产成人久久精品网站 | 又黄又爽又刺激视频 | 蜜臀av性久久久久蜜臀av | 国产一区91| 超碰国产在线播放 | 中文字幕高清免费日韩视频在线 | 欧美精品中文 | avove黑丝| 欧美一区在线看 | 成 人 黄 色 视频免费播放 | 国产青春久久久国产毛片 | 国产精品日韩在线播放 | av资源免费在线观看 | 精品视频国产 | 五月婷婷六月丁香在线观看 | 国产xxxx做受性欧美88 | 国产精品a成v人在线播放 | www.人人干| 国产精品麻 | 日韩免费视频网站 | 久久精品黄| 国产伦精品一区二区三区高清 | 青春草免费在线视频 | 91在线免费播放 | 91桃色在线观看视频 | 激情文学综合丁香 | 欧美性生活小视频 | 日韩欧美大片免费观看 | 亚洲黄色成人网 | 国产伦精品一区二区三区在线 | 久久久国产精品视频 | 久久资源总站 | 精品在线观看国产 | 99色婷婷 | 在线观看免费91 | 久久久久久激情 | 中文字幕在线观看资源 | 精品伦理一区二区三区 | 在线视频麻豆 | 日韩亚洲欧美中文字幕 | 亚洲精品综合一二三区在线观看 | 人人爽久久涩噜噜噜网站 | 国产一级精品绿帽视频 | 在线观看免费视频你懂的 | 91免费网站在线观看 | 麻豆免费视频网站 | 深夜免费福利在线 | 欧美色图视频一区 | 成人禁用看黄a在线 | 精品1区2区3区| 欧美激情综合五月色丁香小说 | 一级黄视频| 欧美综合在线视频 | 成人资源站 | 一本一本久久a久久精品牛牛影视 | 91精品视频免费在线观看 | 日本高清dvd | 国产精品免费久久久 | 天天干,天天干 | 一区二区三区视频在线 | 热re99久久精品国产66热 | 久久国产乱 | 国产欧美最新羞羞视频在线观看 | av免费看在线 | 日韩一区二区在线免费观看 | 欧美成人播放 | 国产精品一区二区久久精品爱微奶 | 欧美日韩精品影院 | 涩涩伊人 | 在线观看国产成人av片 | 国产精品毛片网 | 97品白浆高清久久久久久 | 久久精品com | 久久久av电影| 新版资源中文在线观看 | 精品久久久久久亚洲综合网站 | 亚洲aaa级 | 91资源在线 | 精品96久久久久久中文字幕无 | 人人爱爱 | 日韩在线视 | 91在线区 | 在线播放精品一区二区三区 | 婷婷综合亚洲 | 久久精品视频免费播放 | 一本一道久久a久久精品 | 最近日本韩国中文字幕 | 免费av在线网 | 国产精品久久久久久a | 成人在线免费视频 | 中文字幕高清 | 高清一区二区 | 黄色av网站在线免费观看 | 国产欧美日韩视频 | 五月天亚洲综合 | 在线一区观看 | 91色蜜桃| 最近中文字幕免费av | 可以免费看av | 日本精品久久久久久 | 成人影片在线免费观看 | 中文字幕亚洲欧美日韩2019 | 最新中文字幕视频 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 五月激情丁香图片 | 四虎影院在线观看av | 天天色天天综合 | 久久久受www免费人成 | 91色亚洲 | 97av超碰| 午夜精品久久久久久久99无限制 | 久久免费99精品久久久久久 | 天天操天天干天天摸 | 亚洲欧美日韩精品久久奇米一区 | av在线电影网站 | 日韩网站中文字幕 | 精品麻豆入口免费 | 日韩二区在线播放 | 成年人免费看片网站 | 一区二区视频在线播放 | 中文字幕欧美日韩va免费视频 | 九九九九九九精品任你躁 | 在线观看国产 | 日韩在线视频播放 | 亚洲永久精品在线观看 | 91久久国产露脸精品国产闺蜜 | 久草在线这里只有精品 | 成人免费大片黄在线播放 | 六月丁香六月婷婷 | 久久久精品国产免费观看同学 | 欧美一级免费高清 | 丁香资源影视免费观看 | 亚洲在线视频网站 | 毛片一二区 | 国产精品99久久久久久人免费 | 欧美一级欧美一级 | 成人一级电影在线观看 | 欧美性生活免费 | 一级成人免费 | 国产精品久久久久久久久久久久久久 | 亚洲成人网av | 日韩视频一区二区三区在线播放免费观看 | 91传媒激情理伦片 | 玖玖在线播放 | 韩国在线一区 | 欧美va电影 | 日日夜夜天天久久 | 在线播放 一区 | 成人一区影院 | 奇米导航 | 2018精品视频 | 香蕉视频在线免费 | 日本深夜福利视频 | 日韩mv欧美mv国产精品 | 日躁夜躁狠狠躁2001 | 国产精品系列在线播放 | 一区二区三区在线看 | 这里只有精品视频在线观看 | 国产精品av久久久久久无 | 日韩精品最新在线观看 | 亚洲美女视频在线 | 欧美国产日韩在线视频 | 欧美男女爱爱视频 | 久久久久国产免费免费 | 日韩精品中文字幕在线观看 | 丁香六月激情婷婷 | 在线观看视频你懂的 | 欧美国产日韩激情 | 国产精品久久久久久久久久久久久久 | 免费看黄在线网站 | 五月天.com| 国产精品亚| 97视频免费在线观看 | 天天爽夜夜爽精品视频婷婷 | 国产美女主播精品一区二区三区 | 国内精品免费久久影院 | 91超级碰碰 | 欧美一区二区三区激情视频 | 久久综合影视 | 久久精品国产免费看久久精品 | 久久久久亚洲精品男人的天堂 | 日本黄色免费大片 | 色婷婷激婷婷情综天天 | 九九在线精品视频 | 91桃色在线观看视频 | 久99久在线视频 | 美女视频黄免费的久久 | 久久久免费精品国产一区二区 | 欧美精品在线一区二区 | 中文字幕av全部资源www中文字幕在线观看 | 91人人爱 | 免费视频你懂的 | 六月天综合网 | 在线 视频 一区二区 | 一区二区三区 亚洲 | 特级毛片网站 | www免费看 | 99久久超碰中文字幕伊人 | 日韩va欧美va亚洲va久久 | 日韩欧美一区二区三区视频 | 成人一区在线观看 | av中文字幕第一页 | 久久久久久久久久毛片 | 国产成人一级电影 | 不卡国产视频 | 国产精品美女www爽爽爽视频 | 五月av在线 | 91av播放 | a视频在线观看 | 国产精品白丝jk白祙 | 黄色毛片观看 | 中国一区二区视频 | 黄污网站在线观看 | 久久久久久久久久久久亚洲 | 一区二区三区电影大全 | 国产精品久久久久久久久免费看 | 日本丶国产丶欧美色综合 | 久产久精国产品 | 日韩高清一二区 | 天天操夜夜看 | 免费看片色| 国产激情小视频在线观看 | 欧美国产日韩一区二区 | 99精品在线视频观看 | 久久天天躁狠狠躁亚洲综合公司 | 一区二区三区视频 | 亚洲热视频 | 日韩电影中文字幕在线 | 在线a亚洲视频播放在线观看 | 欧美成人高清 | 波多野结衣电影一区二区三区 | 成人在线观看网址 | 欧美一级黄色网 | 国产午夜精品久久久久久久久久 | 中文字幕亚洲欧美日韩2019 | 最新日韩视频 | 久久视频在线观看免费 | 草久在线视频 | 中文字幕在线免费观看视频 | 在线观看国产福利片 | 一区二区三区四区久久 | 精品国产免费久久 | 97成人在线 | 一区二区影院 | 日p视频在线观看 | 色综合天天视频在线观看 | 91在线中文字幕 | 日韩字幕 | 东方av在 | 亚洲午夜在线视频 | 日韩1级片 | 91亚洲在线观看 | 天天色影院 | 欧美日韩精品网站 | 久草在线观看 | 国产一区在线观看视频 | 国产剧情在线一区 | 韩国在线一区二区 | 九九色视频 | 久久免费视频这里只有精品 | 一区 二区电影免费在线观看 | 亚洲国产97在线精品一区 | 亚洲国产网站 | www.com久久 | 99久久精品免费看国产一区二区三区 | 免费欧美 | 天天躁天天躁天天躁婷 | 色婷婷视频在线观看 | 天天撸夜夜操 | 五月天国产 | www.婷婷com| 国产精品一二三 | 久久国产手机看片 | 久久久99精品免费观看app | 狠狠干狠狠艹 | 国产精品美女免费视频 | 在线免费观看的av网站 | 美女久久久| 国产日产欧美在线观看 | 日韩久久视频 | 欧美精品做受xxx性少妇 | 午夜资源站 | 国产青青青 | 婷婷综合亚洲 | 午夜精品麻豆 | 999精品| 黄色app网站在线观看 | 欧美不卡在线 | 九色91在线 | 久久天堂影院 | 国产高清免费av | 日韩剧情 | 天天综合网天天综合色 | 国产精品淫 | 91网在线 | 国产高清在线视频 | 亚洲妇女av| 91新人在线观看 | 4438全国亚洲精品在线观看视频 | 三级免费黄 | 日韩av在线一区二区 | 免费视频二区 | 成人在线视频一区 | 91精品免费看 | 国产色综合天天综合网 | 91精品一区在线观看 | 欧美日韩高清一区二区三区 | 国产日韩精品视频 | 亚洲丁香久久久 | 激情欧美一区二区三区免费看 | www.日本色| 中文字幕日韩一区二区三区不卡 | 日韩网站一区 | 亚洲午夜精品一区 | 成人xxxx | 激情网站 | 国产亚洲精品久久网站 | 玖玖视频网 | 亚洲国产三级在线观看 | 免费的国产精品 | 青青河边草观看完整版高清 | 国产综合婷婷 | 精品视频网站 | 久久视频在线免费观看 | 欧美性脚交 | 国产成人三级 | 嫩草av影院| 九七在线视频 | 成人一区影院 | 国内精品久久久久久久久久久久 | 91亚瑟视频| 在线观看中文字幕视频 | 九九在线视频 | 日韩在线视频二区 | 狠狠干天天 | 51久久夜色精品国产麻豆 | 欧美日韩二三区 | 99视频精品视频高清免费 | 91九色自拍 | 亚洲精品一区二区在线观看 | 日韩系列在线 | 国产成人精品一区二区三区网站观看 | 草免费视频 | 亚洲精品人人 | 人人干网 | 美女福利视频在线 | 亚洲精品理论 | 婷婷综合视频 | 色综合 久久精品 | 国产精品视频免费看 | 久久综合精品一区 | 狠狠躁天天躁综合网 | 国产九九热 | 草久视频在线观看 | 黄色成人在线观看 | 国产成人综合精品 | 91成品视频| 成人91在线观看 | 久久视频国产精品免费视频在线 | 久草免费看| 四虎成人精品永久免费av | 日本最新中文字幕 | 亚洲欧美少妇 | 国产精品99久久久久的智能播放 | 日韩免费网站 | 国产精品福利无圣光在线一区 | 久久精品麻豆 | 国产一性一爱一乱一交 | 毛片美女网站 | 亚洲黄色免费在线 | 在线观看播放av | 久久精品79国产精品 | 黄色免费在线视频 | 毛片网站在线观看 | 日韩欧美一区二区在线播放 | 日韩在线资源 | 欧美伦理一区 | 又黄又刺激的视频 | 蜜桃视频在线视频 | 久久久鲁 | 日韩在线不卡视频 | 狠狠躁日日躁 | 欧美日韩精品在线观看视频 | 国产成人精品一区二区三区福利 | 人人超碰在线 | 亚洲国产三级 | 三级在线国产 | 97综合视频 | 日本99干网 | 国产一二三四在线观看视频 | 日韩午夜三级 | 激情影院在线 | 久久婷婷一区二区三区 | 在线之家免费在线观看电影 | 免费国产黄线在线观看视频 | 98精品国产自产在线观看 | 综合中文字幕 | 国产精品99久久久久久人免费 | 精品国产免费一区二区三区五区 | 在线看av的网址 | 中文字幕av免费 | 国产精品69av | 亚洲精区二区三区四区麻豆 | 国产在线看一区 | a级片韩国 | 黄色日本免费 | 久草视频在线观 | 国产福利在线 | 国产精品区在线观看 | 97超碰在线久草超碰在线观看 | 亚洲成人免费观看 | 国产色a在线观看 | 亚洲精品高清一区二区三区四区 | 国产999久久久 | 精品一区二区视频 | 亚洲免费不卡 | 成年人黄色免费网站 | 婷五月天激情 | 不卡中文字幕在线 | 欧美精品乱码久久久久久按摩 | 久久黄色影院 | 在线观看91av| 国产在线观看 | 日韩av一区二区在线 | 高清av不卡 | 精品国产一区二区三区久久久蜜臀 | 在线播放国产精品 | 欧美了一区在线观看 | 888av| 中文字幕视频免费观看 | 久草在线手机视频 | 亚洲欧洲一区二区在线观看 | 婷婷久久亚洲 | 欧美人人爱 | 丁香激情视频 | 亚洲国产美女久久久久 | 日韩久久视频 | 激情综合色播五月 | 中文字幕欧美激情 | 日日夜夜网 | 国产成a人亚洲精v品在线观看 | 中文视频在线看 | 亚洲网久久 | 久久人91精品久久久久久不卡 | 欧美激情视频一区 | 午夜a区 | 日韩在线视频在线观看 | 国产亚洲va综合人人澡精品 | 亚洲视频网站在线观看 | 久久五月情影视 | 奇米影视8888在线观看大全免费 | 国产真实精品久久二三区 | 深夜免费小视频 | 欧美日韩视频在线一区 | 91在线播| 久久综合狠狠综合 | 三级午夜片 | 亚洲成人av一区 | 天天操天天操天天操天天操天天操 | 97在线观看免费观看 | 草莓视频在线观看免费观看 | 国内精品免费 | 免费成人结看片 | 四虎影视8848aamm | 日本久久久精品视频 | 亚洲欧美国产精品 | 9色在线视频 | 久草在线视频免赞 | 日韩中文字| 最近免费在线观看 | 亚洲影院一区 | 亚洲伦理电影在线 | 精品久久久久久亚洲综合网站 | 欧美中文字幕久久 | 91传媒在线看 | 99视频在线免费看 | 中文字幕.av.在线 | 国产精品mv| 乱男乱女www7788| 中文字幕免费久久 | 91精品在线麻豆 | 欧美一级片在线播放 | 夜夜夜草 | 99精品国产99久久久久久福利 | 成人a在线观看 | 天天摸天天操天天爽 | 不卡视频国产 | 美女在线免费视频 | 一级欧美日韩 | 国产一级大片免费看 | 久久综合色8888 | 婷婷性综合 | 国产综合片 | 国产又粗又猛又爽又黄的视频先 | 国产成人精品999 |