叢集之mysql主從配置(windows和linux版)

來源:互聯網
上載者:User

標籤:目錄   mem   art   ogr   image   blog   tar   表示   png   

起因

  由於網站進一步開發啟動並執行需求,要求主機7*24小時運行正常,同時要求能夠防止資料庫災難。考慮到後期的開發程度和業務量,準備向高可用系統進行改變,同時通過負載平衡提高網路效能。於是第一步就考慮到了資料庫的叢集問題。

叢集和資料庫主從複製叢集

  通過多個物理機伺服器共同處理和完成同一個業務功能,能很好的提高網站效能和可靠性。不同的環境下需要採用不同的叢集策略,叢集主要分為以下幾種:

(1)高可用叢集:節點間以主備形式實現資料庫容災,在宕機情況下能快速恢複,節點間共用資源。

(2)負載平衡叢集:節點間相互獨立不共用資源,通過一定的演算法和模式將業務操作分到不同的節點,充分利用每個節點的資源,能夠提高擴充性,加強了網路資料處理能力。

(3)科學計算叢集:相對串列計算而言的,多台電腦執行多個指令達到單台電腦無法達到了計算速度。

主從複製

  對上面高可用叢集的理解,實現高可用叢集可以設定管理員的主從關係,通過瞭解準備使用Mycat來對資料庫進行管理,在此之前需要對資料庫進行主從配置。

(1)主從配置:為了將mysql的資料庫分不到多個系統中,最簡單的實現方式就是複製了。而mysql內建有一種複製方式,即指定一台或多台伺服器為主機master,另外一台或多台伺服器作為從機master。當master存在更新的時候,master將更新寫入二進位檔案,並維護了一個索引檔案追蹤記錄檔。當slave串連到主伺服器之後,slave會通知master進行同步,master通過索引找記錄檔上一次同步的位置,然後將這段時間內的更新資料發送給slave進行同步。

(2)mysql主從複製支援類型:

a. 基於sql的支援:通過將matser記錄檔中更新的sql語句複製到slave上,slave執行。

b. 基於行的支援:當sql不精確或者記錄丟失時,mysql會將改變的行直接複製到slave上

c. 混合支援:預設使用a方式

(2)主從複製優缺點

優點:高可用,提高容錯率,資料分布,負載平衡。

缺點:單向同步,無法解決主機宕機問題

主從配置

  為了方便示範,採用單主單從的主從配置,單主多從的配置原理一樣。雙主配置能很好地避免主伺服器的宕機情況,配置比較複雜,下次有空示範。

Windows配置測試環境

  windows 7,mysql 5.5.28,為了避免因為版本不一致帶來的麻煩,主從資料庫用同一版本資料庫庫

  主機ip:192.168.1.234  從機ip:192.168.1.244

準備條件

(1)關閉防火牆

(2)保證兩台主機的mysql遠端連線開啟(必須)

(3)3306連接埠(資料庫連接埠號碼,不固定,按自己的配置去確定)是否公開

(4)在主機和從機上建立test資料庫

主機配置

(1)在mysql的安裝資料夾中找到mysql.ini檔案,在該檔案的mysqld標籤下添加以下屬性(還有其他很多屬性可以自行瞭解):

server-id=66    #伺服器id不固定,整數即可log-bin=C:\Program Files\MySQL\MySQL Server 5.5\mysql-bin  #同步處理記錄的檔案存放路徑binlog-do-db=test  #備份哪些些資料庫的二進位日誌#binlog-ignore-db=...  #也可以直接設定哪些資料庫不同步

配置完成後重啟mysql,這時候會在這個時候在C:\Program Files\MySQL\MySQL Server 5.5\下會看到mysql-bin.index和mysql-bin.00001兩個檔案,很明顯前面的檔案時索引檔案,用以記錄第二個檔案,第二個是二進位的記錄檔,該檔案每次重啟資料庫均會產生新的記錄檔,這些記錄檔的索引被以檔案名稱為索引的索引檔案所維護,在索引檔案中可以看到所有記錄檔的座標。

(2)登陸mysql,給從機配置登入名稱,登陸,密碼和許可權

 

grant replication slave,reload,super on *.*  to [email protected]  identified by ‘qwer‘;

 

這條語句意思是給ip為192.168.1.244(從機ip)的遠程伺服器配置登入名稱是slave,密碼是qwer,並賦予slave,super,reload許可權

(3)查看主機狀態

show master status;

查出主機的file和postin在從機配置中需要使用,記住即可。

致此,主機配置完成。

從機配置

(1)在從機mysql安裝目錄下找到mysql.ini檔案,在該檔案的mysqld標籤下添加如下:

