1. 程式人生 > 其它 >mysql主從同步(5.7)

mysql主從同步(5.7)

一、環境準備

1.1 使用docker容器

準備兩個mysql的docker容器,並將對應的配置檔案對映到主機目錄中(或者不做對映,直接進入容器進行修改)。

1.2 使用實體機或虛擬機器

直接準備兩臺虛擬機器或者實體機,安裝上mysql資料庫

二、主從同步

2.1 配置主伺服器

2.1.1 修改主伺服器mysql配置檔案(my.cnf), 新增一下內容

[mysqld]
## 同一區域網中要注意唯一
server-id=1
## 開啟二進位制日誌檔案功能,可以自定義名稱(關鍵)
log-bin=mysql-bin

2.1.2 重啟mysql

2.1.2.1 docker容器

  • 進入docker容器
    docker exec -it mysql /bin/bash
  • 執行命令
    service mysql restart
  • 退出容器
  • 重啟容器
    docker restart mysql

2.1.2.2 實體機或者虛擬機器安裝

service restart mysqld

2.1.3 檢視 skip_networking 狀態

確保在主伺服器上的 skip_networking 選項處於 OFF 關閉狀態,這是預設值。
如果是啟用的,則從資料庫服務與主資料庫通訊,並且複製失敗。

    ## 登入
    mysql:mysql -u root -p "密碼"
    ## 檢視狀態
    show variables like '%skip_networking%';

2.1.4 建立用於複製的使用者

  CREATE USER 'repl'@'%' IDENTIFIED BY 'password';
  GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

2.2 配置從伺服器

2.2.1修改從伺服器mysql配置檔案(my.cnf),新增一下內容

  [mysqld]
  server-id=2

2.2.2 重啟mysql(和上面一致)

2.2.3 配置連線主資料庫的相關資訊

在從資料庫伺服器配置連線到主資料伺服器的相關資訊

    ## 登入到從資料庫
    mysql -u root -p "密碼"
    ## 執行
    ## xxx.xxx.xxx.xxx 主資料庫ip地址,分為兩種情況
    ## 如果是同一臺伺服器上的兩個docker容器,則使用 docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名稱/容器ID;
    mysql > **CHANGE MASTER TO MASTER_HOST='XXX.XXX.XXX.XXX',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='password';**
    ## 啟動從伺服器資料庫同步執行緒
    mysql > start slave;

2.2.4 檢視同步狀態

  show slave status \G; 

2.3 測試

在主伺服器資料庫,建立一個數據庫,發現從伺服器資料庫中同步新建的相同的資料庫,就成功。

2.4 其他

如果還需要配置多餘的從伺服器資料庫,可以遵循上面的配置,新增一個配置就行。新建的從伺服器資料庫,會自動儲存主伺服器資料庫之前的資料。