MySQL主從復制(Master-Slave)實踐


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

用途及條件 

  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
    加入如下三行代碼:

  參數解釋:

     log-bin=mysql-bin  //將mysql二進制日志取名為mysql-bin

       binlog_format=mixed //二進制日志的格式,有三種:statement/row/mixed,具體分別不多做解釋,這里使用mixed

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

  配置完成,:wq 保存,重啟mysql

  重啟mysql命令:# service mysqld restart

  同樣的,進入從服務器,配置從服務器的my.cnf,重復步驟1即可,

  唯一的區別是,server-id要改成從服務器的ip尾位,即server-id=105;其他兩項是一樣的,保存,並重啟mySQL;

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

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

  2、Linux下MySQL的配置文件是my.cnf,一般會放在/etc/my.cnf,/etc/mysql/my.cnf。如果找不到,可以用find命令查找。

  3、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

 


免責聲明!

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



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