MySQL主從複製(Master-Slave)實踐

下圖就描述了一個多個數據庫間主從複製與讀寫分離的模型(來源網絡):mysql

用途及條件 sql

  mysql主從複製用途
  • 實時災備,用於故障切換
  • 讀寫分離,提供查詢服務
  • 備份,避免影響業務
  主從部署必要條件:
  • 主庫開啓binlog日誌(設置log-bin參數)
  • 主從server-id不一樣
  • 從庫服務器能連通主庫

原理數據庫

 mysql主從複製原理服務器

 從庫生成兩個線程,一個I/O線程,一個SQL線程;網絡

  i/o線程去請求主庫 的binlog,並將獲得的binlog日誌寫到relay log(中繼日誌) 文件中;
  主庫會生成一個 log dump 線程,用來給從庫 i/o線程傳binlog;
 SQL 線程,會讀取relay log文件中的日誌,並解析成具體操做,來實現主從的操做一致,而最終數據一致;
 
實現MySQL主從複製須要進行的配置:
 實現步驟:
  1.首先修改mysql的配置文件,使其支持二進制日誌功能。
    打開主服務器的mysql配置文件:my.conf
    代碼:# vi /etc/my.cnf
    加入以下三行代碼:

  參數解釋:spa

     log-bin=mysql-bin  //將mysql二進制日誌取名爲mysql-bin線程

       binlog_format=mixed //二進制日誌的格式,有三種:statement/row/mixed,具體分別很少作解釋,這裏使用mixed3d

       server-id=101 //爲服務器設置一個獨一無二的id便於區分,這裏使用ip地址的最後一位充當server-id rest

  配置完成,:wq 保存,重啓mysql日誌

  重啓mysql命令:# service mysqld restart

  一樣的,進入從服務器,配置從服務器的my.cnf,重複步驟1便可,

  惟一的區別是,server-id要改爲從服務器的ip尾位,即server-id=105;其餘兩項是同樣的,保存,並重啓mySQL;

注:mysql的配置文件路徑查詢方式:

  一、Windows下MySQL的配置文件是my.ini,通常會在安裝目錄的根目錄。

  二、Linux下MySQL的配置文件是my.cnf,通常會放在/etc/my.cnf,/etc/mysql/my.cnf。若是找不到,能夠用find命令查找。

  三、Linux用rpm包安裝的MySQL是不會安裝/etc/my.cnf文件的

查詢配置文件路徑方式:

  

 2.在主服務器上爲從服務器分配一個帳號,就像一把鑰匙,從服務器拿着這個鑰匙,才能到主服務器上來共享主服務器的日誌文件。

  進入主服務器的mysql界面,

   命令: # mysql -u root -p 111111     //我這裏mysql帳號是root,密碼是111111

   在mysql操做界面下,輸入下面一行命令:

   GRANT replication slave ON *.* TO 'slave'@'%' IDENTIFIED BY '111111'; 

 3.查看主服務器BIN日誌的信息(執行完以後記錄下這兩值,而後在配置完從服務器以前不要對主服務器進行任何操做,由於每次操做數據庫時這兩值會發生改變).

 

 4.設置從服務器

   進入從服務器mysql

  命令: # mysql -u root -p111111

關閉slave(若是你之前配置過主從的話,必定要先關閉)

命令:stop slave;

 

開始配置:

  輸入下面代碼便可:

 

參數解釋:MASTER_HOST  :  設置要鏈接的主服務器的ip地址

       MASTER_USER  :  設置要鏈接的主服務器的用戶名

       MASTER_PASSWORD  :  設置要鏈接的主服務器的密碼

       MASTER_LOG_FILE  :  設置要鏈接的主服務器的bin日誌的日誌名稱,即第3步獲得的信息

       MASTER_LOG_POS  :  設置要鏈接的主服務器的bin日誌的記錄位置,即第3步獲得的信息,(這裏注意,最後一項不須要加引號。不然配置失敗)

先在從服務器配置完成,啓動從服務器:

  命令: start slave;

5.查看是否配置成功:

  命令: show slave status;

 

上面兩項均爲yes,說明配置成功

 

 master開啓二進制日誌後默認記錄全部庫全部表的操做,能夠經過配置來指定只記錄指定的數據庫甚至指定的表的操做,具體在mysql配置文件的[mysqld]可添加修改以下選項: 

# 不一樣步哪些數據庫 binlog-ignore-db = mysql binlog-ignore-db = test binlog-ignore-db = information_schema # 只同步哪些數據庫,除此以外,其餘不一樣步 binlog-do-db = game
相關文章
相關標籤/搜索