標籤:style blog http io ar color os 使用 sp
雙主其實說白了也是一個replication,只是推出一些新的拓撲結構
主-主的複製有兩種模式:
主動-主動模式下的主-主複製(Master-Master in Active-Active Mode) 模式下的主-主複製(Master-Master in Active-Passive Mode) 當然還有,環形和有從伺服器的主-主複製,不過都是上面的延生。 關於第一種的雙主模式,肯定是會產生資料衝突的。雖然可以使用配置auto_increment_increment=2和auto_increment_offset=1可以解決自動插入的問題,允許同時插入資料的話,資料還是會不一致的。例如:下面的兩個命令同時執行:
第一個主伺服器:mysql>update tbl set col=col +1;第二個主伺服器:mysql>update tbl set col=col*2; 結果是什嗎?一個伺服器的值為4,而另外一個為3.並且根本沒有replication的錯誤。 所以,個人建議主動-被動的雙主模式,只讓一台伺服器寫就行了,讓它對外服務,另外一台作為備用。只接受資料。 下面開始進入正題,如何配置雙主。 第一步,啟動來台資料庫的時候,mysql.cnf都得配置下面的語句 3306:server-id = 323306
log_slave_updates = 1auto_increment_increment=2auto_increment_offset=1 3307:server-id = 323307log_slave_updates = 1auto_increment_increment=2auto_increment_offset=2read-only(保證唯讀) 當然每台伺服器的port,user,socket,pid-file,basedir,datadir,tmpdir以及與log相關的:log-bin(這個是必須開啟的),slow_query_log_file(當然也要開啟)等等。就不說了。 這裡最重要的就是log_slave_updates,沒有它,雙主是配不成的,關於它的詳細介紹。在如下網址:http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html#option_mysqld_log-slave-updates 說白了,就是可以A -> B -> C,保證A可以作為master,複製到B,B可以作為master,複製到C.所以呢,如果A和B互相的話,就是雙主了。 第二步,接著就是兩台伺服器都配上repl使用者。mysql> CREATE USER ‘repl‘@‘192.168.1.50‘ IDENTIFIED BY ‘repl‘;mysql> GRANT REPLICATION SLAVE ON *.* TO ‘repl‘@‘192.168.1.50‘; 備忘:‘192.168.1.50‘這個IP,是告訴來自於這個IP的主機有REPLICATION SLAVE的許可權。 第三步,就跟配置replication是一樣的。保證一致性的備份。 SHOW MASTER STATUS;知道對應的binlog. 再在slave上面進行change master tomysql>CHANGE MASTER TOMASTER_HOST = ‘192.168.1.40‘,MASTER_PORT = 3306,MSTER_USER = ‘repl‘,MASTER_PASSWORD = ‘repl‘,MASTER_LOG_FILE = ‘mysql-bin.000004‘,MASTER_LOG_POS = 107; 接著換過來,由於slave接受了master的binlog,自己又設定了log_slave_updates而且binlog也同時開啟了,所以salva也可以看到自己的binlog。接著把上面的事情,同樣再做一遍。即可 這樣,雙主就算配置成功。(沒有什麼太詳細的步驟,不過基本上都說到位了。配置的話,跟mysql replication一致。http://blog.chinaunix.net/uid-26446098-id-3267475.html可以參考此文) http://blog.chinaunix.net/uid-26446098-id-3267556.html
牛刀小試MySQL學習—MySQL 雙主