mysql主從伺服器配置

來源:互聯網
上載者:User

標籤:mysql伺服器叢集技術

假如一個業務情境,測試後,讀寫比列為1:20,根據讀寫比例,合理設定最佳化方案。

讀寫比列:

寫資料/讀資料比例,    insert/update/delete    /  select


從“讀寫分離”概念推導實現基本要素:

一般來說,讀伺服器就是指寫伺服器的資料鏡像。


從伺服器端看:要有N台從伺服器和主伺服器保持資料一致。

從用戶端看:比如有一條insert語句和一條select語句,

則要區分讀/寫語句,並且分別請求從/主伺服器。


伺服器端讀寫分離的具體技術

1:資料庫叢集技術

叢集由3個概念

(1)sql節點    sql node

(2)資料節點    data node

(3)管理節點    ndb managerment


sql語句發送“1sql節點”,“1sql”節點發往“2資料節點”,再由3管理節點完成資料節點之間的同步。


叢集技術相對複雜,至少有3種節點,4台伺服器才能完成。


2,資料庫複寫

寫/master(0)      同步        讀/slave(1)


3,資料庫複寫replication的實現原理

(1)主伺服器凡運行語句,都產生一個二進位日誌 binlog

(2)從伺服器不斷讀取主伺服器的binlog

(3)從伺服器讀取到的binlog,轉換為自身可執行檔relaylog

(4)執行relaylog


4,實現步驟:

(1)首先確保主伺服器開啟二進位日誌功能

這樣,主伺服器一旦有資料變化,立即產生二進位日誌

(2)從伺服器也需要開啟二進位日誌和relay日誌功能

這樣可以從主伺服器讀取binlog,併產生relaylog

(3)在主伺服器建立一個從伺服器的帳號,並授予最高許可權

(4)指定從伺服器對應的主伺服器,開啟從伺服器


具體實施

假如一台虛擬機器xp,和一台linux

(1)在虛擬機器xp下安裝mysql作為從伺服器

(2)在linux下編譯mysql,作為主伺服器

(3)保證xp與linux的3306連接埠互連

(4)配置主伺服器,開啟binlog

    mysql>show master status;

    Empty set (0.00 sec)


    #開啟二進位日誌

    log-bin=mysql-bin

    #給伺服器起一個唯一的id

    serve-id=1

    #指定日誌格式

    binlog-format=mixd/row/statement


重啟mysql

    mysql>show master status;

會多兩個檔案:mysql-bin.000001和mysql-bin.index

已經能夠充當master伺服器


5,配置從伺服器開啟binlog和relaylog

    mysql>show slave status;

    Empty set (0.00 sec)


    [mysql]

    #slave config

    log_bin    =mysql-bin

    server_id    =2

    relay_log    =mysql-relay-bin

    log_slave_updates    =1

    read_only    =1

重啟從伺服器


6,在主伺服器上建立相應的複製帳號

    mysql>grant replication slave,replication client

        ->on *.*

        ->to [email protected]‘192.168.2.%‘ identified by ‘111111‘;

    Query OK, 0 rows affected (0.02 sec)


    mysql>flush privileges;

    Query OK,0 rows affected (0.00 sec)


7,在從伺服器通過語句指定要複製的主伺服器(注意,可以一主多從,不可以一從多主)

    mysql>change master to

        ->master_host=‘192.168.2.99‘,(主伺服器ip)

        ->master_user=‘repl‘,

        ->master_password=‘111111‘,

        ->master_log_file=‘mysql-bin.000001‘,

        ->master_log_pos=0;

    Query OK, 0 rows affected (0.08 sec)


8,啟動從伺服器功能

    ->start slave;


9,測試

如何在用戶端應用的時候,路由語句

一般用兩種方法

(1)直接在PHP的mysql類做判斷,最簡單,不用額外加軟體

比如discuz論壇。

代碼:

//下面這個mysql類,不僅僅是一個mysql類,還充當一個sql語句的路由功能。

class mysql{

    $dbm=主伺服器;

    $dbs1=從伺服器1;

    $dbs2=從伺服器2;


    public function query(){

        在query裡面進行語句判斷

        分別串連不同的mysql伺服器

    }

}


new mysql


mysql->query();


(2)用叢集中介軟體

比如官方的mysql_proxy,還有國產的中介軟體amoeba

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.