MySQL高級(八)、主從複製

本文講解如何實現MySQL數據庫的主從複製功能。使用的機器爲Windows上的數據庫作爲主服務器,Linux上的數據庫作爲從服務器,實現一主一從的配置。

基本原理

實現主從複製,主機master和從機slave的工作方式如下圖所示。
在這裏插入圖片描述
MySQL複製過程分成三步:

  1. master將改變記錄到二進制日誌(binary log)。這些記錄過程叫做二進制日誌事件,binary log events;
  2. slave將master的binary log events拷貝到它的中繼日誌(relay log);
  3. slave重做中繼日誌中的事件,將改變應用到自己的數據庫中。 MySQL複製是異步的且串行化的。

複製的基本原則

  1. 每個slave只有一個master(類似Java中的單繼承)
  2. 每個slave只能有一個唯一的服務器ID
  3. 每個master可以有多個salve

複製的最大問題:延時

配置過程

注意,實現一主一從的配置,要求兩者的mysql版本要一致(本人使用的都是mysql5.7.25的版本),並且主從配置信息都在[mysqld]下,且最好都是小寫。

修改主機配置

將主機設置爲本機Windows下的數據庫,其配置文件位於mysql的安裝目錄中的my.ini下。並修改以下的配置信息:

  1. [必須] 主機服務器唯一ID:server-id=1
  2. [必須] 啓用二進制日誌:bin-log=自己本地的路徑/data/mysqlbin
  3. [可選] 啓用錯誤日誌:log-err=自己本地的路徑/data/mysqlerr
  4. [可選] 根目錄:basedir=自己本地的路徑
  5. [可選] 臨時目錄:tmpdir=自己本地的路徑
  6. [可選] 數據目錄:datadir=自己本地的路徑/data/
  7. [可選] read-only=0,設置主機爲可讀可寫
  8. [可選] 設置不要複製的數據庫:binlog-ignore-db=mysql
  9. [可選] 設置需要複製的數據庫:binlog-do-db=主數據庫名字
    在這裏插入圖片描述
    修改好後保存,並重啓mysql服務。

修改從機配置

從機配置文件位於Linux上的/etc/my.cnf文件,修改的配置信息位於[mysqld]標籤下

  1. [必須] 從服務器唯一ID:server-id=2(不能和主機相同)
  2. [可選] 啓用二進制日誌
    在這裏插入圖片描述
    修改好配置文件後,保存,重啓mysql服務。

建立連接並授權

  1. 關閉主機和從機上的防火牆。windows手動關閉,linux通過systemctl stop firewalld關閉。

【主機配置】

  1. 主機給從機授權:
#%可以改爲從機的ip地址,%表示任意ip都可以連
GRANT REPLICATION SLAVE ON *.* TO 'zhangsan'@'%' IDENTIFIED BY '123456';
flush privileges;
  1. 查看master的狀態,並記錄File和Position的值(表示要從哪個文件的哪個位置開始複製)
show master status;

在這裏插入圖片描述

從機配置

  1. 在從機上配置主機(主機IP需要改爲自己的windows的ip,File名字和位置改爲上圖記錄的值)
CHANGE MASTER TO MASTER_HOST='10.1.18.79', #更改ip
MASTER_USER='zhangsan',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='mysqlbin.000001',MASTER_LOG_POS=604; #更改文件名和位置
  1. 啓動主從複製功能
start slave;
  1. 查看是否配置成功
show slave status\G

下面兩個參數必須都是Yes,則說明主從配置成功!
在這裏插入圖片描述

  1. 停止主從複製功能(測試好後再來停止)
stop slave;

測試

在經過上述的配置之後,從機可從主機複製數據。
【主機創建數據】

create database mydb58;
use mydb58;
create table dog(id int not null, name varchar(20));
insert into dog values (1, 'ww1'); #插入1號汪汪

在這裏插入圖片描述
【從機檢查數據】
在這裏插入圖片描述
至此,MySQL主從複製成功配置完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章