17.1-17.5
MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步的
MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。
主從過程大致有3個步驟
1)主將更改操作記錄到binlog裏
2)從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog裏
3)從根據relaylog裏面的sql語句按順序執行
主上有一個log dump線程,用來和從的I/O線程傳遞binlog
從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另外一個SQL線程用來把relaylog裏面的sql語句落地
MySQL主從原理圖
截圖
原理:從會把主的binlog搞到從上,從會根據binlog生成自己的一份中繼日誌,然後根據中繼日誌去執行響應的更改,最終達到數據同步一致。
主從的工作場景:
數據備份-->目的是防止主機器發生意外導致無法正常使用,從而將在主上備份到從上的數據遷移出來,從而使其繼續服務運作。
數據備份且在從上讀取數據-->從庫作為讀庫,減輕主庫讀的壓力。
17.2 準備工作
準備2臺Linux服務器,分別作為主庫,從庫。
centos7-01主庫,centos7-02從庫
截圖
目的是讓2臺機器都正常啟動mysql,方便後面做實驗
17.3 主從配置 - 主上操作
1 修改my.cnf,增加server-id=128和log_bin=aminglinux1
[root@centos7-01 src]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
server-id=128
log_bin=aminglinux1
解釋:
sever-id為自定義
log_bin名稱不能有錯誤,它是binlog的前綴
2 重啟mysql
[root@centos7-01 src]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
2.1 重啟後查看mysql生成的文件
[root@centos7-01 src]# cd /data/mysql/
[root@centos7-01 mysql]# ls -lt
總用量 110648
-rw-rw---- 1 mysql mysql 50331648 5月 16 16:04 ib_logfile0
-rw-rw---- 1 mysql mysql 12582912 5月 16 16:04 ibdata1
-rw-rw---- 1 mysql mysql 30114 5月 16 16:04 centos7-01.err
-rw-rw---- 1 mysql mysql 5 5月 16 16:04 centos7-01.pid
-rw-rw---- 1 mysql mysql 21 5月 16 16:04 aminglinux1.index
-rw-rw---- 1 mysql mysql 120 5月 16 16:04 aminglinux1.000001
-rw-rw---- 1 mysql mysql 56 5月 4 17:22 auto.cnf
drwx------ 2 mysql mysql 4096 5月 4 17:10 mysql
drwx------ 2 mysql mysql 4096 5月 4 17:10 performance_schema
-rw-rw---- 1 mysql mysql 50331648 5月 4 17:10 ib_logfile1
drwx------ 2 mysql mysql 6 5月 4 17:10 test
其中前綴aminglinux1是binlog文件
aminglinux1.index 索引文件
aminglinux1.000001 二進制文件,這個隨後還會產生002,003....如此類推
沒有這類文件,主從是沒辦法完成的。
17.1-17.5