日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 并行 更新_MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在

發布時間:2024/9/30 数据库 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 并行 更新_MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景

開了并行復制的半同步從庫SQL 線程報1032錯誤,異步復制從庫沒有報錯,偶爾會出現這種

版本

mysql 5.7.16

redhat 6.8

mysql> show variables like '%slave_para%';

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

| Variable_name | Value |

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

| slave_parallel_type | LOGICAL_CLOCK |

| slave_parallel_workers | 16 |

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

分析

1、疑是對從庫執行了更新操作,導致更新的記錄不存在

2、查看error log發現

2018-04-03T10:11:47.720156+08:00 16 [ERROR] Slave SQL for channel '': **Worker 13** failed executing transaction **'a272bbcf-874f-11e7-a288-00505695b721:687871861**' at master log mysql-bin.004119, end_log_pos 376471678; **Could not execute Update_rows event** on table anytxn.seq_xxxx; Can't find record in 'seq_xxxx', Error_code: 1032; handler error HA_ERR_END_OF_FILE; the event's master log mysql-bin.004119, end_log_pos 376471678, Error_code: 1032

2018-04-03T10:11:47.720230+08:00 2 [Warning] Slave SQL for channel '': ... The slave coordinator and worker threads are stopped, possibly leaving data in inconsistent state. A restart should restore consistency automatically, although using non-transactional storage for data or info tables or DDL queries could lead to problems. In such cases you have to examine your data (see documentation for details). Error_code: 1756

2018-04-03T10:11:47.720959+08:00 2 [Note] Error reading relay log event for channel '': slave **SQL thread was killed**

3、從 SQL線程停止的position分析binlog發現

SET @@SESSION.GTID_NEXT= 'a272bbcf-874f-11e7-a288-00505695b721:687871861'/*!*/;

# at 376471694

#180403 10:11:47 server id 104073 end_log_pos 376471555 CRC32 0x1be91176 Querythread_id=2086049exec_time=0error_code=0

SET TIMESTAMP=1522721507/*!*/;

BEGIN

/*!*/;

# at 376471768

#180403 10:11:47 server id 104073 end_log_pos 376471616 CRC32 0x10644d77 Table_map: `anytxn`.`seq_xxxx` mapped to number 301

# at 376471829

#180403 10:11:47 server id 104073 end_log_pos 376471678 CRC32 0x871a9787 Update_rows: table id 301 flags: STMT_END_F

### UPDATE `anytxn`.`seq_xxxx`

### WHERE

### @1=7116088 /* LONGINT meta=0 nullable=0 is_null=0 */

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

### SET

### @1=7116089 /* LONGINT meta=0 nullable=0 is_null=0 */

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

# at 376471891

#180403 10:11:47 server id 104073 end_log_pos 376471709 CRC32 0x9eb59238 Xid = 22247621418

COMMIT/*!*/;

# at 376471922

#180403 10:11:47 server id 104073 end_log_pos 376471774 CRC32 0xf7b6ad5d GTIDlast_committed=641254sequence_number=641259

SET @@SESSION.GTID_NEXT= 'a272bbcf-874f-11e7-a288-00505695b721:687871862'/*!*/;

# at 376471987

#180403 10:11:47 server id 104073 end_log_pos 376471856 CRC32 0x6256de00 Querythread_id=2085350exec_time=0error_code=0

SET TIMESTAMP=1522721507/*!*/;

BEGIN

/*!*/;

# at 376472069

#180403 10:11:47 server id 104073 end_log_pos 376471979 CRC32 0x6c329578 Table_map: `anytxn`.`bm_cc_customer_address_info` mapped to number 1569

# at 376472192

#180403 10:11:47 server id 104073 end_log_pos 376472162 CRC32 0x834cc8b9 Write_rows: table id 1569 flags: STMT_END_F

### INSERT INTO `anytxn`.`bm_xxxxxxxxxxxxxx`

### SET

### @1=14480779 /* LONGINT meta=0 nullable=0 is_null=0 */

### @2='0000001002380654' /* STRING(96) meta=65120 nullable=0 is_null=0 */

### @3='B001' /* VARSTRING(30) meta=30 nullable=1 is_null=0 */

### @4=NULL /* STRING(12) meta=65036 nullable=1 is_null=1 */

### @5='10000010001202000000001' /* VARSTRING(96) meta=96 nullable=1 is_null=0 */

### @6='B00' /* STRING(9) meta=65033 nullable=1 is_null=0 */

### @7='xxxxxxxxxxx' /* VARSTRING(765) meta=765 nullable=1 is_null=0 */

### @8=NULL /* STRING(18) meta=65042 nullable=1 is_null=1 */

### @9=NULL /* STRING(18) meta=65042 nullable=1 is_null=1 */

### @10=NULL /* STRING(18) meta=65042 nullable=1 is_null=1 *

mysql@xxxxxx:/home/mysql> mysqlbinlog -v -v --start-datetime='2018-04-03 10:11:45' --stop-datetime='2018-04-03 10:11:48' /data/mysql/xxxxx-relay-bin.005477 | grep last_comm | grep 10:11:47 | grep 641254

#180403 10:11:47 server id 104073 end_log_pos 376469618 CRC32 0xb6dc6cef GTIDlast_committed=641227sequence_number=641254

#180403 10:11:47 server id 104073 end_log_pos 376471774 CRC32 0xf7b6ad5d GTIDlast_committed=641254sequence_number=641259