server-id=88   #同樣隨機,保證整數唯一即可replicate-do-db=test1  #複寫(同步)哪一個資料庫

配置好之後重啟資料庫

(2)測試主機的遠端連線是否成功(必要測試)如果不成功立即排除問題,不然不進行下一步操作

mysql -uslave -h 192.168.1.234 -pqwer

串連成功後退出主機mysql,進入從機mysql

(3)修改(第一次應該叫指定)主機資訊

stop slave;      關閉從機同步串連change master to master_host = ‘192.168.1.234‘, master_user=‘slave‘, master_ password =‘qwer‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=593;

將主機地址,主機名稱,主機密碼,二進位檔案地址,剛剛的主機file和position指定到主機資訊中(上面的change語句)

注意:這個步驟如果出現警告,請查看記錄檔進行排查,不然後續合約無法成功。修改完成後

start slave;     開啟同步串連show slave status\G;   查看主從機串連資訊

查看同步狀態會有:

圖中的IO狀態表示主從資料庫是否串連成功,sql表示兩個同步檔案和slave從機是夠串連成功,參考第一張圖的IO和sql

如果兩個都是yes即表示同步配置成功,之後自己可以再test資料庫下測試。如果出現任何問題可以留言。

linux配置測試環境

mysql版本5.7  兩台伺服器的版本要求一致,以免後續出現不可預知的問題

主機 ubuntu 16.04   ip:192.168.1.116

從機 CentOS 6.5      ip:192.168.1.254

準備條件

(1)關閉防火牆

sudo service ufw stop

(2)保證兩台伺服器的mysql遠端連線成功

(3)保證3306連接埠可以正常使用

a. 查看3306連接埠是否被綁定本地

netstat -an|grep 3306

是正確的,如果出現的是127.0.0.0:::3306說明連接埠被本機綁定了,這種情況下需要修改mysqld的配置

注意:這裡是修改mysqld設定檔配置,僅僅在my.cnf中修改是不起作用的

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf    進入mysqld的設定檔

將mysqld下的這行代碼注釋掉即可

(4)建立test同名資料庫

主機配置

(1)找到my.cnf檔案

  與windows上不同,linux的設定檔時my.cnf,這個檔案預設是在/etc上,如果找不到會在.xx/nysql/目錄下尋找。如果你找不到my.cnf可以輸入以下命令(在根目錄下輸入此命令):

find -name ‘my.cnf‘  #找到目前的目錄下my.cnf的位置

(2)配置my.cnf

  如果是第一次安裝mysql(不知道怎麼安裝的請點擊《linux下的mysql安裝》),第一次進入my.cnf會發現該檔案下沒有任何標籤,這時候可以在其他的地方(官網上或者靠譜點的網站上)複製my.cnf的標頭檔或者樣式,如果嫌麻煩可以直接在my.cnf下增加一個[mysqld]標籤(必要的)否則會報錯的。然後再mysqld標籤下添加以下配置:

server_id=66log-bin=mysql-binbinlog-do-db=test

之後重啟mysql,跟windows相同。

(3)授權(跟windows相同)

grant replication slave,reload,super on *.*  to [email protected]  identified by ‘qwer‘;

(4)記錄主機配置

show master status;

從機配置。。。相同

在my.cnf檔案下的sqld標籤(跟主機一樣沒有的話添加上)下配置:

server-id=88 replicate-do-db=test1  #複寫(同步)哪一個資料庫

重啟mysql。。。

mysql -uslave -h 192.168.1.116 -pqwer    #測試主機串連stop slave;      #關閉從機同步串連change master to master_host=‘192.168.1.234‘,master_user=‘slave‘,master_password=‘qwer‘, master_log_file=‘mysql-bin.000001‘,master_log_pos=593;  #填寫剛剛資訊start slave;     #開啟同步串連show slave status\G;   #查看主從機串連資訊

完成後會查出同步狀態:

兩個是yes就代表同步成功,如果有no分析日誌解決問題,或者留言也可

 

以上兩個版本的配置算是結束了

注意

  按照以上的配置,主機對從機的許可權之後DQL和DML,也就是讀寫權限,而並不具備DDL操作許可權。也就是說只有的那個兩個同名資料庫中存在同名表時候,改變主機表的資料,才會同步到從機。如果需要建立表等的許可權,可以再資料庫中mysql資料庫的user表中修改許可權。

也可以使用授權語句,授予遠程主機所有許可權:

grant all privileges on *.* to [email protected] identified by ‘qwer‘;  #授予所有許可權
flush privileges;    #重新整理資料庫

這樣一來,主要資料庫中建表等操作也能同步到從庫

 

叢集之mysql主從配置(windows和linux版)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.