MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無法開啟的問題
最近正在學(xué)習(xí)使用MySQL數(shù)據(jù)庫,欲實(shí)現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的同步,在設(shè)置主服務(wù)器和從服務(wù)器的過程中出現(xiàn)很多問題。
看了網(wǎng)上很多教程,發(fā)現(xiàn)大多教程里面有一個(gè)問題,也不知道是我的數(shù)據(jù)庫版本導(dǎo)致的問題還是使用mysql5.6的人都有這個(gè)問題。
以下是我的操作:
1、操作條件配置
主服務(wù)器:
(1)系統(tǒng):windows 7
(2)數(shù)據(jù)庫:mysql 5.6
從服務(wù)器(虛擬機(jī)):
(1)windows 7
(2)數(shù)據(jù)庫:mysql 5.6
2、具體操作(如果有navicat會很簡單)
(1)在主服務(wù)器上建立需同步的數(shù)據(jù)庫
create database test;
(2)在該數(shù)據(jù)庫下建立兩張表:
CREATE TABLE `backup_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) CHARACTER SET utf8 NOT NULL, `sex` varchar(2) CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;
CREATE TABLE `user` ( `User_ID` int(50) NOT NULL, `User_Name` char(100) DEFAULT NULL, PRIMARY KEY (`User_ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
(3)在從服務(wù)器上建立相同的數(shù)據(jù)庫和表;
(4)由于同步是基于日志的,所以要確保主服務(wù)器二進(jìn)制日志已開啟。
在主服務(wù)器mysql執(zhí)行查詢:show variables like '%log_bin%'; 可以看到log-bin是關(guān)閉的
(5)問題就出在這一步,大多數(shù)教程都是提示“在主服務(wù)器上mysql安裝目錄下有個(gè)配置文件my.ini,在[mysqld]下更改log-bin=mysql-bin”,但我的mysql5.6的安裝根目錄下只有my-default.ini,于是我誤以為就是在這個(gè)文件里面更改,但是更改之后,無論如何重啟服務(wù),查詢log-bin始終是OFF,于是在找了很多教程之后,發(fā)現(xiàn)了mysql的另一個(gè)數(shù)據(jù)存儲的路徑,我嘗試的找到了mysql的另一個(gè)保存數(shù)據(jù)的目錄C:\ProgramData\MySQL,找到了my.ini,于是在這個(gè)文件里進(jìn)行了更改:
(6)修改之后,重啟服務(wù)器,在進(jìn)行查詢show variables like '%log_bin%'; 終于解決了這個(gè)煩了我一天的問題:
(7)同理,從服務(wù)器的server-id設(shè)置成2,且同樣要在目錄 C:\ProgramData\MySQL中找到my.ini文件打開進(jìn)行設(shè)置 (ProgramData文件夾可能是隱藏的,直接輸入地址欄就能找到),后面的設(shè)置可直接寫在server-id后面,同樣是在該目錄下的my.ini中
replicate-do-db=test #要同步的數(shù)據(jù)庫 replicate-do-table=test.bakeup_table #要同步的表,改成自己的數(shù)據(jù)庫和表 replicate-do-table=test.user #要同步的第二個(gè)表
(8)然后在主服務(wù)器數(shù)據(jù)庫上創(chuàng)建一個(gè)用于同步數(shù)據(jù)的用戶,使用navicat很簡單,用戶名和密碼自行設(shè)置,主機(jī)設(shè)置成%,然后執(zhí)行g(shù)rant replication slave on *.* to 'testuser'@'%';
(9)設(shè)置好后,在navicat的命令行中執(zhí)行 show master status;顯示出正確結(jié)果,終于那個(gè)之前一直是 “ empty set ” 的問題解決了,至此主機(jī)上的都設(shè)置好了。
3、從數(shù)據(jù)庫中的設(shè)置
(1)配置尋找主服務(wù)器如下圖,然后啟動從服務(wù)器,輸入start slave;即可
CHANGE MASTER TO MASTER_HOST='主服務(wù)器ip', MASTER_USER='testuser', #新建的用戶 MASTER_PASSWORD='yanwei', #我的用戶密碼 MASTER_LOG_FILE='mysql-bin.000002', #上圖查詢出的同步文件 MASTER_LOG_POS=120; #上圖查詢出的同步點(diǎn)(即:position下的值)
(2)檢查配置結(jié)果,在從服務(wù)器上輸入:show slave status;可以看到從服務(wù)器的狀態(tài),已經(jīng)開始準(zhǔn)備接受數(shù)據(jù)了。
至此,主從復(fù)制的所有設(shè)置都已設(shè)置完成。接下來就是測試數(shù)據(jù)的同步效果了。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MYSQL使用inner join 進(jìn)行 查詢/刪除/修改示例
本文為大家介紹下使用inner join 進(jìn)行查詢/刪除/修改,具體實(shí)現(xiàn)如下,學(xué)習(xí)mysql的朋也可以學(xué)習(xí)下,希望對大家有所幫助2013-07-07Mac安裝 mysql 數(shù)據(jù)庫總結(jié)
本文給大家分享的是如何在Mac下安裝mysql數(shù)據(jù)庫的方法,總結(jié)的很全面,有需要的小伙伴可以參考下2016-04-04MySQL忘記root密碼以及遠(yuǎn)程無法連接的解決方法
這篇文章主要介紹了MySQL忘記root密碼以及遠(yuǎn)程無法連接問題的解決方法,文中有詳細(xì)的代碼示例來解決這些辦法,需要的朋友可以參考下2023-06-06一文詳解如何在MySQL中創(chuàng)建函數(shù)
這篇文章主要為大家介紹了一文詳解如何在MySQL中創(chuàng)建函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05