#180403 10:11:47 server id 104073 end_log_pos 376472258 CRC32 0x27cf3013 GTIDlast_committed=641254sequence_number=641260

從上面信息可以看出,發生更新記錄不存在是在更新anytxn.xxxx_id表的標識為7116088 的記錄

有兩個并發提交的事務last_committed=641254 ,與發現更新的記錄不存在的 GTID *.687871861 事務還有另一個并發提交的事務 sequence_number=641260(即insert另一張表的操作),難道是master有并發提交的事務,slave多個work線程去apply的時候出現了問題?

4、查看更新的記錄不存在的表和相關記錄

show create table seq_xxxx;

| seq_xxxx | CREATE TABLE seq_xxxx (

currentValue bigint(20) NOT NULL,

increment int(11) NOT NULL DEFAULT '1'

mysql> select * from seq_xxxx;

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

| currentValue | increment |

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

| 7116088 | 1 |

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

可以發現實際數據庫中是存在該記錄的

測試

mysql> select @@version;

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

| @@version |

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

| 5.7.19-log |

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

1 row in set (0.00 sec)

mysql> show variables like '%para%';

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

| Variable_name | Value |

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

| slave_parallel_type | LOGICAL_CLOCK |

| slave_parallel_workers | 4 |

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

sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --mysql-host=10.186.30.73 --mysql-socket=/opt/mysql/data/3307/mysqld.sock --mysql-port=3307 --db-driver=mysql --mysql-db=test --mysql-user=admin --mysql-password=admin --table_size=100000 --tables=5 --threads=100 --time=120 --report-interval=5 run

有并發提交的事務,但沒有模擬重現出更新的記錄不存在,但在庫中卻存在的情況

更新

slave_preserve_commit_order=1(default 0,MTS中有效)

確保事務以與在從服務器中繼日志中顯示的順序相同的順序在從服務器上apply,防止出現gaps。如果該值設置為0,slave并行apply事務可能會無序,檢查最近執行的事務并不能保證主服務器上的所有先前事務都已在從服務器上執行

開啟多線程復制后,這個參數推薦設置為1

總結

以上是生活随笔為你收集整理的mysql 并行 更新_MySQL 并行复制(MTS) 从库更新的记录不存在实际却存在的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 白石茉莉奈中文字幕在 | 午夜精品国产精品大乳美女 | 国色天香网站 | 亚洲综合射 | 色淫湿视频 | 久久天堂av综合合色蜜桃网 | 成人精品国产免费网站 | 成人性生活免费视频 | 福利免费观看 | 草草福利视频 | 少妇愉情理伦片bd | 男人与雌性宠物交啪啪 | 久久成人乱码欧美精品一区二区 | 美女脱光内衣内裤 | 免费成人高清在线视频 | 综合色88 | 国产尤物视频在线 | 91精品91久久久中77777老牛 | 日本美女在线 | 四虎永久免费地址 | 日本一区二区免费在线 | 黄色大片视频网站 | 午夜影院啊啊啊 | 日本一区二区高清免费 | 亚洲AV无码久久精品色三人行 | 中国丰满老妇xxxxx交性 | 中国毛片在线 | 无码精品a∨在线观看中文 福利片av | 国产日产精品一区二区三区 | 韩国成人在线视频 | 国语对白精彩对话 | 激情视频激情小说 | 国产乱视频| 天天爽天天爽天天爽 | 欧美性猛交 | 国产精品一区二区人人爽 | 国产一级一片免费播放 | 国产探花一区二区三区 | 国产三级免费观看 | 国产成人精品视频在线观看 | 欧美猛男gaygay | 中国无码人妻丰满熟妇啪啪软件 | 青在线视频 | www在线看片| 欧美日韩国产成人在线 | 国产伊人网 | 久久精品色欲国产AV一区二区 | 免费成人深夜夜视频 | 日韩一级二级视频 | 日本美女黄网站 | 久久久久国产精品夜夜夜夜夜 | 日韩在线观看网址 | 丹丹的呻吟声1一7 | 少妇av一区二区 | 欧美男女视频 | 91中文字幕在线视频 | 日本免费福利视频 | 夜色综合网 | 久操操| 91av视频免费观看 | 欧美性受xxxx黒人xyx性爽 | 精品三级在线 | 亚洲一区二区三区高清视频 | 精品美女www爽爽爽视频 | 久久日视频 | 日本极品少妇 | 91国偷自产中文字幕久久 | 午夜激情影视 | 91官网在线观看 | 俄罗斯女人裸体性做爰 | 在线天堂www在线国语对白 | 永久免费未满 | 糖心vlog精品一区二区 | 国产高清在线视频观看 | 伊人超碰在线 | 天堂va蜜桃| 久久综合伊人77777麻豆 | 久久国产视频精品 | 黄色大片网站在线观看 | 欧美亚洲激情 | 国产东北真实交换多p免视频 | 亚洲熟妇无码一区二区三区 | 69热在线观看 | 少妇高潮久久久久久潘金莲 | 天堂色在线| 亚洲性激情 | 好看的av网址 | 亚洲中文字幕在线观看 | 一级a性色生活片久久无 | 在线免费看a | 制服.丝袜.亚洲.另类.中文 | 成人网免费 | 97视频在线观看免费 | 成人影视网址 | 欧美天堂在线 | 视色视频| 天堂中文字幕免费一区 | 神马午夜场 | 日本美女性高潮 |