mysql的主从复制原理
一個簡單完整的 Mysql 主從復制,讀寫分離的示意圖。
?
1. 首先搭建 Mysql 主從架構,實現 將 mater 數據自動復制到 slave
?
MySQL 復制的工作方式很簡單,一臺服務器作為主機,一臺或多臺服務器作為從機。主機會把數據庫的變化記錄到日志。一旦這些變化被記錄到日志,就會立刻(或者以設定的時間間隔)被送到從機。
?
使用MySQL 復制提供擴展大型網站的能力,這些大型網站的數據庫主要是讀操作(SELECTs)。從機用於復制主機的銷秏是很少的(通常每個從機1%的開銷),在大型網站中每個主機部署30 個從機也是常見的。
?
異步復制與同步復制
?
異步復制:MySQL本身支持單向的、異步的復制。異步復制意味著在把數據從一臺機器拷貝到另一臺機器時有一個延時 – 最重要的是這意味著當應用系統的事務提交已經確認時數據并不能在同一時刻拷貝/應用到從機。通常這個延時是由網絡帶寬、資源可用性和系統負載決定的。然 而,使用正確的組件并且調優,復制能做到接近瞬時完成。
?
同步復制:同步復制可以定義為數據在同一時刻被提交到一臺或多臺機器,通常這是通過眾所周知的“兩階段提交”做到的。雖然這確實給你在多系統中保持一致性,但也由于增加了額外的消息交換而造成性能下降。
?
使用MyISAM或者InnoDB存儲引擎的MySQL本身并不支持同步復制,然而有些技術,例如分布式復制塊設備(簡稱DRBD),可以在下層的 文件系統提供同步復制,允許第二個MySQL服務器在主服務器丟失的情況下接管(使用第二服務器的復本)。要了解更多信息,請參 見:http://www.drbd.org/
?
?
?異步復制方案:
?
1. Mysql 數據庫安裝
?
安裝過程省略: 詳細參見:http://pengranxiang.iteye.com/admin/blogs/1138059
?
服務器 Master :192.168.14.131
Mysql 安裝目錄: /home/mysql/mysql?? (使用源碼安裝,獨立目錄)
?
服務器 Slave??? :192.168.14.132
Mysql 安裝目錄 :/home/mysql/mysql
?
2. 修改配置
?
為了不影響原來的配置文件: /etc/my.cnf
?
創建新的配置文件,
?
cp /etc/my.cnf? /home/mysql/mysql/conf/master.cnf
?
cp /etc/my.cnf? /home/mysql/mysql/conf/slave.cnf
?
修改 master.cnf,? 增加下面的設置 ,
(官方說明:為了使用事務的InnoDB在復制中最大的持久性和一致性,你應該指定innodb_flush_log_at_trx_commit=1,sync_binlog=1選項。)
?
Cnf代碼 ??
?
修改 slave.cnf
?
Cnf代碼 ??
3. 啟動服務
?
Cnf代碼 ??
?
Java代碼 ??
4. 在 Master 上創建一個專門用于復制的賬號 repl_user
5. 啟動主從復制功能
?
需要查看 Master 中的? Master status
?
mysql> show master status;
?
然后再 Slave 中,啟動復制
?
?
?
上面窗口是連接 Master , 下面窗口連接 Slave
?
6. 測試復制
?
在 Master 中插入一條數據, 然后在 Slave 中查詢。 可以驗證。
2 簡單的讀寫分離實現
?
讀寫分離可以直接在 客戶端 實現, 也可以通過 代理服務器 實現。
?
代理服務器一般可以選擇:
?
官方的:mysql proxy? 地址:http://dev.mysql.com/downloads/mysql-proxy/#downloads
?
國產開源項目:amoeba
Amoeba開發者博客: http://amoeba.meidusa.com Amoeba開源項目地址: http://www.sourceforge.net/projects/amoeba
amoeba 中文文檔下載地址:http://amoeba.meidusa.com/amoeba.pdf
?
這里只演示最簡單的方案: JDBC 直接實現 讀寫分離。
?
Java代碼 ?轉載于:https://www.cnblogs.com/try-better-tomorrow/p/4998577.html
總結
以上是生活随笔為你收集整理的mysql的主从复制原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 从linux和ucos的比较中来看进程这
- 下一篇: linux cmake编译源码,linu