程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql Master Slave配置

mysql Master Slave配置

編輯:關於MYSQL數據庫

做主從,就需要至少兩個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用戶配置,以免不必要的麻煩

2、創建更新日志的目錄並給MySQL用戶的權限
# mkdir /var/log/MySQL
# chown -R mysql.mysql /var/log/MySQL
3、重新啟動MySQL服務,創建一個同步專用賬號
# service MySQLd restart
//給與從服務器用戶replication的同步權限
# MySQL -uroot -p123456
    

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線程都     

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved