在一次模式变更之后,我错过了处理复制,现在有一台服务器不再同步,因为它试图修改已经处理的表(服务器 1 和 2 有额外的列,并且没有问题,服务器 3 尝试再次插入它 - 出现错误,因此wsrep_local_state: 2
错误日志非常清楚:
150728 15:19:29 [ERROR] Slave SQL: Error 'Duplicate column name 'somecolumn'' on query. Default database: 'my_db'. Query: 'ALTER TABLE tablename ADD somecolumn DATETIME NULL', Internal MariaDB error code: 1060
150728 15:19:29 [Warning] WSREP: RBR event 1 Query apply warning: 1, 195651391
150728 15:19:29 [Warning] WSREP: Ignoring error for TO isolated action: source: f7715036-20ca-11e5-a90f-f23b6463dd16 version: 3 local: 0 state: APPLYING flags: 65 conn_id: 2348812 trx_id: -1 seqnos (l: 14350890, g: 195651391, s: 195651390, d: 195651390, ts: 20916266579392088)
由于很明显这个事务可以被跳过,我想这样做 - 但无法真正找到如何操作(仅适用于具有“SQL_SLAVE_SKIP_COUNTER=1”的主从设置 - 它不适用于 galera 多主服务器)。
答案1
问题已基本解决。我重启了其他服务器以确保没有错误消息,然后再次重启了有问题的服务器(未同步的服务器)。所说的“不同步”一定是在服务器重新同步时发生的(我试了两次……),可能其他某个服务器上仍有待处理的事情。