internal_replication
表示是否只將數(shù)據(jù)寫入其中一個副本民珍,默認(rèn)為false赵誓,表示寫入所有副本先舷,在復(fù)制表的情況下可能會導(dǎo)致重復(fù)和不一致贷祈,所以這里一定要改為true。
四種復(fù)制模式:
非復(fù)制表籽前,internal_replication=false亭珍。寫入單機(jī)表時敷钾,不同服務(wù)器查詢結(jié)果不同;插入到分布式表中的數(shù)據(jù)被插入到兩個本地表中肄梨,如果在插入期間沒有問題阻荒,則兩個本地表上的數(shù)據(jù)保持同步。我們稱之為“窮人的復(fù)制”众羡,因為復(fù)制在網(wǎng)絡(luò)出現(xiàn)問題的情況下容易發(fā)生分歧侨赡,沒有一個簡單的方法來確定哪一個是正確的復(fù)制。
非復(fù)制表粱侣,internal_replication=true羊壹。數(shù)據(jù)只被插入到一個本地表中,但沒有任何機(jī)制可以將它轉(zhuǎn)移到另一個表中齐婴。因此油猫,在不同主機(jī)上的本地表看到了不同的數(shù)據(jù),查詢分布式表時會出現(xiàn)非預(yù)期的數(shù)據(jù)柠偶。顯然情妖,這是配置ClickHouse集群的一種不正確的方法。
復(fù)制表诱担,internal_replication=true毡证。插入到分布式表中的數(shù)據(jù)僅插入到其中一個本地表中,但通過復(fù)制機(jī)制傳輸?shù)搅硪粋€主機(jī)上的表中蔫仙。因此兩個本地表上的數(shù)據(jù)保持同步料睛。這是官方推薦配置。
復(fù)制表摇邦,internal_replication=false恤煞。數(shù)據(jù)被插入到兩個本地表中,但同時復(fù)制表的機(jī)制保證重復(fù)數(shù)據(jù)會被刪除涎嚼。數(shù)據(jù)會從插入的第一個節(jié)點(diǎn)復(fù)制到其它的節(jié)點(diǎn)阱州。其它節(jié)點(diǎn)拿到數(shù)據(jù)后如果發(fā)現(xiàn)數(shù)據(jù)重復(fù),數(shù)據(jù)會被丟棄法梯。這種情況下苔货,雖然復(fù)制保持同步,沒有錯誤發(fā)生立哑。但由于不斷的重復(fù)復(fù)制流夜惭,會導(dǎo)致寫入性能明顯的下降。所以這種配置實際應(yīng)該是避免的铛绰。