mySQL主從復制實戰


     隨着訪問量的不斷增加,單台MySQL數據庫服務器壓力不斷增加,需要對MYSQL進行優化和架構改造,MYQSL優化如果不能明顯改善壓力情況,可以使用高可用、主從復制、讀寫分離來、拆分庫、拆分表來進行優化。

       MYSQL主從復制集群在中小企業、大型企業中被廣泛使用,MYSQL主從復制的目的是實現數據庫冗余備份,將Master數據庫數據定時同步至Slave庫中,一旦Master數據庫宕機,可以將WEB應用數據庫配置快速切換至Slave數據庫,確保WEB應用較高的可用率,如圖11-12所示,為MYSQL主從復制結構圖:

                      

     Mysql主從復制集群至少需要2台數據庫服務器,其中一台為Master庫,另外一台為Slave庫,MYSQL主從數據同步是一個異步復制的過程,要實現復制首先需要在master上開啟bin-log日志功能,bin-log日志用於記錄在Master庫中執行的增、刪、修改、更新操作的sql語句,整個過程需要開啟3個線程,分別是Master開啟IO線程,Slave開啟IO線程和SQL線程,具體主從同步原理詳解如下:

1)Slave上執行slave start,Slave IO線程會通過在Master創建的授權用戶連接上至Master,並請求master從指定的文件和位置之后發送bin-log日志內容;

2)Master接收到來自slave IO線程的請求后,master IO線程根據slave發送的指定bin-log日志position點之后的內容,然后返回給slave的IO線程。

3)返回的信息中除了bin-log日志內容外,還有master最新的binlog文件名以及在binlog中的下一個指定更新position點;

4)Slave IO線程接收到信息后,將接收到的日志內容依次添加到Slave端的relay-log文件的最末端,並將讀取到的Master端的 bin-log的文件名和position點記錄到master.info文件中,以便在下一次讀取的時候能告知master從響應的bin-log文件名及最后一個position點開始發起請求;

5)Slave Sql線程檢測到relay-log中內容有更新,會立刻解析relay-log的內容成在Master真實執行時候的那些可執行的SQL語句,將解析的SQL語句並在Slave里執行,執行成功后,Master庫與Slave庫保持數據一致。

1、系統環境准備

    Master:10.6.97.133

    Slave:10.6.97.134

2、Master安裝及配置 

      Master端使用源碼安裝MySQL-5-5版本軟件后,在/etc/my.cnf 配置文件[mysqld]段中加入如下代碼,然后重啟MYSQL服務即可。如果在安裝時cp my-large.cnf  /etc/my.cnf,則無需添加如下代碼:

server-id = 1
log-bin = mysql-bin

 Master數據庫服務器命令行中 創建tongbu用戶及密碼並設置權限,執行如下命令,查看bin-log文件及position點:

grant  replication  slave  on *.* to  'tongbu'@'%'  identified by  '123456';
show  master  status;

            

3、Slave安裝及配置

        Slave端使用源碼安裝MySQL-5-5版本軟件后,在/etc/my.cnf 配置文件[mysqld]段中加入如下代碼,然后重啟MYSQL服務即可。如果在安裝時cp my-large.cnf  /etc/my.cnf,則需修改server-id,MASTER與Slave端server-id不能一樣,Slave端也無需開啟bin-log功能: 

server-id = 2

Slave指定Master IP、用戶名、密碼、bin-log文件名(mysql-bin.000028)及position(257):

change master to master_host='10.6.191.183',master_user='tongbu',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=326;

在slave啟動slave start,並執行show slave status\G查看Mysql主從狀態:

slave  start;
mysql5.7版本為start slave
show  slave  status\G;

查看Slave端IO線程、SQL線程狀態均為YES,代表Slave已正常連接Master實現同步:

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com