mysql安裝點擊此處mysql
MySQL主從介紹sql
MySQL主從又叫作Replication、AB複製。簡單講就是A和B兩臺機器作主從後,在A上寫數據,另一臺B也會跟着寫數據,二者數據實時同步。
MySQL主從是基於binlog的,主上須開啓binlog才能進行主從。數據庫
指定數據庫同步操做:
環境說明:需求是建立主從複製環境,要求master端只同步主庫中的test庫到 slave端vim
master端IP:10.10.10.1 slave端IP:10.10.10.2centos
主從複製條件:服務器
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.解鎖,開放用戶寫入功能ssh
操做過程:
主庫my.cnf配置文件件參數:ide
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語句落地。
應用環境
備份重要數據分擔主庫數據讀取壓力