小記一次mysql主從配置解決方案
今天研究了個(gè)開源項(xiàng)目,數(shù)據(jù)庫(kù)是mysql的,其中的腳本數(shù)據(jù)需要備份,由于本人的機(jī)器時(shí)mac pro,而且mac下的數(shù)據(jù)庫(kù)連接工具都不怎么好用,就想著如何利用windows下的數(shù)據(jù)庫(kù)連接工具使用,并做相關(guān)備份,另外windows系統(tǒng)下的sqlyog工具還是非常強(qiáng)大的,在此推薦。
因此為了使用sqlyog等windows系統(tǒng)下的連接工具,便開始了一天的折騰。
首先兩種思路,其一是利用另外一臺(tái)宏碁筆記本電腦,直接在其上安裝sqlyog使用,通過無線局域網(wǎng)進(jìn)行連接使用,這種方式太過麻煩,而且來回?fù)Q電腦很麻煩,遠(yuǎn)程連接使用也很慢。其二是安裝虛擬機(jī),在虛擬機(jī)上安裝連接工具。
由于本人的mac pro已經(jīng)安裝mysql數(shù)據(jù)庫(kù),并且已經(jīng)安裝了virtualbox虛擬機(jī)并安裝了windows7系統(tǒng),并在windows7系統(tǒng)中也安裝了mysql。
1.在虛擬機(jī)win7系統(tǒng)中安裝sqlyog,直接連接mac系統(tǒng)的mysql,并導(dǎo)出備份,這個(gè)很簡(jiǎn)單。(當(dāng)然要注意虛擬機(jī)與mac機(jī)器的網(wǎng)絡(luò)連接是通的)
1)首先要設(shè)置虛擬機(jī)網(wǎng)卡設(shè)置,選擇橋接模式,virtualbox這類虛擬機(jī)的橋接模式的概念是虛擬機(jī)作為網(wǎng)絡(luò)中的一臺(tái)單獨(dú)的機(jī)器,有自己的ip,與局域網(wǎng)中的ip是想通的,
設(shè)置virtualbox的橋接模式如圖所示
!
這樣按照?qǐng)D中的設(shè)置,虛擬機(jī)根主機(jī)就可以相互訪問了。
2)利用sqlyog進(jìn)行連接
對(duì)了 還有一點(diǎn)需要注意的是,由于局域網(wǎng)ip可能不會(huì)固定,正好本人用的是小米路由器,有綁定設(shè)備ip的功能,這樣ip就固定啦
從上面的圖中可以看出,主機(jī)ip跟虛擬機(jī)ip是獨(dú)立的啦。
2.mysql主從備份的方式,mac pro為主master,虛擬機(jī)為從slave
1)首先由于mac電腦mysql客戶端安裝完成后,默認(rèn)是沒有my.cnf文件的,即使修改了/usr/local/mysql/的相關(guān)配置也是沒有用的,這就需要自定義mysql配置了,將/usr/local/mysql/support-files/中的my-default.cnf 文件 拷貝到/etc目錄下,當(dāng)然這里也遇見問題了,服務(wù)啟動(dòng)不了了
這就需要在配置文件中加入explicit_defaults_for_timestamp=true
2)修改配置文件,如下所示
3)修改虛擬機(jī)中的mysql目錄中的my.cnf
修改mysqld節(jié)點(diǎn)
4)重啟master及slave并查看狀態(tài)
查看master狀態(tài)
查看slave狀態(tài)
當(dāng)看到上面兩張圖片的時(shí)候則證明配置成功,當(dāng)然本人并沒有那么順利,中途遇到了很多問題
其一:Got fatal error 1236 from master when reading data from binary log
這中問題按照網(wǎng)上大部分的解決方法是,首先查看master的狀態(tài),并記錄下相關(guān)信息
比如信息為:
要記錄下file:mysql-bin.000002 position:16093
并在slave中執(zhí)行:
這種方式應(yīng)該是沒有問題的。如果上面這種方式不行,可以試試下面這種,本人試了試應(yīng)該是沒問題,
(這種方式本人可以可能是因?yàn)楸救伺渲玫臅r(shí)候沒有按照規(guī)范來,導(dǎo)致主從不一致的原因)
其二:Slave can not handle replication events with the checksum that master is configured to log
這個(gè)錯(cuò)誤一般出現(xiàn)在master5.6,slave在低版本的情況下。這是由于5.6使用了crc32做binlog的checksum。除了把master的設(shè)置從crc32改到none
binlog-checksum = none [my.cnf]
其三:本人今天花費(fèi)了大量的時(shí)間主要原因便是這點(diǎn)了,本人在虛擬機(jī)里查看slave狀態(tài)顯示都正確,
但是本人通過虛擬機(jī)的連接工具,將master數(shù)據(jù)庫(kù)中添加了一張表并插入數(shù)據(jù),但是總是沒有同步到從mysql,于是查看進(jìn)程
從mysql進(jìn)程
master進(jìn)程
這點(diǎn)問題也就是糾結(jié)了一天的問題,當(dāng)然也沒有找出具體原因,看提示原因貌似是什么進(jìn)程已經(jīng)睡眠的原因,但是為啥睡眠沒搞明白,查看slave hosts也沒有查到
當(dāng)然最后,沒辦法了,糾結(jié)了很久也沒有發(fā)現(xiàn)什么原因的情況下,本人直接在mac機(jī)器上直接通過終端插入數(shù)據(jù),居然成功了。。。無語。。不過最終能夠同步了至少還有點(diǎn)欣慰。至于什么出現(xiàn)這個(gè)問題要找時(shí)間好好查找原因了。
相關(guān)文章
解決Linux安裝mysql 在/etc下沒有my.cnf的問題
這篇文章主要介紹了解決Linux安裝mysql 在/etc下沒有my.cnf的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-01-01從MySQL復(fù)制功能中得到的一舉三得實(shí)惠分析
在MySQL數(shù)據(jù)庫(kù)中,支持單項(xiàng)、異步復(fù)制。在復(fù)制過程中,一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而另外一臺(tái)服務(wù)器充當(dāng)從服務(wù)器。筆者通過MySQL的復(fù)制功能得到了一下實(shí)惠,在下文中與大家分享。2011-03-03MySQL 存儲(chǔ)過程傳參數(shù)實(shí)現(xiàn)where id in(1,2,3,...)示例
一個(gè)MySQL 存儲(chǔ)過程傳參數(shù)的問題想實(shí)現(xiàn)例如篩選條件為:where id in(1,2,3,...),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-10-10MySQL創(chuàng)建內(nèi)部臨時(shí)表的所有場(chǎng)景盤點(diǎn)
這篇文章主要為大家介紹了MySQL創(chuàng)建內(nèi)部臨時(shí)表的所有場(chǎng)景盤點(diǎn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11mysql獲取當(dāng)前日期年月的兩種實(shí)現(xiàn)方式
這篇文章主要介紹了mysql獲取當(dāng)前日期年月的兩種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07