mysql5.6數據庫雙機熱備、主從備份


主題:mysql5.6數據庫雙機熱備、主從備份

緣由:

在Web應用系統中,數據庫性能是導致系統性能瓶頸最主要的原因之一。尤其是在大規模系統中,數據庫集群已經成為必備的配置之一。集群的好處主要有:查詢負載、數據庫復制備份等。其中Master負責寫操作的負載,也就是說一切寫的操作都在Master上進行,而讀的操作則分攤到Slave上進行。這樣一來的可以大大提高讀取的效率。寫操作涉及到鎖的問題,不管是行鎖還是表鎖還是塊鎖,都是比較降低系統執行效率的事情。我們這樣的分離是把寫操作集中在一個節點上,而讀操作其其他的N個節點上進行,從另一個方面有效的提高了讀的效率,保證了系統的高可用性。——就不多說了,網上千篇一律,這段也是摘抄並整理的。

 

環境:

  操作系統:WIndows7

  數據庫:mysql5.6,並確保數據庫是啟動成功的。

  PC機或服務器:2台(假設分別命令為master服務器和slave服務器,這兩台電腦相互可通信),環境均為以上配置。

 

主過程:

1、在master服務器配置mysql的my.ini文件中最小配置3個參數

2、在slave服務器中最小配置2個參數

3、完成之后在master服務器建立賬號並做slave行為賦權,在slave服務器設定master行為賦權

4、同步數據庫。

5、開啟slave服務器的slave服務

 

其實做之前覺得復雜,其實就這幾個步驟,操作之后就會覺得so easy.

 

具體過程:

注意事項:

1、關於參數中的橫線及下划線:server-id或server_id一樣,使用橫線或下划線是一樣的。

2、關於my.ini的位置:如果是WINDOWS操作系統,從控制面板中打開服務,找到mysql服務,從服務器屬性中可以看到my.ini的具體位置,別以為在默認的mysql文件夾的mydefault就是,不一定,我就是犯了這個錯誤,配置半天發現都無效,最后從服務中看到my.ini在C:\ProgramData\MySQL\MySQL Server 5.6/my.ini這個位置。

 

1、在master服務器配置mysql的my.ini文件中最小配置3個參數

server-id=1 #這是數據庫ID,此ID是唯一的,ID值不能重復,否則會同步出錯,值區間為1-32.

log-bin = mysql-bin#二進制日志文件,此項為必填項,否則不能同步數據;如果不取名字的話,那么就會以    計算機的名字加編號來命名二進制文件;

binlog-do-db = masters#需要同步的數據庫,如果還需要同步另外的數據庫,那么繼續逐條添加,如果    不寫,那么默認同步所有的數據庫;

binlog-ignore-db = mysql 不需要同步的數據庫;

以上參數設定好之后輸入命令show master status,如果以上配置都成功就會出現一個列表,請記錄里面的file和position參數。

 

2、在slave服務器中最小配置2個參數

從數據庫的話只需要配置server-id,binlog-do-db,binlog-ignore-db即可。

serverid需要和master服務器的區分開,binlog-do-db,binlog-ignore-d的參數需要和主服務器一致。

 

3、完成之后在master服務器建立賬號並做slave行為賦權,在slave服務器設定master行為賦權。

1、在master服務器主數據庫添加同步賬號,這個賬號用於salve服務器用這個賬號登錄master服務器並讀取bin-log文件同步數據用,執行如下命令:

命令格式:grant replication slave on *.* to '用戶名稱'@'SLAVE服務器地址' identified by '用戶密碼';
例如執行:grant replication slave on *.* to 'slave'@'%' identified by 'slave';

2、在slave服務器設定同步賬號,這個賬號用於salve服務器用這個賬號登錄master服務器並讀取bin-log文件同步數據用,執行如下命令:

mysql> change master to

       -> master_host='master服務器IP',

       -> master_user='master服務器設定的同步用戶',

       -> master_password='master服務器設定的同步用戶密碼',

       -> master_log_file='上面我們提到的master服務器看到的file名稱',

       -> master_log_pos=上面我們看到的master服務器看到的position參數;

 

4、同步數據庫。

一切就緒,只欠東風!現在需要我們在同步之前把兩台服務器的數據庫做一下同步,並且確保master服務器這期間是不被寫入和更改數據的。

網上有很多鎖庫然后備份,完事在解鎖的方式,就不多介紹了,我自己用的是navicat,直接在slave服務器建立一個庫,庫名和master服務器一致,然后打開master服務器這個庫 拷貝所有表,粘貼到slave這個庫上就可以了,比較簡單而且快。

 

5、開啟slave服務器的slave服務即可。

在slave服務器執行slave start命令,啟動服務。

驗證是否同步:

執行show slave status\G;

slave_io_running和slave_sql_running兩個參數均為YES就可以了。

這時候隨便你更改master上的這個數據庫,都可以看到slave服務器的數據庫被同步了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM