91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

MySQL的slave_exec_mode參數說明及用處

發布時間:2020-05-13 16:17:23 來源:億速云 閱讀:406 作者:三月 欄目:MySQL數據庫

下面講講關于MySQL的slave_exec_mode參數說明及用處,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL的slave_exec_mode參數說明及用處這篇文章你一定會有所受益。

slave_exec_mode=IDEMPOTENT在MySQL復制環境中是個很有用的參數:只要在備機運行set global slave_exec_mode=IDEMPOTENT,備機的sql thread就運行在冥等模式下,可以讓備機在insert主鍵、唯一鍵沖突,update、delete值未找到錯誤發生時不斷開復制而保持冥等性(當即生效,連slave的sql線程都不用重啟喲);而類似sql_slave_skip_counter=N和slave-skip-errors = N這樣的粗暴跳過錯誤方法可能破壞主備一致性。

注意:使用冥等模式時表要有主鍵 

冥等模式并不是萬能的,除了不能對DDL操作冥等,對字段長度不同導致的錯誤也不是冥等(譬如主機一個字段是char(20)而備機是char(10)),還有一個限制就是表有主鍵才會對insert的冥等設置有效:因為insert的冥等行為是通過主鍵來判斷備機是否有重復值從而產生覆寫操作,如果表沒有主鍵,則備機即使設了冥等也可能會比主機多重復數據。

針對slave_exec_mode參數,它可以跳過1062和1032的錯誤,并且不影響同一個事務中正常的數據執行。如果是多個SQL組成的事務,則可以跳過有問題的event。

另外在GTID模式下的復制,sql_slave_skip_counter是不支持的,該模式下的復制可以自行測試。

MySQL的slave_exec_mode參數說明及用處

主從復制中常會遇到的問題就是1062主鍵重復

主從復制中1032錯誤一般是指要更改的數據不存在

遇到錯誤1032或者1062的處理方式:

所以處理該錯誤的方法有:

1:skip_slavesql_slave_skip_counter

stop slave;                                                                                                                                     Query OK, 0 rows affected (0.00 sec)

set global sql_slave_skip_counter=[1-4];

Query OK, 0 rows affected (0.00 sec)

start slave;

Query OK, 0 rows affected (0.00 sec)

2:在配置文件里指定slave-skip-errors=1062(需要重啟)

這2種方法都能讓復制恢復正常,但是會讓主從數據不一致(謹慎使用),如果一個事務中多個語句,其他的語句也會丟失。

并且第2種方法還需要重啟數據庫,此時slave_exec_mode參數就派上用場了。在從庫上設置該參數:

slave_exec_mode參數可用來自動處理同步復制錯誤:

# slave上執行

set global slave_exec_mode='IDEMPOTENT';  冪等模式 (默認是STRICT嚴格模式)

stop slave;

start slave;

slave_exec_mode和slave_skip_errors的作用是一樣的,但是slave_skip_errors不支持動態修改,必須重啟mysql才能生效,因此建議使用slave_exec_mode。

針對slave_exec_mode參數,它可以跳過1062和1032的錯誤,并且不影響同一個事務中正常的數據執行。如果是多個SQL組成的事務,則可以跳過有問題的event。

insert into x values(1),(4),(5); #其中從庫有id=4這條記錄

BEGIN;

INSERT INTO x SELECT 4;

DELETE FROM x WHERE id = 2; #從庫沒有這條記錄

INSERT INTO x SELECT 5;

COMMIT;

#!/bin/bash

# Description: 自動跳過主從復制的錯誤(錯誤代碼1023、1062) ,這個腳本在slave上執行

#  

user='root'

pass='root'

port='3306'

IP='172.16.10.12'

MYSQLCLI='/usr/local/mysql/bin/mysql'

STATUS=$($MYSQLCLI -u$user -p$pass -h $IP -e 'show slave status\G'|sed -n '13p'|awk -F ":" '{print $2}')

if [[ $STATUS != 'YES' ]];then

    $MYSQLCLI -u$user -p$pass -h $IP -e "SET GLOBAL slave_exec_mode='IDEMPOTENT';"

    $MYSQLCLI -u$user -p$pass -h $IP -e "stop slave';"

    $MYSQLCLI -u$user -p$pass -h $IP -e "start slave';"

    echo -e "地址: $IP\n端口: 3306\n服務: MySQL主從復制發生錯誤,系統已自動跳過錯誤,請后續跟進處理。\n發生時間: `date +"%F %T"`" \

    | mail -s '主從復制錯誤警告'  xxxxxx@xxx.com

fi

對于以上MySQL的slave_exec_mode參數說明及用處相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。

向AI問一下細節

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

AI

昌吉市| 固安县| 同德县| 玉山县| 资讯| 体育| 湖北省| 株洲县| 开阳县| 浦城县| 环江| 南平市| 丰顺县| 诏安县| 仁布县| 灵石县| 昌邑市| 石泉县| 武川县| 股票| 莱州市| 长沙县| 河南省| 罗甸县| 剑阁县| 营山县| 商河县| 新巴尔虎右旗| 育儿| 盐津县| 南安市| 霍州市| 嵩明县| 肥西县| 华宁县| 卢湾区| 吐鲁番市| 临桂县| 襄城县| 天镇县| 邹平县|