MySQL主從同步設置中主服務器二進制日志無法開啟的問題
最近正在學習使用MySQL數(shù)據(jù)庫,欲實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的同步,在設置主服務器和從服務器的過程中出現(xiàn)很多問題。
看了網(wǎng)上很多教程,發(fā)現(xiàn)大多教程里面有一個問題,也不知道是我的數(shù)據(jù)庫版本導致的問題還是使用mysql5.6的人都有這個問題。
以下是我的操作:
1、操作條件配置
主服務器:
(1)系統(tǒng):windows 7
(2)數(shù)據(jù)庫:mysql 5.6
從服務器(虛擬機):
(1)windows 7
(2)數(shù)據(jù)庫:mysql 5.6
2、具體操作(如果有navicat會很簡單)
(1)在主服務器上建立需同步的數(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)在從服務器上建立相同的數(shù)據(jù)庫和表;
(4)由于同步是基于日志的,所以要確保主服務器二進制日志已開啟。
在主服務器mysql執(zhí)行查詢:show variables like '%log_bin%'; 可以看到log-bin是關閉的

(5)問題就出在這一步,大多數(shù)教程都是提示“在主服務器上mysql安裝目錄下有個配置文件my.ini,在[mysqld]下更改log-bin=mysql-bin”,但我的mysql5.6的安裝根目錄下只有my-default.ini,于是我誤以為就是在這個文件里面更改,但是更改之后,無論如何重啟服務,查詢log-bin始終是OFF,于是在找了很多教程之后,發(fā)現(xiàn)了mysql的另一個數(shù)據(jù)存儲的路徑,我嘗試的找到了mysql的另一個保存數(shù)據(jù)的目錄C:\ProgramData\MySQL,找到了my.ini,于是在這個文件里進行了更改:



(6)修改之后,重啟服務器,在進行查詢show variables like '%log_bin%'; 終于解決了這個煩了我一天的問題:

(7)同理,從服務器的server-id設置成2,且同樣要在目錄 C:\ProgramData\MySQL中找到my.ini文件打開進行設置 (ProgramData文件夾可能是隱藏的,直接輸入地址欄就能找到),后面的設置可直接寫在server-id后面,同樣是在該目錄下的my.ini中
replicate-do-db=test #要同步的數(shù)據(jù)庫 replicate-do-table=test.bakeup_table #要同步的表,改成自己的數(shù)據(jù)庫和表 replicate-do-table=test.user #要同步的第二個表
(8)然后在主服務器數(shù)據(jù)庫上創(chuàng)建一個用于同步數(shù)據(jù)的用戶,使用navicat很簡單,用戶名和密碼自行設置,主機設置成%,然后執(zhí)行grant replication slave on *.* to 'testuser'@'%';

(9)設置好后,在navicat的命令行中執(zhí)行 show master status;顯示出正確結果,終于那個之前一直是 “ empty set ” 的問題解決了,至此主機上的都設置好了。

3、從數(shù)據(jù)庫中的設置
(1)配置尋找主服務器如下圖,然后啟動從服務器,輸入start slave;即可
CHANGE MASTER TO MASTER_HOST='主服務器ip', MASTER_USER='testuser', #新建的用戶 MASTER_PASSWORD='yanwei', #我的用戶密碼 MASTER_LOG_FILE='mysql-bin.000002', #上圖查詢出的同步文件 MASTER_LOG_POS=120; #上圖查詢出的同步點(即:position下的值)

(2)檢查配置結果,在從服務器上輸入:show slave status;可以看到從服務器的狀態(tài),已經(jīng)開始準備接受數(shù)據(jù)了。
至此,主從復制的所有設置都已設置完成。接下來就是測試數(shù)據(jù)的同步效果了。
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
MYSQL使用inner join 進行 查詢/刪除/修改示例
本文為大家介紹下使用inner join 進行查詢/刪除/修改,具體實現(xiàn)如下,學習mysql的朋也可以學習下,希望對大家有所幫助2013-07-07
一文詳解如何在MySQL中創(chuàng)建函數(shù)
這篇文章主要為大家介紹了一文詳解如何在MySQL中創(chuàng)建函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-05-05

