今天研究了個開源項目,資料庫是mysql的,其中的指令碼資料需要備份,由於本人的機器時mac pro,而且mac下的資料庫連接工具都不怎麼好用,就想著如何利用windows下的資料庫連接工具使用,並做相關備份,另外windows系統下的sqlyog工具還是非常強大的,在此推薦。
因此為了使用sqlyog等windows系統下的串連工具,便開始了一天的折騰。
首先兩種思路,其一是利用另外一台宏碁膝上型電腦,直接在其上安裝sqlyog使用,通過無線區域網路進行串連使用,這種方式太過麻煩,而且來回換電腦很麻煩,遠端連線使用也很慢。其二是安裝虛擬機器,在虛擬機器上安裝串連工具。
由於本人的mac pro已經安裝mysql資料庫,並且已經安裝了virtualbox虛擬機器並安裝了windows7系統,並在windows7系統中也安裝了mysql。
1.在虛擬機器win7系統中安裝sqlyog,直接連接mac系統的mysql,並匯出備份,這個很簡單。(當然要注意虛擬機器與mac機器的網路連接是通的)
1)首先要設定虛擬機器網卡設定,選擇橋接模式,virtualbox這類虛擬機器的橋接模式的概念是虛擬機器作為網路中的一台單獨的機器,有自己的ip,與區域網路中的ip是想通的,
設定virtualbox的橋接模式如圖所示
!
這樣按照圖中的設定,虛擬機器根主機就可以相互訪問了。
2)利用sqlyog進行串連
對了 還有一點需要注意的是,由於區域網路ip可能不會固定,正好本人用的是小米路由器,有綁定裝置ip的功能,這樣ip就固定啦
從上面的圖中可以看出,主機ip跟虛擬機器ip是獨立的啦。
2.mysql主從備份的方式,mac pro為主master,虛擬機器為從slave
1)首先由於mac電腦mysql用戶端安裝完成後,預設是沒有my.cnf檔案的,即使修改了/usr/local/mysql/的相關配置也是沒有用的,這就需要自訂mysql配置了,將/usr/local/mysql/support-files/中的my-default.cnf 檔案 拷貝到/etc目錄下,當然這裡也遇見問題了,服務啟動不了了
這就需要在設定檔中加入explicit_defaults_for_timestamp=true
2)修改設定檔,如下所示
3)修改虛擬機器中的mysql目錄中的my.cnf
修改mysqld節點
4)重啟master及slave並查看狀態
查看master狀態
查看slave狀態
當看到上面兩張圖片的時候則證明配置成功,當然本人並沒有那麼順利,中途遇到了很多問題
其一:Got fatal error 1236 from master when reading data from binary log
這中問題按照網上大部分的解決方案是,首先查看master的狀態,並記錄下相關資訊
比如資訊為:
要記錄下file:mysql-bin.000002 position:16093
並在slave中執行:
這種方式應該是沒有問題的。如果上面這種方式不行,可以試試下面這種,本人試了試應該是沒問題,
(這種方式本人可以可能是因為本人配置的時候沒有按照規範來,導致主從不一致的原因)
其二:Slave can not handle replication events with the checksum that master is configured to log
這個錯誤一般出現在master5.6,slave在低版本的情況下。這是由於5.6使用了crc32做binlog的checksum。除了把master的設定從crc32改到none
binlog-checksum = none [my.cnf]
其三:本人今天花費了大量的時間主要原因便是這點了,本人在虛擬機器裡查看slave狀態顯示都正確,
但是本人通過虛擬機器的串連工具,將master資料庫中添加了一張表並插入資料,但是總是沒有同步到從mysql,於是查看進程
從mysql進程
master進程
這點問題也就是糾結了一天的問題,當然也沒有找出具體原因,看提示原因貌似是什麼進程已經睡眠的原因,但是為啥睡眠沒搞明白,查看slave hosts也沒有查到
當然最後,沒辦法了,糾結了很久也沒有發現什麼原因的情況下,本人直接在mac機器上直接通過終端插入資料,居然成功了。。。無語。。不過最終能夠同步了至少還有點欣慰。至於什麼出現這個問題要找時間好好尋找原因了。