做主從,就需要至少兩個mysql數據庫,要裝兩個數據庫有很多方法,你可以裝兩個不同版本的數據庫,當然也可以裝同一個版本的數據庫,系統會提示已經安裝,網上有說,把數據庫安裝的文件夾名稱改掉,然後,卸載掉,這時候卸載是卸載注冊的服務,而文件不會卸載,你就可以在安裝一個了,更高級的是不用重新安裝,直接建配置文件就可以跑多個MySQL進程,但是這個我沒試過,也只是聽說過,http://hi.baidu.com/l1xh330318747/blog/item/7d092bee399dc3332697919b.Html有配置過程,我用的是虛擬機,在兩個系統中分別安裝MySQL數據庫,然後在主機嘗試訪問虛擬機數據庫mysql -hIP -Pport -uuser -pWord,其中ip是虛擬機ip地址,port是MySQL端口,一般是3306,user,Word分別是用戶名和密碼,這中間出了點問題,害我弄了好久,那就是把主機和虛擬機系統的防火牆關掉,要不不讓訪問,會出好多問題。360防火牆就不需要關了,配置過程如下
主機地址 192.168.1.100 master
虛擬機 192.168.1.101 slave
進入主機mysq
MySQL -uroot -p123456
MySQL>grant replication all on *.* to identifIEd by '123456'
這句是建立一個可以從192.168.1.%(%表通配)用replication(用戶名) 123456(密碼)訪問所有數據庫(*.*)並擁有所有權限(all)
配置master數據庫文件 my.ini在[MySQLd]選項後添加
log-bin=MySQL-bin #啟動二進制日志系統
server-id=1 #本機數據庫ID標識
binlog-do-db=test1 #要二進制同步的數據庫
binlog-ignore-db=MySQL,test #避免同步的數據庫
配置從服務器 slave
server-id=2 # 從服務器ID號,不要和主ID相同
master-host=192.168.1.100 # 指定主服務器IP地址
master-user=replication # 指定在主服務器上可以進行同步的用戶名
master-passWord=123456 # 密碼
master-port=3306 # 同步所用端口
master-connect-retry=60 # 斷點從新連接時間
replicate-ignore-db=mysql # 屏蔽對MySQL庫的同步
replicate-do-db=test1 # 同步的數據庫的名稱
啟動從服務器線程
MySQL>start slave;
驗證配置 mysql > SHOW MASTER STATUS; | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | | mysql-bin.000004 | 106 | test1,netseek | mysql,test | 同步方法)在從服務器執行MySQL命令下:
MySQL> SLAVE STOP; #先停止slave服務
MySQL> CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000004',MASTER_LOG_
POS=106;
// 根據上面主服務器的show master status的結果,進行從服務器的二進制數據庫記錄回歸, MySQL> SLAVE START; #啟動從服務器同步服務
// 用show slave status\G;看一下從服務器的同步情況
MySQL> SHOW SLAVE STATUS\G; //注意G的大小寫和\的正反
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果都是yes,那代表已經在同步.
二 、雙向同步配置
1、修改原slave 服務器配置
192.168.1.101
// 配置原slave服務器/etc/my.cnf文件,添加紅字的內容:
server-id=2 # 從服務器ID號,不要和主ID相同
master-host=192.168.1.100 # 指定主服務器IP地址
master-user=replication # 指定在主服務器上可以進行同步的用戶名
master-passWord=123456 # 密碼
master-port=3306 # 同步所用端口
master-connect-retry=60 # 斷點從新連接時間
replicate-ignore-db=mysql # 屏蔽對MySQL庫的同步
replicate-do-db=test1 # 同步的數據庫的名稱
log-bin=/var/log/MySQL/updatelog # 設定生成log文件名
binlog-do-db=test1 # 設置同步數據庫名
binlog-ignore-db=mysql # 避免同步MySQL用戶配置,以免不必要的麻煩
MySQL> GRANT REPLICATION SLAVE ON *.* TO
BY '123456'; MySQL>Flush privileges; 4、修改原master配置文件
192.168.1.100
// 配置原master務器/etc/my.cnf文件,添加紅字的內容:
log-bin=MySQL-bin # 啟動二進制日志系統
server-id=1 # 本機數據庫ID 標示為主
#log-bin=/var/log/mysql/updatelog # 設定生成log文件名,這裡的路徑沒有MySQL 這行是Linux系統,
目錄要手動創建並給於它MySQL用戶的權限。
binlog-do-db=test1 # 二進制需要同步的數據庫名
binlog-ignore-db=mysql,test # 避免同步MySQL用戶配置,以免不必要的麻煩
master-host=192.168.1.101 # 設置從原slave數據庫同步更新
master-user=replication # 更新用戶
master-passWord=123456 # 密碼
master-port=3306 # 端口
replicate-do-db=test1 # 需要更新的庫
// 重啟MySQL服務
# service MySQLd restart
// 在B服務器查詢
192.168.1.101
# MySQL -uroot -p123456
mysql> SHOW MASTER STATUS; | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | | updatelog.000001 | 106 | test1 | MySQL | 1 row in set (0.00 sec)
// 在A服務器查詢
192.168.1.100
# MySQL -uroot -p123456
MySQL> SHOW MASTER STATUS;
// 先停止slave服務
MySQL> SLAVE STOP;
MySQL> CHANGE MASTER TO MASTER_HOST='192.168.1.101',MASTER_USER='repli
cation',MASTER_PASSWord='123456',MASTER_PORT=3306,MASTER_LOG_FILE='upda
telog.000001',MASTER_LOG_POS=106;
// 根據上面主服務器的show master status的結果,進行從服務器的二進制數據庫記錄回歸, // 啟動B服務器同步服務
192.168.1.101
MySQL> SLAVE START; 5、驗證配置
// 在A服務器上進入MySQL命令行
192.168.1.100
MySQL> SHOW SLAVE STATUS\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
此處Slave_IO_Running ,Slave_SQL_Running 都應該是yes,表示從庫的I/O,Slave_SQL線程都