中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

MySQL的復(fù)制功能

什么是復(fù)制功能?

MySQL 的復(fù)制功能是將備份的數(shù)據(jù)移動到其他服務(wù)器的功能,通過簡單的設(shè)定即可使用

成都創(chuàng)新互聯(lián)公司長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為岑溪企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站建設(shè),岑溪網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

主→從(master ->slave)架構(gòu)。

主服務(wù)器上發(fā)生數(shù)據(jù)變更,變更內(nèi)容傳送到從服務(wù)器,從服務(wù)器接受主服務(wù)器的變更內(nèi)容,

將變更內(nèi)容反映到數(shù)據(jù)庫。

復(fù)制功能的優(yōu)點

1. 提高查詢性能

查詢處理負載高的情況下,可以通過增加從服務(wù)器來實現(xiàn)負載均衡,提高性能

2. 實現(xiàn)高可用性

主服務(wù)器發(fā)生故障時,可以將從服務(wù)器升級為主服務(wù)器

3. 實現(xiàn)異地復(fù)制

構(gòu)建異地容災(zāi)系統(tǒng)

4. 用作備份服務(wù)器

在從服務(wù)器上進行備份,可以不影響主服務(wù)器的性能

例如可以實現(xiàn)主服務(wù)器不停機運行,將從服務(wù)器的數(shù)據(jù)庫停止以后進行備份

復(fù)制功能的組成

主服務(wù)器的所有變更點都記錄在二進制日志里面。二進制日志里記錄了與更新相關(guān)的SQL文,執(zhí)行查詢的日期時間等元數(shù)據(jù)也記錄在內(nèi)。事務(wù)提交的同時以二進制的形式進行記錄(sync_binlog=1)。

mysqlbinlog 命令可以查看日志內(nèi)容。指定啟動選項進行輸出二進制日志。

--log-bin[=file_name]

推薦將輸出路徑與數(shù)據(jù)文件路徑放在不同的硬盤上。日志文件的擴展名以連號的形式記錄

例)file_name-bin.001, file_name-bin.002, 等等。當(dāng)前正在使用的日志號碼會記錄在索引文件里面 (file_name.index)

 

主服務(wù)器的所有變更點都記錄在日志里面,在從服務(wù)器啟動復(fù)制功能,將二進制日志的內(nèi)容傳送到從服務(wù)器后執(zhí)行。

 

從服務(wù)器上的文件、線程

文件

中繼日志文件:記錄主服務(wù)器變更點的文件。

二進制日志文件:記錄從服務(wù)器變更點的文件?!?log-slave-updates有效時才會輸出)

master.info :記錄連接主服務(wù)器的必要信息、讀取日志起始位置等信息的文件。 (MySQL 5.6開始可以保存在表內(nèi))

relay-log.info :記錄中繼日志執(zhí)行位置的文件。  (MySQL 5.6開始可以保存在表內(nèi))

線程

I/O 線程:將從主服務(wù)器上接收的二進制日志作為中繼日志保存

SQL 線程:將中繼日志里面的更新內(nèi)容反映到DB里面

復(fù)制的種類

二進制日志的記錄方式不同

STATEMENT :文(SQL文)

ROW :行

MIXED :文和行混合

 

不確定的SQL文——執(zhí)行過程中結(jié)果可能會發(fā)生變化的SQL

UUID() 、UUID_SHORT()

USER()

FOUND_ROWS()

LOAD_FILE()

SYSDATE()

GET_LOCK() 、RELEASE_LOCK()

IS_FREE_LOCK() 、IS_USED_LOCK()

MASTER_POS_WAIT()

SLEEP()

VERSION()

沒有排序的LIMIT句

UDF 、非決定性的存儲過程/函數(shù)

查詢INFORMATION_SCHEMA

READ-COMMITTED/READ-UNCOMMITTED

 

同步方式不同

異步:將變更點異步傳送

半同步:將變更點同步傳送,向DB反映時候為異步

 

異步(默認(rèn))

異步傳送變更點

優(yōu)點:相比半同期方式,主服務(wù)器的更新響應(yīng)迅速

