Mysql

導入到新伺服器時出現 MySQL 重複條目錯誤

  • January 16, 2022

我在 MySQL Galera 5.6.34 上確實有一個數據庫,其中包含一個包含 ID、日期索引的表。該表功能齊全,我已使用修復和檢查來驗證該表。但是,在備份/恢復導入 DB-Server(MySQL 5.7.17,而不是 Galera)時告訴我有一個重複的條目並停止導入:

gunzip < DB_170206_040001.sql.gz | mysql -u root -p 暫存

第 3800 行的錯誤 1062 (23000):密鑰“user_id”的重複條目“329610-2011-03-27 03:00:00”

如果我在備份之前清空該表,則一切正常。

是否有在導入時“忽略”的命令,或者更好地解決實時伺服器上的問題?

根據此響應:mysqldump with INSERT … ON DUPLICATE

--replace如果您確定這不會破壞數據集的關係完整性,最好使用該選項進行新備份。這將刪除產生衝突的行,而是插入發出錯誤信號並停止恢復的行。

問題是,不知何故,您在強制唯一性的列中得到了具有相同值的多行。這在 Galera 伺服器中是如何發生的尚不清楚。

發布以下結果可能很有用:

mysql&gt; select max(t.count) from (select count(user_id) as count from &lt;db&gt;.&lt;table&gt; group by user) t; 

如果任何行返回 1 以外的值,則原始伺服器上存在關係問題。如果該值等於 1,則在還原伺服器上還有更多需要探索的內容,以了解它認為存在問題的原因。可能是備份被熱備份,並且缺少未產生一致數據集的事務。

聽起來像是時區問題。比較機器之間的設置,檢查正在複製的列的數據類型。

引用自:https://dba.stackexchange.com/questions/163382