国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題

這篇具有很好參考價值的文章主要介紹了記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失
轉(zhuǎn)載說明:如果您喜歡這篇文章并打算轉(zhuǎn)載它,請私信作者取得授權(quán)。感謝您喜愛本文,請文明轉(zhuǎn)載,謝謝。


問題描述:

某測試環(huán)境的MySQL用了兩臺節(jié)點(diǎn),主從同步結(jié)構(gòu)。忽然有研發(fā)同學(xué)反映說MySQL的主從不同步了。他在測試代碼功能的時候,調(diào)用接口在主庫insert了一條數(shù)據(jù),然后發(fā)現(xiàn)在從庫上查不到這條數(shù)據(jù)。于是開始排查。

原因排查:

1、查看主從同步狀態(tài)

在主庫和從庫分別執(zhí)行:show master status\G;show slave status\G;

發(fā)現(xiàn)從庫同步的binlog的Position跟主庫查詢到的不一致,以為是同步延遲了。然后手動在主庫創(chuàng)建了一個測試database,發(fā)現(xiàn)從庫立即同步了,主從同步的點(diǎn)也是一致的。

2、根據(jù)數(shù)據(jù)字段排查

于是再次查看表數(shù)據(jù),發(fā)現(xiàn)主從的這張表數(shù)據(jù)量是一樣的,但是根據(jù)“id”這個字段去查,主庫能找到數(shù)據(jù),但是從庫就是查不到。
然后換了個關(guān)鍵字“factoryId”去查詢,發(fā)現(xiàn)主從庫都有數(shù)據(jù),但是兩個庫查詢出來的數(shù)據(jù)id是不一致的:
記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失
記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失

將兩條數(shù)據(jù)刪掉,重新調(diào)用代碼接口插入數(shù)據(jù),結(jié)果還是一樣的,兩條數(shù)據(jù)的id就是不一樣。

然后嘗試手動insert一條語句,發(fā)現(xiàn)不存在這個問題:
記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失
記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失

3、排查insert語句代碼

最后,研發(fā)給出的結(jié)論是這樣的:
這張表的數(shù)據(jù)包含id、factoryId和appTag三個字段。
當(dāng)使用代碼調(diào)接口執(zhí)行insert語句時,代碼并沒有生成id這個字段固定的id號,只有生成了factoryId和appTag這兩個字段的內(nèi)容。
所以寫入數(shù)據(jù)的時候,只有factoryId和appTag這兩個字段的內(nèi)容的固定的,id號是在數(shù)據(jù)庫里面自己隨機(jī)生成的。而且在主庫生成了id號之后,并沒有讓從庫將主庫生成的id直接inert到從庫,而是在從庫也隨機(jī)生成一個自己的id。
所以就導(dǎo)致這樣一種情況:同一條insert插入的數(shù)據(jù),在主庫insert的時候會隨機(jī)生成一個id;在從庫也會隨機(jī)生成一個自己的id。當(dāng)兩個庫都隨機(jī)生成自己的id的時候,就會很高概率導(dǎo)致主從庫上這條數(shù)據(jù)的id字段不一致,只有factoryId和appTag這兩個字段是一致的。
因此,當(dāng)根據(jù)id去查詢數(shù)據(jù),就會發(fā)現(xiàn)從庫可能無法查詢到該數(shù)據(jù)。因為之前很少用id這個關(guān)鍵字去進(jìn)行數(shù)據(jù)庫操作,因此沒有注意到這個問題。

補(bǔ)充:
數(shù)據(jù)庫隨機(jī)生成id的兩種方式:
1、隨機(jī)生成uuid(uuid是根據(jù)時間戳來生成的)
2、auto_increment屬性生成id

故障的大致情形如下圖:
記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題,數(shù)據(jù)庫,問題集,mysql,數(shù)據(jù)庫,數(shù)據(jù)不一致,數(shù)據(jù)丟失

解決方法:

需要開發(fā)修改接口代碼,修改insert語句的插入方式,將主庫隨機(jī)生成的id直接insert到從庫,從庫不再單獨(dú)生成id。問題就解決了。文章來源地址http://www.zghlxwxcb.cn/news/detail-813453.html