缺點:主服務(wù)器發(fā)生故障時,故障發(fā)生前的部分內(nèi)容可能沒有傳送到從服務(wù)器

適用于負載均衡
(故障發(fā)生前的數(shù)據(jù)需要保護的情況下,需要應(yīng)用程序?qū)?yīng))

半同步(MySQL 5.5開始追加的功能)

變更點同步傳送,異步將數(shù)據(jù)向DB反映

優(yōu)點:主服務(wù)器發(fā)生故障時,故障發(fā)生前的更新數(shù)據(jù)可以確保傳送到從服務(wù)器

缺點:與異步模式相比主服務(wù)器的更新響應(yīng)差

適用于高可用性的運用 (需要保護故障發(fā)生前的更新數(shù)據(jù))

 

是否使用GTID

不使用GTID傳統(tǒng)的復(fù)制模式

使用GTID:MySQL 5.6新追加的模式

多臺服務(wù)器組成的復(fù)制環(huán)境里可以很容易的跟蹤比較事務(wù)

事務(wù)在全局里擁有唯一的識別ID,可以記錄在二進制日志里面

使用時和傳統(tǒng)的方式有變化

復(fù)制開始時自動識別位置

故障切換時,可以自動識別最新的從服務(wù)器

很容易組成多層復(fù)制

 

GTID 的優(yōu)點:

可以自動識別日志文件里的位置,不需手動指定
(主服務(wù)器發(fā)生故障時,無需確認(rèn)日志的位置可以實現(xiàn)故障切換)

GTID 的缺點:

限制因素

只能使用InnoDB

不能使用“CREATE TABLE ... SELECT“

不能在事務(wù)中使用“CREATE TEMPORARY TABLE” 和 "DROP TEMPORARY TABLE"

不支持sql_slave_skip_counter

從服務(wù)器需要輸出二進制日志

無法使用復(fù)制功能的過濾功能,使用過濾功能GTID里面會出現(xiàn)從未使用過的ID

使GTID有效需要全部的服務(wù)器停止后再轉(zhuǎn)成GTID模式。

MySQL 5.7 可以每臺服務(wù)器輪番啟動設(shè)置GTID

 

復(fù)制功能的設(shè)定方法(不使用GTID)

1 .設(shè)定復(fù)制功能的參數(shù)

2 .在主服務(wù)器上建立復(fù)制用的用戶

3 .備份主服務(wù)器數(shù)據(jù),將其恢復(fù)到從服務(wù)器,需要記錄備份時的二進制日志名稱和位置

4 .從服務(wù)器上執(zhí)行 CHANGE MASTER TO

5 .從服務(wù)器上執(zhí)行 START SLAVE

 

主服務(wù)器:設(shè)置下記選項后啟動

server-id

log-bin

datadir *

從服務(wù)器:設(shè)置下記選項后啟動

server-id

datadir *

port *

socket *   (Lunix 系OS)

read_only   ( 推薦設(shè)置)

 

給用戶賦予“REPLICATION SLAVE”權(quán)限

CREATE USER 'repl'@'localhost' IDENTIFIED BY 'repl';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'localhost';

 

將主服務(wù)器的備份數(shù)據(jù)恢復(fù)到從服務(wù)器(不使用GTID)

將冷備份的數(shù)據(jù)恢復(fù)

使用mysqldump進行數(shù)據(jù)備份和恢復(fù)

備份

 $ mysqldump --user=root --password=root --master-data=2 \

 --socket=/usr/local/mysql/data/mysql.sock \

 --hex-blob --default-character-set=utf8 --all-databases \

 --single-transaction > mysql_bkup_dump.sql

※需要記錄備份的日志文件名稱和位置

補充:mysqldump的選項

--master-data=2

將備份時的文件名和位置作為注釋記錄在備份文件里

--hex-blob

將二進制類型(BINARY、VARBINARY、BLOG) 和BIT類型的數(shù)據(jù)以16進制輸出

--default-character-set

設(shè)置mysqldump的默認(rèn)字符

