一、介紹
簡稱AB復制,在A主機上做create、update、insert、drop、delete等資料庫、表、記錄的增、刪、改操作,B主機上會自動做資料庫、表、記錄的同步更新,
主從復制,是用來建立一個和主資料庫完全一樣的資料庫環境,稱為從資料庫,主資料庫一般是準實時的業務資料庫 事務處理庫,從庫做查詢庫
二、A作業原理(即作業程序)
a. 在主庫上把資料更改記錄到二進制日志(Binary Log)中,
b. 備庫將主庫上的日志復制到自己的中繼日志(Relay Log)中,
c. 備庫讀取中繼日志中的事件,將其重放到備庫資料庫之上,
三、AB復制的一主一從模式作業程序
A主機: create database db1 ----> 會將此命令自動寫入本機的二進制日志檔案中
B主機:
I/O執行緒: 監測并讀A主機上的二進制日志檔案新增的內容,且將新內容寫入到B主機自己的中繼日志檔案中
SQL執行緒 : 讀取B主機上中繼日志檔案中心的SQL陳述句,并且自動執行這些SQL陳述句,最終在B主機上創建了db1這個庫,
四、主從復制的作用
一是確保資料安全;做資料的熱備,作為后備資料庫,主資料庫服務器故障后,可切換到從資料庫繼續作業,避免資料的丟失,
二是提升I/O性能;隨著日常生產中業務量越來越大,I/O訪問頻率越來越高,單機無法滿足,此時做多庫的存盤,有效降低磁盤I/O訪問的頻率,提高了單個設備的I/O性能,
三是讀寫分離,使資料庫能支持更大的并發;在報表中尤其重要,由于部分報表sql陳述句非常的慢,導致鎖表,影響前臺服務,如果前臺使用master,報表使用slave,那么報表sql將不會造成前臺鎖,保證了前臺速度
實驗準備(本實驗都在VMware中完成)
兩臺主機,分為安裝MySQL,一臺作為主庫,一臺作為從庫
1、主庫 IP:192.168.112.130
2、從庫 IP:192.168.112.140
3、一個寫好的test.sql表
1、主庫引數配置
在C盤下打開這個目錄(注:programData為隱藏檔案!!!)
打開 my.ini 組態檔
C:\ProgramData\MySQL\MySQL Server 5.7
[mysqld]
# Binary Logging.
# log-bin ---把這一行的注釋取消,并改為以下
log-bin=binlog
# server ID
Server-id=1
Binlog_format=row ---添加這一行
打開命令提示符(cmd)
net stop mysql57 ---停止mysql
net start mysql57 ---啟動mysql
2、配置從庫引數
在C盤下打開這個目錄(注:programData為隱藏檔案!!!)
打開 my.ini 組態檔
C:\ProgramData\MySQL\MySQL Server 5.7
[mysqld]
# Binary Logging
# log-bin
relay-log = relay-bin ---添加這個
# server ID
server-id = 2 ---改一下ID
打開Data檔案,里面有一個 auto.cnf
把UUID的最后一個字母改成其他的,因為我們這個兩個主機是復制出來的,所以會出現UUID相同的狀況
[auto]server-uuid=bb8a3677-f728-11ea-913a-000c29035395 ---末尾最后一個數字隨便改成什么都可以
打開命令提示符運行以下命令
net stop mysql57 停止
net start mysql57 啟動
3、回到主庫操作
把資料表test.sql檔案復制到C盤下面
建立一個資料庫名叫 test(以下命令在資料庫中進行)
reate database test default character set utf8;
然后在命令提示符(cmd)上把我們的資料表檔案復制到新建立的 test庫中
Mysql -uroot -pXXGC.lab123 test < C:\test.sql
主庫創建同步賬號(資料庫中進行)
create user 'edc'@'%' identified by '123456';
grant replication slave on *.* to 'edc'@'%';
查看主庫binlog檔案位置
show master logs;
展示日志檔案
show binlog events in ‘binlog.000001’
重繪日志檔案
Flush logs;
再運行
show master logs
可以看到已經多了一個000002的日志檔案
4、回到從庫操作
把資料表test.sql檔案復制到C盤下面
建立一個資料庫名叫 test(以下命令在資料庫中進行)
reate database test default character set utf8;
然后在命令提示符(cmd)上把我們的資料表檔案復制到新建立的 test庫中
Mysql -uroot -pXXGC.lab123 test < C:\test.sql
在新建的test資料庫里執行此操作
CHANGE MASTER TO MASTER_HOST='192.168.112.130',
MASTER_PORT=3306,
MASTER_USER='edc',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='binlog.000002',
MASTER_LOG_POS=154;
開啟主從復制 并檢查狀態
Start SLAVE;
Show SLAVE status;
這個時候就可以在主庫里面寫資料,然后可以看到從庫就已經同步了;
此檔案寫于2020/12/18
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/237132.html
標籤:其他
上一篇:postgresql洗掉用戶提示ERROR: role postgres1 cannot be dropped because some objects depend on it
下一篇:廣青mysql實訓1
