MySQL主主復制3


一、創建並授權用戶
在每一台(主)服務器上創建一個用戶,並為之授權,使它們可以互相訪問彼此的數據庫 在Server-1上: 創建一個充許Server-2來訪問的用戶server2,密碼為:server2 mysql> GRANT REPLICATION SLAVE ON *.* > TO ‘server2’@’192.168.0.2’ IDENTIFIED BY ‘server2’; 在Server-2上: 創建一個充許Server-1來訪問的用戶server1,密碼為:server1 mysql> GRANT REPLICATION SLAVE ON *.* > TO ‘server1’@’192.168.0.1’ IDENTIFIED BY ‘server1’;
二、修改MySQL主配置文件
在MySQL的主配置文件中修改/添加如下內容: Server-1上: [mysqld] server-id = 10 log-bin = mysql-bin replicate-do-db = mydb auto-increment-increment = 2 auto-increment-offset = 1 # service mysqld restart Server-2上: [mysqld] server-id = 20 log-bin = mysql-bin replicate-do-db = mydb auto-increment-increment = 2 auto-increment-offset = 2 # service mysqld restart 注:二者只有server-id不同和 auto-increment- offset不同 auto-increment-offset是用來設定數據庫中自動增長的起點的,因為這兩台服務器都設定了同一個自動增長值2,所以它們的起點必須得不同,這樣才能避免兩台服務器數據同步時出現主鍵沖突
replicate-do-db 指定同步的數據庫,我們只在兩台服務器間同步mydb數據庫 另:auto-increment-increment的值應設為整個結構中服務器的總數,本案例用到兩台服務器,所以值設為2

三、復制其中一台服務器的數據庫到另外一台服務器
這一步中誰做為源數據不重要,重要的是在正式的復制(Replication)開始之前兩台服務都能准確的反應彼此的數據。 我們可以先從源數據庫中導出數據到備份文件,這里我們使用mysqldump命令 以Server-1上數據庫為源數據庫 備份數據前先鎖表,保證數據一致性 mysql> FLUSH TABLES WITH READ LOCK; > SHOW MASTER STATUS; +—————–+————+—————-+——————–+ |File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +—————–+————+—————-+——————–+ |mysql-bin.000006 | 213 | | | +—————–+————+—————-+——————–+ 該結果顯示,源服務器現在處於6號二進制文件的213位置 開始備份數據庫 # mysqldump –user=root -p mydb > /tmp/mydb.sql 備份完畢,現在可以解鎖數據庫表 mysql> UNLOCK TABLES; Query OK, 0 rows affected (0.00 sec)

四、將備份數據導入Server-2
先在Server-2上創建一個與mydb同名的空數據庫 # mysql > CREATE DATABASE mydb; >\q # scp 192.168.0.1:/tmp/mydb.sql ./ # mysql -uroot -p mydb < /tmp/mydb.sql 此時,我們需要注意當前服務器的二進制日志的位置 # mysql > LOCK TALBES WITH READ LOCK; > SHOW MASTER STATUS; +—————–+————+—————-+——————–+ |File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +—————–+————+—————-+——————–+ |mysql-bin.000001 | 106 | | | +—————–+————+—————-+——————–+ 1 row in set (0.00 sec) > UNLOCK TABLES;
五、互相通告二進制日志位置
在Server-1上: # mysql > CHANGE MASTER TO > MASTER_HOST=’192.168.0.2′, > MASTER_USER=’server1′, //???請讀者判斷下這個地方是不是寫錯了?? > MASTER_PASSWORD=’server1′, > MASTER_LOG_FILE=’mysql-bin.000001′, > MASTER_LOG_POS=106; 在Server-2上: # mysql > CHANGE MASTER TO > MASTER_HOST=’192.168.0.1′, > MASTER_USER=’server2′, > MASTER_PASSWORD=’server2′, > MASTER_LOG_FILE=’mysql-bin.000006′, > MASTER_LOG_POS=213;

六、啟動復制(Replication)功能
在兩台主機上分別執行 # mysql > START SLAVE; 配置到此完成!



http://www.178-go.com/archives/mysql-master-master.html

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com