序:
網上有很多類似的文章,也是各種百度出來的,但是對於多數剛開始接觸MYSQL主從的小白來說,網上文章的代碼里面很多技術點都沒有理解,有跌打誤撞碰上的,但多數都是這篇文章卡主了,換篇文章接着卡。- -。
下面真正開始寫教程之前,我希望你能夠先完整的看完,再去敲代碼。
方法適用於MYSQL 5.1之后的版本。之前的版本,自行百度。
Mysql的主從是個什么德行我就不解釋了。不然你也不會搜不到這篇文章。
環境:
w7 64位。
mysql 5.5.24...(也就是多數大家裝的wamp包里面的版本)
其實應該是要在 linux里面去做這件事的,但是僅僅是為了了解,學習這個主從,大多數人還是windows下的平台,So...不解釋。
首先你要在你的windows下再裝一個mysql實例(不要妄想着一個Mysql實例,里面弄兩個庫然后他們配置主從,這個我可沒玩過,有興趣的同學可以嘗試一下),意味着你要分配不同的端口。
windows下安裝多個mysql的過程看下面這篇文章就好了。
這是用到的軟件包
http://yunpan.cn/cySt9WkiiTDPa 提取碼 42e8
(看我多么良心,連軟件都給你准備好了,不用你去各大垃圾下載站去下載了。再次注意你的環境,保證跟我的一樣,以及數據庫版本)
OK。我就當你已經配置好了第二個mysql實例。
下面兩個bat 文件代碼,用來幫你快速啟動關閉你的新服務
startmysql.bat
@ECHO OFF
net start mysql5.5
pause
net start mysql5.5
pause
stopmysql.bat
@ECHO OFF
net stop mysql5.5
pause
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
保存,重啟數據庫服務。
上面的這些配置的含義:
- server-id 顧名思義就是服務器標識id號了
- log-bin 指定日志類型
- binlog-do-db 是你需要復制的數據庫名稱,如果有多個就用逗號“,”分開
- binlog-ignore-db 是不需要復制的數據庫名稱,如果有多個就用逗號“,”分開
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。。來提高性能。
不啰嗦了。