MySQL數據庫之主從同步

一、概述:

MYSQL主從同步架構是目前使用最多的數據庫架構之一,主從同步使得數據可以從一個數據庫服務器複製到其他服務器上,在複製數據時,一個服務器充當主服務器(master),其餘的服務器充當從服務器(slave)。

二、拓撲圖說明:

MySQL001.png

如上圖所示,192.168.4.10(主機名爲"10.mysql")作爲MySQL主數據庫,192.168.4.20(主機名爲"20.mysql")作爲MySQL從數據庫,負責從主數據庫同步數據。

三、主從同步配置說明:

1、Master配置

  (1)數據庫授權:

      mysql> grant replication slave on *.* to slaveuser@"192.168.4.12" identified by "123456";

  (2)啓用binlog日誌:

      [root@10 ~]# vim /etc/my.conf
      [mysqld]
      server_id=10        #指定主MySQL數據庫的ID
      log-bin=master10     #啓用binglog日誌,日誌文件保存在MySQL的安裝主目錄(/var/lib/mysql)下,文件名的格式爲"master22.000001"(每個文件最大容量500M,超過500M或者重啓MySQL服務後自動生成下一個日誌文件)

    (3)查看master狀態:

       mysql>show master status;

            +-----------------+----------+--------------+------------------+-------------------+
            | File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
            +-----------------+----------+--------------+------------------+-------------------+
            | master10.000001 |      154 |              |                  |                   |
            +-----------------+----------+--------------+------------------+-------------------+
            1 row in set (0.00 sec)
2、Slave配置:

    (1)配置server_id:

        [root@20 ~]# vim /etc/my.conf
        [mysqld]
        server_id=20        #指定從MySQL數據庫的ID

    (2)配置主數據庫信息(使用本機的root用戶登陸)
       mysql>change master to master_host="192.168.4.10",             
             master_user="slaveuser",
             master_password="123456",
             matser_log_file="master10.000001",
             master_log_pos=154;
    (3)開啓slave狀態
             mysql> start slave;
     (4)檢查slave狀態
             mysql> show slave status\G;

        命令執行結果中下面兩項顯示如下則說明主從同步配置正常
               Slave_IO_Running:Yes
               Slave_SQL_Running:Yes

3、驗證:

    在主數據庫(192.168.4.10)上面進行數據添加刪除等操作,在從數據庫上面(192.168.4.20)及時就能看到。

三、原理說明:

     (1)從數據庫的IO線程讀取主數據庫的binlog日誌,寫入到從數據庫的中繼日誌文件中,從數據庫的SQL線程從本機的中繼日誌中讀取SQL命令在本機執行,完成數據同步;
     (2)如果主從數據庫配置前數據不一致,SQL線程就會報錯;如果在主數據庫創建授權用戶出錯,導致從數據庫無法連接主數據庫,IO線程就會報錯;
     (3)當從數據庫的SQL線程執行中繼日誌裏面的SQL命令失敗的時候,SQL線程會立即宕掉。

      需要注意的是在配置MySQL主從數據庫之前,確保從數據庫的數據不能多於主數據庫的數據。

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