MySQL主從複製搭建

mysql安裝點擊此處

MySQL主從介紹

MySQL主從又叫做Replication、AB複製。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟着寫數據,兩者數據實時同步。
MySQL主從是基於binlog的,主上須開啓binlog才能進行主從。

指定數據庫同步操作:
環境說明:需求是創建主從複製環境,要求master端只同步主庫中的test庫到 slave端

master端IP:10.10.10.1 slave端IP:10.10.10.2

主從複製條件:

1.開啓主庫binlog功能
2.開啓主從庫server-id
3.確保主從配置文件my.cnf所有server-id不同
4.主庫建立同步的賬戶rep並且授權replication
5.在主庫鎖表flush tables with read lock; 並查看主庫上binlog文件及位置點
show master status\G;記錄下此binlog文件和位置點。
6.在master端新開mysql窗口導出全備,恢復備份數據到從庫,
7.登錄從庫,CHANGE MASTER TO…..
自動在從庫生成配置文件master.info
打開復制開關start slave;show slave status\G
8.解鎖,開放用戶寫入功能

操作過程:
主庫my.cnf配置文件件參數:

vi /etc/my.cnf

server-id=1111 (和從庫不同即可)
log-bin=mysql-bin (開啓binlog)
binlog-do-db=數據庫名稱 (記錄指定庫的binlog,模式不同,記錄結果不同。)
binlog_format=mixed (設置binlog模式)
expire_logs_days = 7 (保留7天的binlog)

重啓master端mysql

centos 6:
/etc/init.d/mysql restart
centos 7:
systemctl restart mysql

從庫my.cnf配置文件件參數:

vim /etc/my.cnf
server-id=2222 (從庫的ID,和主庫不衝突即可)

重啓slave端mysql

centos 6:
/etc/init.d/mysql restart
centos 7:
systemctl restart mysql

一.master 上操作:

主庫建立同步的賬戶rep並且授權replication;在主庫鎖表flush tables with read lock; 並查看主庫上binlog文件及位置點

show master status\G;記錄下此binlog文件和位置點。
mysql -uroot -p'數據庫密碼' -e "grant replication slave on *.* to rep@'10.10.10.2' identified by 'rep@back123'; flush privileges;flush tables with read lock; show master status;"

備份指定數據庫數據

mysqldump -uroot -p'數據庫密碼' -B 數據庫名稱 --single-transaction --events|gzip >/root/數據庫名稱_$(date +%F).sql.gz (輸出壓縮的sql文件)

mysqldump -uroot -p'數據庫密碼' -B 數據庫名稱 --single-transaction --events >/root/數據庫名稱_$(date +%F).sql (輸出sql文件)

傳輸數據到slave端從庫機器

scp -rp -P ssh服務端口 sql文件名稱 root@從庫IP:/root/

二.slave上操作:

登陸從庫:

gzip -d test.sql.gz; source /root/test.sql; 
stop slave;
reset slave all;

stop slave;
CHANGE MASTER TO
MASTER_HOST='主庫地址',
MASTER_PORT=3306, ------->端口
MASTER_USER='新建數據庫用戶',
MASTER_PASSWORD='新建用戶的密碼',
MASTER_LOG_FILE='日誌文件名稱',
MASTER_LOG_POS=日誌的Position值;

start slave;show slave status\G;

三.最後在master上執行解鎖操作:

unlock tables;

到此處配置完成:

在master上創建測試表測試:

同步單個數據庫可以在主服務器或者從服務器上配置:

主服務器:
binlog-do-db=    僅同步指定的庫
binlog-ignore-db=    忽略指定的庫

從服務器:
replicate_do_db=   同步指定的庫
replicate_ignore_db=   忽略指定的庫
replicate_do_table=   同步指定的表
replicate_ignore_table=   忽略指定的表

replicate_wild_do_table= 如aming.%,支持通配符 
replicate_wild_ignore_table=

主從過程

主將更改操作記錄到binlog中
從將主的binlog事件(SQL語句)同步到本機並記錄在relaylog中
從根據relaylog裏面的SQL語句按順序執行

說明: 該過程有三個線程,主上有一個log dump線程,用來和從的i/o線程傳遞binlog;從上有兩個線程,其中i/o線程用來同步主的binlog並生成relaylog,另外一個SQL線程用來把relaylog裏面的SQL語句落地。

應用環境

備份重要數據
分擔主庫數據讀取壓力

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