MySQL主從分區(qū)(Master-Slave Partitioning)是指將一個(gè)數(shù)據(jù)庫(kù)實(shí)例分成幾個(gè)獨(dú)立的部分,每個(gè)部分分配給不同的從服務(wù)器(Slave)進(jìn)行讀寫(xiě)操作。這種分區(qū)方式可以充分利用多臺(tái)服務(wù)器的資源,提高數(shù)據(jù)庫(kù)的性能,解決單臺(tái)服務(wù)器負(fù)載過(guò)高的問(wèn)題。
MySQL主從復(fù)制(Master-Slave Replication)是實(shí)現(xiàn)MySQL主從分區(qū)的關(guān)鍵技術(shù)。通過(guò)主從復(fù)制,主服務(wù)器將數(shù)據(jù)更改操作同步到從服務(wù)器,保持從服務(wù)器與主服務(wù)器的數(shù)據(jù)一致性。主從復(fù)制的基本原理是主服務(wù)器將其二進(jìn)制日志(Binary Log)中的內(nèi)容發(fā)送給從服務(wù)器,從服務(wù)器將其內(nèi)容寫(xiě)入從服務(wù)器的中繼日志(Relay Log),然后應(yīng)用中繼日志中的內(nèi)容到從服務(wù)器的數(shù)據(jù)庫(kù)中。主從復(fù)制可以在同一臺(tái)服務(wù)器上運(yùn)行,也可以在不同的服務(wù)器上運(yùn)行。
下面是使用MySQL命令行工具設(shè)置主從復(fù)制的過(guò)程:
# 在主服務(wù)器上添加一個(gè)名為'replication'的用戶 mysql>CREATE USER 'replication'@'%' IDENTIFIED BY 'password'; # 授予'replication'用戶訪問(wèn)主服務(wù)器二進(jìn)制日志的權(quán)限 mysql>GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%'; # 查看主服務(wù)器二進(jìn)制日志文件名和位置 mysql>SHOW MASTER STATUS; # 在從服務(wù)器上執(zhí)行以下命令,切換到主服務(wù)器配置中的同一位置 mysql>CHANGE MASTER TO ->MASTER_HOST='master_host_name', ->MASTER_USER='replication', ->MASTER_PASSWORD='password', ->MASTER_LOG_FILE='master_log_file_name', ->MASTER_LOG_POS=master_log_position; # 啟動(dòng)從服務(wù)器 mysql>START SLAVE;
使用MySQL主從分區(qū)可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)的水平擴(kuò)展,將數(shù)據(jù)庫(kù)實(shí)例分成幾個(gè)部分,每個(gè)部分運(yùn)行在不同的服務(wù)器上,可以在不增加單個(gè)服務(wù)器的負(fù)載情況下,提高整個(gè)數(shù)據(jù)庫(kù)的性能和可靠性。