1. 程式人生 > >17.1-17.5

17.1-17.5

17.

17.1 MySQL主從介紹


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