通常情況下與系統(tǒng)變量default-character-set設(shè)置一致

--all-databases

備份全部的數(shù)據(jù)庫

--lock-all-tables

將所有的表加鎖后進行備份

--single-transaction

利用InnoDB支持的事務(wù)處理,對InnoDB的表進行一致性備份

 

注意事項:使用mysqldump備份

為了保證數(shù)據(jù)的完整性,備份中不執(zhí)行DDL(※)

ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE

 

引用手冊里關(guān)于”--single-transaction”的說明

「While a --single-transaction dump is in process, to ensure a valid dump file (correct table contents and binary log coordinates), no other connection should use the following statements: ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.

4 .從服務(wù)器上執(zhí)行 CHANGE MASTER TO

5 .從服務(wù)器上執(zhí)行 START SLAVE  (不使用GTID)

執(zhí)行CHANGE MASTER TO

執(zhí)行START SLAVE

CHANGE MASTER TO MASTER_HOST=‘localhost',

 -> MASTER_USER=‘repl',

 -> MASTER_PASSWORD=‘repl',

 -> MASTER_LOG_FILE='bin.000001',

 -> MASTER_LOG_POS=1790;

 START SLAVE;

 

  復(fù)制功能的設(shè)定方法(使用GTID)

1 .設(shè)定復(fù)制功能的參數(shù)

2 .在主服務(wù)器上建立復(fù)制用戶

3 .將主服務(wù)器的數(shù)據(jù)備份后恢復(fù)到從服務(wù)器,無需使用日志的名稱和位置

4 .從服務(wù)器執(zhí)行 CHANGE MASTER TO

5 .從服務(wù)器執(zhí)行 START SLAVE

 

1 .設(shè)置復(fù)制功能的參數(shù)(使用GTID)

主服務(wù)器:設(shè)置以下選項后啟動

server-id

log-bin

datadir *

gtid-mode=on

enforce-gtid-consistency=on

log-slave-updates

從服務(wù)器:設(shè)置以下選項后啟動

server-id

log-bin

datadir *

port *

socket *   ( 使用Lunix)

read_only   ( 推薦設(shè)置)

gtid-mode=on

enforce-gtid-consistency=on

log-slave-updates

賦予用戶“REPLICATION SLAVE”權(quán)限

CREATE USER ‘repl'@'localhost' IDENTIFIED BY ‘repl';

GRANT REPLICATION SLAVE ON *.* TO ‘repl'@'localhost';

 

3 .將主服務(wù)器的數(shù)據(jù)備份后恢復(fù)到從服務(wù)器(使用GTID)

冷備份后恢復(fù)數(shù)據(jù)

刪除Datadir下面的auto.cnf

( 目的為主從服務(wù)器的server-uuid一致(※))

 

使用mysqldump進行備份和恢復(fù)

備份例

 $ mysqldump --user=root --password=root –master-data=2 \

 --socket=/usr/local/mysql/data/mysql.sock \

 --hex-blob --default-character-set=utf8 --all-databases \

 --single-transaction --triggers --routines --events > mysql_bkup_dump.sql

 

 4 .從服務(wù)器執(zhí)行 CHANGE MASTER TO

 5 .從服務(wù)器執(zhí)行 START SLAVE (使用GTID)

CHANGE MASTER TO MASTER_HOST=‘localhost',

 -> MASTER_USER=‘repl',

 -> MASTER_PASSWORD=‘repl',

 -> MASTER_AUTO_POSITION=1;

 START SLAVE;

 

管理日志

使用SHOW MASTER STATUS 確認(rèn)現(xiàn)在的日志名稱和位置

使用SHOW MASTER LOGS 列出全部的日志文件名

使用FLUSH [BINARY] LOGS 命令或者MySQL服務(wù)器再啟動的時候日志輪換

使用PURGE MASTER 刪除特定時點的日志

使用RESET MASTER 刪除全部的日志

管理復(fù)制功能的命令(從服務(wù)器)

START SLAVE [SLAVE_TYPE] 啟動從服務(wù)器