到了這里,關(guān)于記錄一個Insert姿勢引起的MySQL從庫上查不到數(shù)據(jù)的問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Android】一個contentResolver引起的內(nèi)存泄漏問題分析

    長時間的壓力測試后,系統(tǒng)發(fā)生了重啟,報錯log如下 JNI ERROR (app bug): global reference table overflow (max=51200) global reference table overflow的log 08-08 04:11:53.052912 ??973 ?3243 F zygote64: indirect_reference_table.cc:256] JNI ERROR (app bug): global reference table overflow (max=51200) 08-08 04:11:53.053014 ??973 ?3243 F z

    2024年02月08日
    瀏覽(25)
  • 關(guān)于shell中的一個命名引起的問題,局部變量

    以下腳本并不完整,只是抽取的部分進(jìn)行 問題講解。。 片段分析 主要留意idd_serial,實際這是一個全局變量,在函數(shù)外依然可以被正常訪問。 上述邏輯主要是通過udevadm來提取 /dev/srN對應(yīng)的 ID_SERIAL, PC端共存在/dev/sr0和/dev/sr1兩個光驅(qū)驅(qū)動。 首先,我們刪除/dev/sr0和/dev/sr1,,

    2024年02月12日
    瀏覽(18)
  • 由一個項目引起智能工廠及數(shù)字工廠的靈魂拷問

    由一個項目引起智能工廠及數(shù)字工廠的靈魂拷問

    ? ? ? ?介紹一下背景,這是工信部直管的項目,一個新建廠區(qū),規(guī)模不小,一直與用戶保持著聯(lián)系,在老廠區(qū)調(diào)研了2周,前后交流了4次。用戶對本項目的定位和要求都比較高,同時也比較務(wù)實。 ? ? ? ?前期與用戶進(jìn)行交流后,用戶問: 你們介紹的東西,其他公司也是這

    2024年02月09日
    瀏覽(23)
  • mysql批量插入insert語句

    在MySQL中批量插入數(shù)據(jù)有幾種方法,下面我將介紹其中兩種常用的方法: 這是一種簡單的方式,可以一次性插入多個值。以下是一個示例: 在上面的示例中,你需要替換your_table_name為你的表名,列名和相應(yīng)的值。你可以一次性插入多行數(shù)據(jù)。 另一種批量插入數(shù)據(jù)的方法是使

    2024年02月06日
    瀏覽(37)
  • MySQL(62)MySQL INSERT:插入數(shù)據(jù)(添加數(shù)據(jù))

    數(shù)據(jù)庫與表創(chuàng)建成功以后,需要向數(shù)據(jù)庫的表中插入數(shù)據(jù)。在?MySQL?中可以使用 INSERT 語句向數(shù)據(jù)庫已有的表中插入一行或者多行元組數(shù)據(jù)。 INSERT 語句有兩種語法形式,分別是 INSERT…VALUES 語句和 INSERT…SET 語句。 1) INSERT…VALUES語句 INSERT VALUES 的語法格式為: 語法說明如下。

    2024年02月08日
    瀏覽(21)
  • SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增字段

    SQL INSERT INTO 語句用于在表中插入新記錄。 INSERT INTO 語法 可以以兩種方式編寫INSERT INTO語句: 指定要插入的列名和值: 如果要為表的所有列添加值,則無需在SQL查詢中指定列名。但是,請確保值的順序與表中的列順序相同。在這種情況下,INSERT INTO 語法如下: 演示數(shù)據(jù)庫 以

    2024年02月05日
    瀏覽(23)
  • MySQL數(shù)據(jù)庫——MySQL INSERT:插入數(shù)據(jù)(添加數(shù)據(jù))

    數(shù)據(jù)庫與表創(chuàng)建成功以后,需要向數(shù)據(jù)庫的表中插入數(shù)據(jù)。在 MySQL 中可以使用 INSERT 語句向數(shù)據(jù)庫已有的表中插入一行或者多行元組數(shù)據(jù)。 INSERT 語句有兩種語法形式,分別是 INSERT…VALUES 語句和 INSERT…SET 語句。 1) INSERT…VALUES語句 INSERT VALUES 的語法格式為: 語法說明如下:

    2024年02月08日
    瀏覽(21)
  • oracle 同一張表同時insert多條數(shù)據(jù) mysql 同一張表同時insert多條數(shù)據(jù)

    在Oracle數(shù)據(jù)庫中,你可以使用INSERT ALL語句同時向同一張表插入多條數(shù)據(jù)。INSERT ALL語句允許你一次執(zhí)行多個插入操作,可以提高插入的效率和速度。 以下是使用INSERT ALL語句插入多條數(shù)據(jù)的示例: 在上面的示例中,我們使用INSERT ALL語句向\\\"employees\\\"表插入了三條數(shù)據(jù)。每個INSE

    2024年02月03日
    瀏覽(22)
  • MySQL 中 INSERT INTO 的使用詳解

    MySQL 是一個非常流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),具有高效和可擴(kuò)展性等特點(diǎn)。在 MySQL 數(shù)據(jù)庫中,INSERT INTO 是一種用于將新行插入表中的 SQL 命令。它是 MySQL 最基本、最常用的語句之一,也是許多應(yīng)用程序的核心功能之一。本文將介紹如何正確地使用 INSERT INTO,以及如何處理異

    2024年02月15日
    瀏覽(31)
  • 開閉原則正確姿勢, 使用AOP優(yōu)雅的記錄日志, 非常的哇塞

    開閉原則正確姿勢, 使用AOP優(yōu)雅的記錄日志, 非常的哇塞

    ??我親愛的各位大佬們好?????? ?? 本篇文章記錄的為 JDK8 新特性 Stream API 進(jìn)階 相關(guān)內(nèi)容,適合在學(xué)Java的小白,幫助新手快速上手,也適合復(fù)習(xí)中,面試中的大佬??????。 ?? 如果文章有什么需要改進(jìn)的地方還請大佬不吝賜教?????? ????? 個人主頁 : 阿千弟 ??

    2024年02月06日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包