一、雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫中的數據一致。 這樣做有如下幾點好處:
網站設計制作過程拒絕使用模板建站;使用PHP+MYSQL原生開發可交付網站源代碼;符合網站優化排名的后臺管理系統;網站制作、成都做網站收費合理;免費進行網站備案等企業網站建設一條龍服務.我們是一家持續穩定運營了十多年的創新互聯建站網站建設公司。1. 可以做災備,其中一個壞了可以切換到另一個。
2. 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站吞吐量。 對于異地熱備,尤其適合災備。
二、mysql 主從備份工作原理
簡單的說就是把 一個服務器上執行過的sql語句在別的服務器上也重復執行一遍, 這樣只要兩個數據庫的初態是一樣的,那么它們就能一直同步。
MYSQL主從同步是在MySQL主從復制(Master-Slave Replication
)基礎上實現的,通過設置在Master
上的binlog
,使其處于打開狀態;Slave
通過一個I/O
線程從Master
上讀取binlog
,然后傳輸到Slave
的中繼日志中,然后使用SQL
線程讀取中繼日志,并應用到自身數據庫中,從而實現主從數據同步功能。
有兩個服務器,演示了從一個主服務器(master)把數據同步到從服務器(slave)的過程。
對于一個mysql服務器,一般有兩個線程來負責復制和被復制。當開啟復制這個開關之后(start slave)
1. 作為主服務器Master,會把自己的每一次改動都記錄到 二進制日志 Binarylog 中。 (從服務器會負責來讀取這個log,然后在自己那里再執行一遍。)
2. 作為從服務器Slave,會用master上的賬號登陸到master上,去讀取master的Binarylog, 然后寫入到自己的中繼日志Relaylog,然后自己的sql線程會負責讀取這個中繼日志,并執行一遍。到這里主服務器上的更改就同步到從服務器上了。
在mysql上可以查看當前服務器的主,從狀態。 其實就是當前服務器的 Binary(作為主服務器角色)狀態和位置。以及其RelayLog(作為從服務器)的復制進度。
三、復制的過程
該過程的第一部分就是master記錄二進制日志。在每個事務更新數據完成之前,master在二日志記錄這些改變。MySQL將事務串行的 寫入二進制日志,即使事務中的語句都是交叉執行的。在事件寫入二進制日志完成后,master通知存儲引擎提交事務。 下一步就是slave將master的binary log拷貝到它自己的中繼日志。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然后開始binlog dump process。Binlog dump process從master的二進制日志中讀取事件,如果已經跟上master,它會睡眠并等待master產生新的事件。I/O線程將這些事件寫入中 繼日志。 SQL slave thread(SQL從線程)處理該過程的最后一步。SQL線程從中繼日志讀取事件,并重放其中的事件而更新slave的數據,使其與master中的數 據一致。只要該線程與I/O線程保持一致,中繼日志通常會位于OS的緩存中,所以中繼日志的開銷很小。 此外,在master中也有一個工作線程:和其它MySQL的連接一樣,slave在master中打開一個連接也會使得master開始一個線程。復制 過程有一個很重要的限制——復制在slave上是串行化的,也就是說master上的并行更新操作不能在slave上并行操作。
實驗
實驗環境
server2 master
server3 slave
master上下載包
mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
安裝數據庫
[root@server2~]# yum install -y mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm
[root@server3 ~]# yum install -y *
修改mysql的配置文件
[root@server2 ~]# vim /etc/my.cnf
server-id = n | 給服務器分配一個唯一的ID編號 |
log-bin [= filename] | 把對數據進行修改的所有SQL命令(也就是INSERT、UPDATE和DELETE命令)以二進制格式記入日志(二進制變更日志,binary update log)。這種日志的文件名是filename.n或默認的hostname.n,其中n是一個6位數字的整數(日志文件按順序編號)。 |
開啟服務
修改slave配置文件
server-id = n | 給服務器分配一個唯一的ID編號 |
[root@server3 ~]# vim /etc/my.cnf
開啟服務
查看密碼
安全配置向導
如下方法修改slave密碼
mysql> alter user root@localhost identified by 'LH=redhat123';
master上進行授權
mysql> grant replication slave on *.* to cara@'192.168.122.13' identified by 'LH@redhat123' ; 用戶授權
mysql> flush privileges; 刷新
master授權后,slave可以遠程登錄
master端查看
使 slave 與 master 建立連接,從而同步:
mysql> change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_log_file='mysql-bin.000003',master_log_pos=1706;
slave端 mysql -p 登錄
查看
[root@server3 mysql]# pwd
/var/lib/mysql
[root@server3 mysql]# cat master.info
[root@server3 mysql]# cat server3-relay-bin.index
mysql> show slave status\G; 查看slave狀態
mysql> start slave; 開啟slave
創建庫westos,創建表usertb
在表中插入數據
更改密碼
刪除表中數據
[root@server2 mysql]# mysqlbinlog mysql-bin.000003 可查看master所做的操作
在slave上也可查看master上數據
GTID(Global Transaction ID)是對于一個已提交事務的編號,并且是一個全局唯一的編號。GTID實際上是由UUID+TID組成的。其中UUID是一個MySQL實例的唯一標 識,保存在mysql數據目錄下的auto.cnf文件里。TID代表了該實例上已經提交的事務數量,并且隨著事務提交單調遞增。下面是一個GTID的具 體形式:3E11FA47-71CA-11E1-9E33-C80AA9429562:23。
根據GTID可以知道事務最初是在哪個實例上提交的
GTID的存在方便了Replication的Failover
更簡單的實現failover,不用以前那樣在需要找log_file和log_Pos。
更簡單的搭建主從復制。
比傳統復制更加安全。
GTID是連續沒有空洞的,因此主從庫出現數據沖突時,可以用添加空事物的方式進行跳過。
master更新數據時,會在事務前產生GTID,一同記錄到binlog日志中。
slave端的i/o線程將變更的binlog,寫入到本地的relay log中。
sql線程從relay log中獲取GTID,然后對比slave端的binlog是否有記錄。
如果有記錄,說明該GTID的事務已經執行,slave會忽略。
如果沒有記錄,slave就會從relay log中執行該GTID的事務,并記錄到binlog。
在解析過程中會判斷是否有主鍵,如果沒有就用二級索引,如果沒有就用全部掃描。
先關掉slave
修改配置文件/etc/my.cof
master
slave
重啟服務
更錄數據庫,查看
master
slave
change master to master_host='192.168.122.12',master_user='cara',master_password='LH=redhat123',master_auto_position=1;
--------------------------------------------------------------------master端--------------------------------------------------------------------
--------------------------------------------------------------------slave端--------------------------------------------------------------------
另外有需要云服務器可以了解下創新互聯cdcxhl.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業上云的綜合解決方案,具有“安全穩定、簡單易用、服務可用性高、性價比高”等特點與優勢,專為企業上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。
文章名稱:企業-MySQL主從備份-創新互聯
標題路徑:http://vcdvsql.cn/article44/isjee.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、商城網站、小程序開發、網站營銷、營銷型網站建設、微信公眾號
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