Windows下多個Mysql實例配置主從

序:
    網上有不少相似的文章,也是各類百度出來的,可是對於多數剛開始接觸MYSQL主從的小白來講,網上文章的代碼裏面不少技術點都沒有理解,有跌打誤撞碰上的,但多數都是這篇文章卡主了,換篇文章接着卡。- -。
    下面真正開始寫教程以前,我但願你可以先完整的看完,再去敲代碼。
    方法適用於MYSQL 5.1以後的版本。以前的版本,自行百度。
Mysql的主從是個什麼德行我就不解釋了。否則你也不會搜不到這篇文章。
環境:
w7 64位。
    mysql 5.5.24...(也就是多數你們裝的wamp包裏面的版本)
其實應該是要在 linux裏面去作這件事的,可是僅僅是爲了瞭解,學習這個主從,大多數人仍是windows下的平臺,So...不解釋。
首先你要在你的windows下再裝一個mysql實例(不要妄想着一個Mysql實例,裏面弄兩個庫而後他們配置主從,這個我可沒玩過,有興趣的同窗能夠嘗試一下),意味着你要分配不一樣的端口。
windows下安裝多個mysql的過程看下面這篇文章就行了。

這是用到的軟件包
(看我多麼良心,連軟件都給你準備好了,不用你去各大垃圾下載站去下載了。再次注意你的環境,保證跟個人同樣,以及數據庫版本)


OK。我就當你已經配置好了第二個mysql實例。
下面兩個bat 文件代碼,用來幫你快速啓動關閉你的新服務
startmysql.bat

@ECHO OFF
net start mysql5.5
pause

stopmysql.bat

@ECHO OFF
net stop mysql5.5

pause

這個mysql5.5 是你第二個實例的服務名稱,stop中止服務,start 開啓服務,不解釋了。
別忘了進去你第二個Mysql實例瞅瞅。


進入正餐:
由於咱們是在一個windows下配置的,因此沒有網上那些主從 IP。 都是localhost
主數據庫  my.ini添加以下

在[mysqld]下添加配置數據:
server-id=1     #配一個惟一的ID編號,1至32。 手動設定
log-bin=mysql-bin  #二進制文件存放路徑 ,不要在乎爲啥沒有路徑名,你就這樣寫

#設置要進行或不要進行主從複製的數據庫名,同時也要在Slave(也就是你的從庫) 上設定。
binlog-do-db=進行主從數據庫名1 ,進行主從數據庫名2
binlog-ignore-db=不參與主從的數據庫名,不參與主從的數據庫名2
保存,重啓數據庫服務。

 上面的這些配置的含義:html

    - server-id 顧名思義就是服務器標識id號了
    - log-bin 指定日誌類型
    - binlog-do-db 是你須要複製的數據庫名稱,若是有多個就用逗號「,」分開
    - binlog-ignore-db 是不須要複製的數據庫名稱,若是有多個就用逗號「,」分開mysql

在主庫中創建一個用戶(專門用給從庫鏈接的,注意這是在主庫裏面創建的,可別迷迷糊糊的到從庫的命令界面敲):

1.mysql>grant replication slave,reload,super on *.* to  lisimin @l ocalhost identified by ' root' ; 

2.mysql>flush privileges; 
3.mysql>show master status; # 找到File 和 Position 的值記錄下來;



簡單解釋一下第一句。
建立了一個用來複制的帳號。
「@」前面的「lisimin」是用戶名,後面的是有效的域,這裏由於是本地,因此是寫的是Localhost,若是是其餘地址,對應填寫上IP便可,不過應該不須要考慮端口問題,我建立的時候就沒寫端口。by 後面的「root」是密碼。帳戶密碼本身定義,不要跟root,以及你當前的用戶名衝突。。

2.flush....刷新權限。
3.這個就是你的日誌值
下面這篇文章是介紹建立用戶對應分配權限問題的,簡單瞭解一下就行。


從庫配置:
從數據庫配置my.ini:
[mysqld]
server-id=2     #惟一
#設置要進行或不要進行主從複製的數據庫名,同時也要在Master 上設定。
replicate-do-db=進行主從數據庫名1 ,數據庫名2
replicate-ignore-db=不進行數據庫名1 ,數據庫名2

多個數據庫之間用 , 分割。其實也能夠這樣寫
replicate-do-db=進行主從數據庫名1 
replicate-do-db=進行主從數據庫名2
上面的那個寫法也是。

其實你只須要寫進行主從的庫名稱就能夠了。
對了。假如你的主庫叫 A 。那你的從庫 最好也叫A。叫別的也能夠,不過必定要是存在的。

下面登錄你的從庫:
mysql>change master to master_host='127.0.0.1',master_user='slave',master_password='slave', master_log_file='mysql-bin.000001',master_log_pos=107;

master_host= 這裏填你主庫的IP。
master_user='lisimin'  剛纔咱們建立的那個用戶。
master_user='root'  ..不解釋。
這就是咱們剛纔 在主庫裏面 show  master status;獲得的值了。自行根據實際狀況填寫
master_log_file='mysql-bin.000015
master_log_pos=107

若是你的主庫還有是其餘端口的話,
master_port=端口號   
master裏面經常使用的就這些參數了,其他的自行百度。
常見的有,讓你先 stop slave 。。
那你就先 mysql>stop slave 。再執行上面的代碼。其餘的錯誤,容易出如今語法,標點符號上,
而後 mysql>start slave ;
mysql>show slave status\G;
若是出現:
Slave_IO_Runing:Yes
Slave_SQL_Running :yes
那就說明成功了,若是出現錯誤,通常都是鏈接出問題。從新檢查一下你是否正確的輸入了剛纔建立的用戶名和密碼。好了基本上就是這些問題了。

尊重原創,一些資料,也是從下面兩篇文章中參照的、


最後說點注意事項,從庫要先建立好,以及裏面的表結構,反正我是先建立好表結構的,若是你說之後涉及到添加,刪除字段問題,那就是之後的事了。

還有,若是你真正部署到服務器的話,通常是linux必定要寫好了定時刪除 日誌文件的腳本文件,這個估計是之後的事了。否則,日誌文件但是很是大的。按期作個備份啥的。

OK,這樣你就能夠在你的主數據庫裏添加一條記錄試試,看看你的從庫有木有記錄。(別忘開從庫的服務啊、、)
以及,能夠把主庫裏面的表設計爲 innodb。從庫設計爲myisam。。來提升性能。

不囉嗦了。
相關文章
相關標籤/搜索