1. 程式人生 > >mysql5.7.25主從同步圖解(主:CentOS7.5,從win10)

mysql5.7.25主從同步圖解(主:CentOS7.5,從win10)

abc 通用 必須 code water windows 連接數 信息 centos7

環境說明:
  主服務器:CentOS7.5
  從服務器:Windows10(本地測試機)

1. 配置master(主服務器,CentOS7.5)

1.1 首先查看CentOS上面的MySQL是否啟動

systemctl status mysqld

技術分享圖片

1.2 修改MySQL配置文件

vi /etc/my.cnf

添加以下內容:

#服務器唯一id,默認是1(主從都必須不一樣)
server-id=1000
#啟動二進制日誌名稱為mysql-bin
log-bin=mysql-bin
#binlog-do-db與binlog-ignore-db互斥,設置其中一個即可
#binlog-do-db=需要同步的數據庫名(多個數據庫重復設置即可)
binlog-do-db=test01
#binlog-ignore-db=不需要同步的數據庫01(多個數據庫重復設置即可)
#binlog-ignore-db=不需要同步的數據庫02(多個數據庫重復設置即可)
#動清理30天之前的log文件(可自由指定時間)
expire_logs_days=30

技術分享圖片

1.3 重新啟動MySQL

systemctl restart mysqld

1.4 創建備份賬號與測試log_bin是否成功開啟

1.4.1 登錄主數據庫
mysql -uroot -p

技術分享圖片

1.4.1 創建有復制權限的帳號

主機名可以是"%"、"192.168.0.%"、或者"192.168.1.106"這些格式,“%”為任意IP

mysql> grant replication slave on *.* to ‘用戶名‘@‘主機‘ identified by ‘密碼‘;

如果出現提示權限不足的情況,請按照以下方式操作

技術分享圖片

修改MySQL密碼規則

// 修改密碼策略方式為不限制(重啟後恢復為默認規則)
mysql> set global validate_password_policy=0;
// 修改密碼長度為最少6位(重啟後恢復為默認規則)
mysql> set global validate_password_length=6;

技術分享圖片

重新設置密碼(創建成功)

技術分享圖片

1.4.2 #查看主庫的狀態
mysql> show master status;

技術分享圖片

File是二進制日誌文件名,Position 是日誌開始的位置。後面從庫會用到

1.4.3 #查看big-log日誌是否開啟成功
mysql> show variables like ‘%log_bin%‘;

技術分享圖片

可以看到從 "/etc/my.cnf" 文件中添加的 log-bin=mysql-bin 日誌已經啟動
此時主庫停止操作(為了保持主從數據庫數據一致),等待從庫連接後, 方可進行其他操作

2. 配置slaver(從服務器,Windows10)

2.1 關閉MySQL服務

使用管理員權限打開CMD,執行以下命令

// 關閉MySQL服務
net stop mysql57_01

技術分享圖片

2.2 修改MySQL配置文件

進入到MySQL的安裝目錄,編輯 my.ini 文件

技術分享圖片

在[mysqld]下添加以下內容(除了server_id必填,其他選填):

#從庫配置
##服務器唯一id,默認是1(主從都必須不一樣)
server_id=1001
##從機保存同步中繼日誌的位置
relay_log=slave-relay-bin
##當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,
##則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性
relay_log_recovery=1
##只讀模式(普通用戶)
read_only=1
##只讀模式(超級管理員)
super_read_only=1

技術分享圖片

完整my.ini 文件內容如下:

[mysqld]
# 設置3307端口
port = 3307
# 設置mysql的安裝目錄
basedir=D:/Program Files/mysql-5.7.25-winx64
# 設置mysql數據庫的數據的存放目錄
datadir=D:/Program Files/mysql-5.7.25-winx64/data
# 允許最大連接數
max_connections=200
# 服務端使用的字符集默認utf8
character-set-server=utf8
# 創建新表時使用的默認存儲引擎
default-storage-engine=INNODB
# 設置sql語法模式
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

#從庫配置
##服務器唯一id,默認是1(主從都必須不一樣)
server_id=1001
##從機保存同步中繼日誌的位置
relay_log=slave-relay-bin
##當slave從庫宕機後,假如relay-log損壞了,導致一部分中繼日誌沒有處理,
##則自動放棄所有未執行的relay-log,並且重新從master上獲取日誌,這樣就保證了relay-log的完整性
relay_log_recovery=1
##只讀模式(普通用戶)
read_only=1
##只讀模式(超級管理員)
super_read_only=1

##啟用gtid類型,否則就是普通的復制架構(需要和主服務器配合使用,本例未完善)
#gtid_mode=on
##強制gtid的一致性
#enforce_gtid_consistency=1
##當mysql啟動或重啟時,mysql在搜尋gtid時是如何叠代使用binlog文件的.
##這個選項設置為真,會提升mysql執行恢復的性能.因為這樣mysql-server啟動和binlog日誌清理更快
#binlog_gtid_simple_recovery = 1

[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8

2.3 啟動MySQL服務

使用管理員權限打開CMD,執行以下命令

// 啟動MySQL服務
net start mysql57_01

技術分享圖片

2.4 建立連接

2.4.1 登錄mysql,關閉主從同步
// 登錄mysql
mysql -u root -p -P3307
// 閉主從同步
mysql> stop slave;

技術分享圖片

2.4.2 關聯主庫和從庫(操作之時主庫停止操作)
change master to 
    master_host=‘主庫IP地址‘,
    master_port=主庫端口,
    master_user=‘主庫用戶名‘,
    master_password=‘主庫用戶密碼‘,
    master_log_file=‘要同步的文件名稱‘,
    master_log_pos=要開始同步的位置;

技術分享圖片

註意:
  "master_log_file"和主庫狀態中的【File】內容一致
  "master_log_pos"要主庫狀態中的【Position】內容一致
  具體請參照【1.4.2 #查看主庫的狀態】章節
  如果關聯發生錯誤,請檢查錯誤後重置slave,然後重新執行即可

// 關閉主從同步
mysql> stop slave;
// 重置主從同步信息
mysql> reset slave;

技術分享圖片

2.4.3 開啟主從同步
mysql> start slave;

技術分享圖片

2.4.4 查看從服務器狀態
mysql> show slave status \G;

技術分享圖片
技術分享圖片

3. 測試

3.1 主庫原始信息

技術分享圖片

test庫(不同步)的數據信息

技術分享圖片

test01庫(同步)的數據信息

技術分享圖片

3.2 從庫原始信息

技術分享圖片

test庫(不同步)的數據信息

技術分享圖片

test01庫(同步)的數據信息

技術分享圖片

3.3 主庫修改信息

test庫(不同步)新增一條信息

技術分享圖片

test01庫(同步)新增一條信息

技術分享圖片

3.4 從庫同步的信息

test庫(不同步)的數據信息

技術分享圖片

test01庫(同步)的數據信息

技術分享圖片

mysql5.7.25主從同步圖解(主:CentOS7.5,從win10)