mysql數據庫主從搭建

1、最近一直在學習mysql的東西,恰好看到mysql如何搭建主從數據庫,蒐集了不少資料後大體瞭解了mysql主從復置的原理。如下是個人理解:mysql

舉例master爲主數據庫,slave爲從數據庫。sql

  1. slave須要經過自身的IO進程鏈接上master數據庫,並讀取master指定日誌文件的指定位置以後的內容(slave會向master請求,「我要XXX日誌文件XXX位置以後的內容」);
  2. 這時候master接收到來自slave的請求後會找到該日誌文件的制定位置,並複製該位置以後的內容返回給slave;
  3. slave將接收到的日誌內容依次添加到slave端的relay-log文件的最末端,並將讀取到的master端的bin-log的文件名和位置記錄到master-info文件中,以便在下一次讀取的時候可以清楚的告訴master「我須要從哪一個bin-log的什麼位置開始讀取」;
  4. slave的Sql進程檢測到relay-log中新增長了內容後,會立刻解析relay-log的內容成爲在Master端真實執行時候的那些可執行的內容,並在自身執行。  

2、如今咱們開始配置主從數據庫:數據庫

  這裏我準備了兩臺服務器,系統均爲centos7,服務器的系統能夠有差異;數據庫的話建議你們使用統一版本的。這裏個人服務器ip分別是192.168.0.109(master)、192.168.0.133(slave).centos

  • 服務器:centos7
  • 數據庫:Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1
  1. 登陸到master的數據庫,在master的數據庫中創建一個備份賬戶:每一個slave使用標準的MySQL用戶名和密碼鏈接master。進行復制操做的用戶會授予REPLICATION SLAVE權限。用戶名的密碼都會存儲在文本文件master.info中服務器

    命令以下:學習

    mysql > GRANT REPLICATION SLAVE ON *.* 
    TO 'slave'@'192.168.0.133' 
    IDENTIFIED BY '123456';//創建root帳戶,密碼是123456,只容許該帳戶在192.168.0.133這個ip登陸(slave的ip),授予REPLICATION SLAVE權限
    mysql > flush privileges;//使權限當即生效
  2. 配置master,slave數據庫
    配置master
    vi /etc/my.cnf #編輯配置文件,在[mysqld]部分添加下面內容
    
    server-id=1   #設置服務器id,爲1表示主服務器。
    log_bin=mysql-bin  #啓動MySQ二進制日誌系統。
    binlog-do-db=abc  #須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行
    binlog-ignore-db = mysql,information_schema  #忽略寫入binlog的庫
    
    重啓master數據庫
    
    systemctl restart mariadb //我這裏安裝的mysql服務端是mariadb-server

    登陸master數據庫,查看master狀態

    show master status;

    +------------------+----------+--------------+--------------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+--------------------------+
    | mysql-bin.000001 | 2722 | | mysql,information_schema |
    +------------------+----------+--------------+--------------------------+centos7

    配置slave
    vi /etc/my.cnf #編輯配置文件,在[mysqld]部分添加下面內容
    server-id=2   #設置服務器id,爲2表示從服務器,這個server-id不作規定,只要主從不一致就好
    log_bin=mysql-bin  #啓動MySQL二進制日誌系統,若是該從服務器還有從服務器的話,須要開啓,不然不須要
    binlog-do-db=abc  #須要同步的數據庫名,若是有多個數據庫,可重複此參數,每一個數據庫一行
    binlog-ignore-db = mysql,information_schema  #忽略寫入binlog的庫,若是該從服務器還有從服務器的話,須要開啓,不然不須要
    重啓slave數據庫 

    systemctl restart mariadb
    //我這裏安裝的mysql服務端是mariadb-server

    登陸從數據庫,

    change master to master_host='192.168.0.133',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=2722;//
    mysql-bin.000001,2722爲以前master查到的狀態值。

    start slave;//開啓從數據庫
    show slave status; //查看從數據庫的狀態



  3. 在主mysql建立數據庫abc,再從mysql查看已經同步成功!
    create database abc;

    發現從數據庫中也會出現數據庫abc,說明咱們的主從數據庫搭建成功啦~spa

相關文章
相關標籤/搜索