1.兩台編譯安裝好MySQL的服務器:
A:192.168.1.6 (MySQL的用戶名:root;密碼:gaso123;拷貝安裝源文件目錄下的support-files/my-huge.cnf文件到/etc/my.cnf)
B:192.168.1.8 (MySQL的用戶名:root;密碼:gaso123;拷貝安裝源文件目錄下的support-files/my-huge.cnf文件到/etc/my.cnf)
設置A和B互為備份MySQL(master-master)
2.A和B上分別初始化一下數據庫(mysql_install_db --user=MySQL)
3.A和B上分別設置一下MySQL的root密碼(MySQLadmin -u root passWord gaso123)
4.分別修改A和B的MySQL配置文件/etc/my.cnf
對於A(沒有的項就手工添加):
server-id = 6 ''用6(主機A的ip的主機號以便於記憶)設置,代表A是master且A的master id是6,該項位於[MySQLd]字段。
server-id = 8 ''用8(主機B的ip的主機號,將在主機B的my.cnf上指明,8也只是為了便於記憶),代表A同時是slave且A這個slave需要向 server-id為8(即主機B)的主機負責,該項位於replication解釋後。
master-host = 192.168.1.8 ''指明A這個slave的master的ip
master-user = root ''指明A這個slave的master的用戶
master-passWord = gaso123 ''密碼
master-port = 3306 ''端口
log-bin=MySQL-bin ''用二進制日志
binlog-ignore-db=MySQL ''不同步mysql庫,避免一些麻煩,因為MySQL庫是系統庫,主主模式下萬一發生同時寫入系統庫可能會產生一些意外問題。
log-bin=/usr/local/MySQL/var/updatelog ''指定一個日志文件的存放位置,一般放在var這個數據目錄即可。
master-connect-retry=60 ''斷線重連時間60秒。
對於B(沒有的項就手工添加):
server-id = 8 ''用8(主機B的ip的主機號以便於記憶)設置,代表B是master且B的master id是8,該項位於[MySQLd]字段。
server-id = 6 ''用6(主機A的ip的主機號,剛上面已在主機A的my.cnf上指明過了),代表B同時是slave且B這個slave需要向 server-id為6(即主機A)的主機負責,該項位於replication解釋後。
master-host = 192.168.1.6 ''指明B這個slave的master的ip
master-user = root ''指明B這個slave的master的用戶
master-passWord = gaso123 ''密碼
master-port = 3306 ''端口
log-bin=MySQL-bin ''用二進制日志
binlog-ignore-db=MySQL ''不同步mysql庫,避免一些麻煩,因為MySQL庫是系統庫,主主模式下萬一發生同時寫入系統庫可能會產生一些意外問題。
log-bin=/usr/local/MySQL/var/updatelog ''指定一個日志文件的存放位置,一般放在var這個數據目錄即可。
master-connect-retry=60 ''斷線重連時間60秒。
5.分別啟動A和B的MySQL(MySQLd_safe &)
6.分別登陸進去A和B的MySQL(MySQL -u root -p,回車後會提示輸入密碼)
對於A:
MySQL>slave stop;
先停掉slave通訊(應該同時在B上也先停掉)
MySQL>grant replication slave,replication clIEnt,reload,super on *.* to 'root'@'192.168.1.8' identifIEd by 'gaso123';
授權B有操作slaveA的權限。
MySQL>flush privileges;
刷新授權使生效。
MySQL>slave start;
開啟slave通訊(應該在A和B均授權完成並刷新權限後,最後再和B一起開啟)。
對於B:
MySQL>slave stop;
停掉slave通訊(應該和A同時先進行)
MySQL>grant replication slave,replication clIEnt,reload,super on *.* to 'root'@'192.168.1.6' identifIEd by 'gaso123';
授權A有操作slaveB的權限。
MySQL>flush privileges;
刷新授權使生效。
MySQL>slave start;
開啟slave通訊(應該在A和B均授權完成並刷新權限後再開啟)。
7.查看master和slave狀態
MySQL>show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| updatelog.000001 | 277 | | MySQL |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
出現類似這個表說明master生效,注意MySQL這個不同步的庫。
MySQL>show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
出現的表中這兩項的值均為yes則表明和slave通訊正常,若其中IO為no,則可能的原因包括但不限於:另一台機器上未做grant授權或者未flush使授權生效或者可能需要重啟一下MySQL;若其中SQL為no,則可能的原因包括但不限於:另一台機器未做slave start或者另一台機器的my.cnf配置文件配置的slave有問題。
8.若無其它意外的話可以分別在A和B上測試一下看是否真的同步
A上create database gaso;
B上drop database gaso;
均成功執行則說明配置MySQL master-master復制模式成功