MySQL/MariaDB主從又叫作Replication、AB複製。簡單講就是A和B兩臺機器作主從後,在A上寫數據,另一臺B也會跟着寫數據,二者數據實時同步的,MySQL主從基於binlog,主上須開啓binlog才能進行主從。html
主從過程大體有3個步驟mysql
1)主將更改操做記錄到binlog裏 2)從將主的binlog事件(sql語句)同步到從本機上並記錄在relaylog裏 3)從根據relaylog裏面的sql語句按順序執行
主從有3個線程:linux
主上有一個log dump線程,用來和從的I/O線程傳遞binlog 從上有兩個線程,其中I/O線程用來同步主的binlog並生成relaylog,另一個SQL線程用來把relaylog裏面的sql語句落地
mysql主從使用場景:web
1)數據備份,主機器宕機,從機器還能隨時對web提供服務 2)讀寫分離,做爲一個從庫,讀的庫,減輕主庫的壓力,數據備份且能夠分擔主機器被調用數據時的壓力,寫的操做只能在主庫,不能在從庫,若是從庫寫數據就會致使主從不一樣步。
補充幾篇文章,但願你們有時間看看,面試的時候也許會被問到面試
https://blog.csdn.net/xiaoyi23000/article/details/80521423 https://www.cnblogs.com/abobo/p/4242417.html http://blog.itpub.net/15498/viewspace-2125085/
兩臺機器sql
wangzb01 主 wangzb02 從
兩臺機器都安裝 MariaDB數據庫
wangzb01上開啓binlog, 定義server-id, 定義log-bin 重啓服務 受權主從用戶 grant replication slave on *.* to 'repl'@'192.168.153.134' identified by 'repl_passwd';
wangzb02上定義server-id 增長 replicate_wild_do_table 或者 replicate_wild_ignore_table
備份 mariabackup --backup --user=root --password=aminglinux --target-dir /data/190310ide
拷貝測試
rsync -a /data/190327/ 192.168.153.134:/data/190327/
在從上恢復spa
中止數據庫 清空datadir mariabackup --prepare --target-dir /data/190327/ mariabackup --copy-back --target-dir /data/190327/ 改屬主、屬組 啓動
在從上
stop slave; change master to master_host='192.168.153.133', master_port=3306, master_user='repl', master_password='repl_passwd', master_log_file='xxxxx', master_log_pos=xxx; start slave;
從上:
show slave status\G
主上建立庫、建立表,從上查看