Mysql主從複製原理加實戰

 前言:本文將介紹主從複製的作用,原理以及實戰等內容


一,主從複製作用


wKioL1ga3NGB3wsRAAFkC72n7vA957.png


MYSQL主從複製有利於數據庫架構的健壯性,提升訪問速度和易於管理

健壯性:

 當主服務器出現問題,可以立刻切換到從服務器提供服務


1.主從服務器互爲備份

 但是異步同步,有時還是不能數據完全一樣,當主掛了,只能把主的binlog拉到從庫上,讓從庫不丟失數據


2.讀寫分離分擔網站壓力(讀寫分離數據庫結構)

 把更新數據操作交給主服務器,查詢交給從服務器,如果網站以瀏覽爲主的業務,這時多個從服務器的負載均衡就很有效了

中大型公司:通過程序(php,java)

測試環境:代理軟件(mysql-proxy,amoeda)


二,主從複製原理

wKioL1ga3PKxhilgAAFsf1fuhRU812.png

 

1.是異步方式同步,邏輯同步,通過SQL語句執行,主庫通過記錄BINLOG實現對從庫的同步

2.從庫有兩個線程IO和SQL,主庫有一個線程IO

3.從庫IO會向主庫IO要BIN-lOG的文件裏的數據和下一個位置點,放在relay-log中繼日誌下,然後master.info文件會根據relaylog更新自己上面記錄bin-log文件的下一個位置

4.從庫SQL線程會根據relay-log裏的日誌,把數據寫到從庫數據文件裏

三,主從複製實戰之一主多從

1,主庫打開binlog,修改server id,創建連接賬號

vim  /etc/my.cnf
log_bin=mysql-bin
server_id=1

GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%' IDENTIFIED BY '456';
flush  privileges;

2,全備

mysqldump  -uroot   -A   --events  --master-data=2 > /opt/backup.sql

3,從庫關閉binlog,修改id,設置只讀,導入全備數據

vim  /etc/my.cnf
#log_bin=mysql-bin
server_id=2
read-only

mysql  -uroot  < /opt/backup.sql

4,從庫配置連接,根據/opt/backup.sql裏記錄的時刻點,我的是mysql-bin.000006,417

CHANGE  MASTER  TO
MASTER_HOST='11.2.0.75',
MASTER_PORT=3306,
MASTER_USER='rep',
MASTER_PASSWORD='456',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=417;     如果--master-data=1,這兩個不用寫

start slave;  
show  slave  status\G;  看到兩個YES表示成功

四,主從複製實戰之雙主互備

1,我們已經是一主一叢的狀態了,數據同步完整,修改主庫配置文件

auto_increment_increment=2
auto_increment_offset=1
log-slave-updates=true
log-bin=mysql-bin

2,配置從庫配置文件,把read-only去掉

auto_increment_increment=2
auto_increment_offset=2
log-slave-updates=true
log-bin=mysql-bin

3,重啓數據庫

server mysqld restart

4,將原先的主庫當成從庫,做一次同樣的配置,我用的是多實例,所以只改了一下port

CHANGE  MASTER  TO
MASTER_HOST='11.2.0.75',
MASTER_PORT=3307
MASTER_USER='rep',
MASTER_PASSWORD='456',
MASTER_LOG_FILE='mysql-bin.000006',
MASTER_LOG_POS=417;     如果--master-data=1,這兩個不用寫

start slave;  
show  slave  status\G;  看到兩個YES表示成功


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章