zencart數(shù)據(jù)庫(kù)鏡像 實(shí)時(shí)備份MySQL數(shù)據(jù)庫(kù)
通過實(shí)現(xiàn)MySQL數(shù)據(jù)庫(kù)鏡像,可以遠(yuǎn)程實(shí)時(shí)備份MySQL數(shù)據(jù)庫(kù)。這樣如果主機(jī)出現(xiàn)故障,或者主機(jī)帳號(hào)被封,都能迅速切換zencart網(wǎng)店到新的服務(wù)器上。
數(shù)據(jù)庫(kù)鏡像,需要兩臺(tái)服務(wù)器(或者用兩臺(tái)VPS主機(jī))。一臺(tái)為主服務(wù)器,另一臺(tái)為從服務(wù)器,所有主服務(wù)器上數(shù)據(jù)庫(kù)的變化,都實(shí)時(shí)鏡像到從服務(wù)器上。宇塵網(wǎng)絡(luò)幫助中心域名知識(shí)|虛擬主機(jī)知識(shí)|VPS主機(jī)知識(shí)|服務(wù)器知識(shí)|網(wǎng)站建設(shè)知識(shí)|網(wǎng)絡(luò)推廣
1. 在主服務(wù)器上,創(chuàng)建用于數(shù)據(jù)庫(kù)鏡像的數(shù)據(jù)庫(kù)用戶,從服務(wù)器用這個(gè)帳號(hào)連接主服務(wù)器。
該數(shù)據(jù)庫(kù)用戶可以是任何數(shù)據(jù)庫(kù)用戶,只要有REPLICATION SLAVE權(quán)限,由于該用戶名、密碼將明文保存在master.info文件中,因此建議創(chuàng)建、使用單獨(dú)的鏡像用戶。
創(chuàng)建一個(gè)鏡像用戶 repl 的命令:
代碼: 全選
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO ‘repl’@’localhost’ IDENTIFIED BY ’slavepass’;
2. 設(shè)置主服務(wù)器
首先,主服務(wù)器必須打開二進(jìn)制日志的功能。每臺(tái)參與鏡像的服務(wù)器都必須有一個(gè)唯一的標(biāo)識(shí)符。該標(biāo)識(shí)符為 1-231 之間的一個(gè)任意整數(shù),只要各服務(wù)器的標(biāo)識(shí)符不重復(fù)。
要設(shè)置二進(jìn)制日志和服務(wù)器標(biāo)識(shí)符,必須停止MySQL服務(wù)器,然后在 my.cnf 或者 my.ini 配置文件中加入下面的定義:
代碼: 全選
[mysqld]
log-bin=mysql-bin
server-id=1
仿牌空間、香港月付空間、韓國(guó)月付空間、日本月付空間、荷蘭VPS、香港VPS
3. 設(shè)置從服務(wù)器
從服務(wù)器只需要設(shè)置服務(wù)器標(biāo)識(shí)符。停止MySQL服務(wù)器,然后在 my.cnf 或者 my.ini 配置文件中加入下面的定義:
[mysqld]
server-id=2
如果設(shè)置多臺(tái)從服務(wù)器,每臺(tái)服務(wù)器都需要有唯一的標(biāo)識(shí)符。從服務(wù)器不需要打開二進(jìn)制功能,除非你想把從服務(wù)器作為另一臺(tái)鏡像服務(wù)器的主服務(wù)器。
4. 獲取主服務(wù)器的信息
要設(shè)置鏡像,必須查找主服務(wù)器的二進(jìn)制日志的當(dāng)前記錄點(diǎn)。在從服務(wù)器啟動(dòng)鏡像功能時(shí)需要該數(shù)據(jù)。
操作步驟分A、B兩步:
A. 鎖定主數(shù)據(jù)庫(kù)
代碼: 全選
mysql> FLUSH TABLES WITH READ LOCK;
鎖定數(shù)據(jù)庫(kù)后,不要退出客戶端(命令行),否者數(shù)據(jù)庫(kù)解鎖。
B. 查找二進(jìn)制日志的當(dāng)前記錄點(diǎn)
代碼: 全選
mysql > SHOW MASTER STATUS;
+—————+———-+————–+——————+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+—————+———-+————–+——————+
| mysql-bin.003 | 73 | test | manual,mysql |
+—————+———-+————–+——————+
上面File欄下顯示日志文件名,Position欄下顯示當(dāng)前記錄點(diǎn),記下這兩個(gè)數(shù)據(jù)。
5. 使用mysqldump導(dǎo)出zencart網(wǎng)店的數(shù)據(jù)庫(kù)初始數(shù)據(jù)
首先要將主服務(wù)器上的現(xiàn)有數(shù)據(jù)傳到從服務(wù)器上。在第4步的客戶端仍然鎖定數(shù)據(jù)庫(kù)的情況下,新開一個(gè)session連接到主服務(wù)器,然后執(zhí)行:
代碼: 全選
shell> mysqldump database_name1 –lock-all-tables > dbdump_database_name1.db
其中,database_name1是需要鏡像的zencart網(wǎng)店的數(shù)據(jù)庫(kù)名。如果有多個(gè)zencart網(wǎng)店的數(shù)據(jù)庫(kù)需要鏡像,重復(fù)mysqldump導(dǎo)出。
然后將導(dǎo)出的dbdump_database_name1.db 傳送到從服務(wù)器上。
現(xiàn)在,可以在第4步的客戶端,解鎖數(shù)據(jù)庫(kù):
代碼: 全選
mysql> UNLOCK TABLES;
美國(guó)月付空間、月付美國(guó)空間、美國(guó)VPS、美國(guó)服務(wù)器租用
6. 啟動(dòng)從服務(wù)器的實(shí)時(shí)數(shù)據(jù)庫(kù)鏡像
在從服務(wù)器上恢復(fù)第5步導(dǎo)出的主服務(wù)器的zencart網(wǎng)店的初始數(shù)據(jù)
A. 起動(dòng)從服務(wù)器數(shù)據(jù)庫(kù),帶參數(shù) –skip-slave-start:
代碼: 全選
shell> /etc /init.d/mysqld stop
shell> /etc /init.d/mysqld start –skip-slave-start
B. 導(dǎo)入初始數(shù)據(jù):
代碼: 全選
shell> mysql < dbdump_database_name1.db
C. 設(shè)置從服務(wù)器的參數(shù):
代碼: 全選
mysql> CHANGE MASTER TO
-> MASTER_HOST=’master_host_name’,
-> MASTER_USER=’replication_user_name’,
-> MASTER_PASSWORD=’replication_password’,
-> MASTER_LOG_FILE=’recorded_log_file_name’,
-> MASTER_LOG_POS=recorded_log_position;
D. 開啟鏡像功能:
代碼: 全選
mysql> START SLAVE;
注意:如果主服務(wù)器有防火墻,需要開通MySQL的端口3306,該端口只要對(duì)從服務(wù)器的IP開放就可以了。
更多技術(shù)知識(shí),更多網(wǎng)絡(luò)服務(wù),盡在宇塵網(wǎng)絡(luò)。我們的成長(zhǎng),離不開你們的支持,宇塵網(wǎng)絡(luò),歡迎您的訪問。




