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