今天研究了個開源項目,數據庫是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機器上直接通過終端插入數據,居然成功了。。。無語。。不過最終能夠同步了至少還有點欣慰。至於什麼出現這個問題要找時間好好查找原因了。