2012-08-23 112 views
3

在主從複製中,我們使用mysql數據庫在從服務器上覆制少數DB。 我在master上創建了一個用戶,不幸的是它沒有複製到slave服務器上。複製mysql數據庫但在主服務器上創建的用戶不在副服務器上覆制

Replicate_Do_DB:APP1,APP2,MySQL的

用戶創建命令:

GRANT SELECT on *.* to 'user1'@'localhost' identified by 'user1'; 

GRANT SELECT on *.* to 'user1'@'%' identified by 'user1'; 

GRANT SELECT on *.* to 'user1'@'10.10.10.10' identified by 'user1'; 

用戶帳號上主成功創建,但不復制在從站。

爲什麼如果mysql數據庫在複製中會發生這種情況?

回答

7

嗯。我打算在這裏說一下,並說你可能使用基於STATEMENT的複製而不是基於ROW的複製,並且你的MySQL版本是5.1或更高...

你可以告訴你正在運行哪種類型上運行你的奴隸的SQL語句:

select variable_value 
from information_schema.session_variables 
where upper(variable_name) = 'BINLOG_FORMAT'; 

正如你正確識別權限只複製如果mysql schema is included in replication

但是!「疑難雜症」這裏是--replicate-do-db選項。如果您使用的是基於語句複製,那麼你將需要運行以來的撥款之前指定的MySQL數據庫作爲默認數據庫:

The effects of this option depend on whether statement-based or row-based replication is in use.

Statement-based replication. Tell the slave SQL thread to restrict replication to statements where the default database (that is, the one selected by USE) is db_name.

這就是說試運行:

USE MYSQL; 

GRANT SELECT on *.* to 'user1'@'localhost' identified by 'user1'; 

GRANT SELECT on *.* to 'user1'@'%' identified by 'user1'; 

GRANT SELECT on *.* to 'user1'@'10.10.10.10' identified by 'user1'; 

它可能會奏效。如果它不,然後看另一個答案!

+0

這對我很有用。 Binlog格式爲MIXED。 –

+0

很好聽,它的工作。你能接受這個答案嗎? –

+0

http://dev.mysql.com/doc/refman/5.0/en/replication-features-userprivs.html現在是一個斷開的鏈接 – knocte

0

在MySQL 5.7,如果執行從湯姆Mac的answer查詢時,您將收到以下錯誤:

ERROR 3167 (HY000): The 'INFORMATION_SCHEMA.SESSION_VARIABLES' feature is disabled; see the documentation for 'show_compatibility_56'

您應該查詢performance_schema代替。執行以下操作:

SELECT variable_value FROM performance_schema.session_variables WHERE upper(variable_name) = 'BINLOG_FORMAT'; 
相關問題