STOP SLAVE [SLAVE_TYPE] 停止從服務(wù)器

SHOW SLAVE STATUS 確認(rèn)從服務(wù)器的狀態(tài)

確認(rèn)I/O線程傳送二進制日志的位置

確認(rèn)SQL線程執(zhí)行的relay日志位置

STOP SLAVE;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

STAT SLAVE; 忽略下一個事務(wù)

發(fā)生錯誤時,確認(rèn)狀態(tài)以后需要將特定的事務(wù)忽略的情況下使用

GTID 模式下該方法不適用

 

其他注意事項

MySQL 復(fù)制自身不具備的功能

高可用時候的故障切換功能

 =>MySQL 5.6的MySQL Utilities提供自動故障切換的腳本

讀寫分離、負載均衡的控制功能

 =>Connector/J(Java)或mysqlnd_ms(PHP)等可以控制

一次不要執(zhí)行大量的更新處理

防止從服務(wù)器的延遲

主服務(wù)器事務(wù)提交后,將變更的內(nèi)容傳送到從服務(wù)器,如果事務(wù)執(zhí)行時間過長的話,反映到從服務(wù)器會產(chǎn)生延遲

 

監(jiān)視復(fù)制功能

通過SHOW SLAVE STATUS的結(jié)果,來監(jiān)視下面內(nèi)容

I/O 線程、SQL線程是否正常活動?

I/O 線程 : Slave_IO_Running

SQL 線程 : Slave_SQL_Running

復(fù)制是否有延遲?

復(fù)制是否有延遲 : Seconds_Behind_Master

二進制日志和中繼日志的執(zhí)行位置等

二進制日志的傳送狀況 : Master_Log_File、Read_Master_Log_Pos

中繼日志的執(zhí)行狀況 : Relay_Master_Log_File、Exec_Master_Log_Pos

確認(rèn)網(wǎng)絡(luò)延時需要在主服務(wù)器上執(zhí)行SHOW MASTER STATUS 來確認(rèn)。(比較SHOW SLAVE STATUS 的Master_Log_File、Read_Master_Log_Pos)

監(jiān)視慢查詢?nèi)罩?/p>

確認(rèn)延遲原因和查詢執(zhí)行時間長的原因

主從服務(wù)器的磁盤剩余空間

從服務(wù)器的磁盤空間減少的話無法刪除中繼日志,復(fù)制功能會停止

主從服務(wù)器的資源使用狀況

(CPU 、內(nèi)存、I/O量,網(wǎng)絡(luò)流量)

復(fù)制功能構(gòu)成高可用性

優(yōu)點

MySQL 的標(biāo)準(zhǔn)功能不需要使用共享磁盤、軟件等等,成本低廉

可以實現(xiàn)高可用性和查詢處理的負載均衡

缺點

故障切換需要使用其他方法實現(xiàn),運用的時候考慮事項較多

發(fā)生故障時候,使用什么樣的方法進行切換?

發(fā)生故障切換的時候,應(yīng)用程序的連接需要切換

(MySQL 5.5 之前) 沒有崩潰安全機制,從服務(wù)器發(fā)生故障時,需要重新安裝從服務(wù)器。

 

 

當(dāng)前文章:MySQL的復(fù)制功能
網(wǎng)頁URL:http://www.rwnh.cn/article48/gshdep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、ChatGPT、App設(shè)計、響應(yīng)式網(wǎng)站、網(wǎng)頁設(shè)計公司、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
开平市| 六盘水市| 清水县| 乌鲁木齐县| 图木舒克市| 鸡西市| 长春市| 阳曲县| 武定县| 红河县| 丽水市| 杭锦后旗| 兖州市| 库车县| 蒲城县| 沅陵县| 邵阳县| 福安市| 彰化县| 常宁市| 宜春市| 准格尔旗| 宁城县| 永善县| 化德县| 南和县| 稻城县| 甘德县| 舞钢市| 云和县| 青铜峡市| 南康市| 平乐县| 定襄县| 黄骅市| 卢湾区| 托克托县| 唐河县| 武强县| 如皋市| 贡觉县|