如何配置MySQL主從復(fù)制_MySQL教程
推薦:MySQL 備份和恢復(fù)策略詳細(xì)教程在數(shù)據(jù)庫表丟失或損壞的情況下,備份你的數(shù)據(jù)庫是很重要的。如果發(fā)生系統(tǒng)崩潰,你肯定想能夠?qū)⒛愕谋肀M可能丟失最少的數(shù)據(jù)恢復(fù)到崩潰發(fā)生時(shí)的狀態(tài)。本文主要對MyISAM表做備份恢復(fù)。 備份策略一:直接拷貝數(shù)據(jù)庫文件(不推薦) 備份策略二:使用mysqlhotcopy備份數(shù)據(jù)庫(完
MySQL支持單向、異步復(fù)制,復(fù)制過程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而一個(gè)或多個(gè)其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫入二進(jìn)制日志文件,并維護(hù)日志文件的一個(gè)索引以跟蹤日志循環(huán)。當(dāng)一個(gè)從服務(wù)器連接到主服務(wù)器時(shí),它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知下一次更新。
為什么使用主從復(fù)制?
1、主服務(wù)器/從服務(wù)器設(shè)置增加了健壯性。主服務(wù)器出現(xiàn)問題時(shí),你可以切換到從服務(wù)器作為備份。
2、通過在主服務(wù)器和從服務(wù)器之間切分處理客戶查詢的負(fù)荷,可以得到更好的客戶響應(yīng)時(shí)間。但是不要同時(shí)在主從服務(wù)器上進(jìn)行更新,這樣可能引起沖突。
3、使用復(fù)制的另一個(gè)好處是可以使用一個(gè)從服務(wù)器執(zhí)行備份,而不會(huì)干擾主服務(wù)器。在備份過程中主服務(wù)器可以繼續(xù)處理更新。
MySQL使用3個(gè)線程來執(zhí)行復(fù)制功能(其中1個(gè)在主服務(wù)器上,另兩個(gè)在從服務(wù)器上。當(dāng)發(fā)出START SLAVE時(shí),從服務(wù)器創(chuàng)建一個(gè)I/O線程,以連接主服務(wù)器并讓主服務(wù)器發(fā)送二進(jìn)制日志。主服務(wù)器創(chuàng)建一個(gè)線程將二進(jìn)制日志中的內(nèi)容發(fā)送到從服務(wù)器。從服務(wù)器I/O線程讀取主服務(wù)器Binlog Dump線程發(fā)送的內(nèi)容并將該數(shù)據(jù)拷貝到從服務(wù)器數(shù)據(jù)目錄中的本地文件中,即中繼日志。第3個(gè)線程是SQL線程,從服務(wù)器使用此線程讀取中繼日志并執(zhí)行日志中包含的更新。SHOW PROCESSLIST語句可以查詢在主服務(wù)器上和從服務(wù)器上發(fā)生的關(guān)于復(fù)制的信息。
默認(rèn)中繼日志使用host_name-relay-bin.nnnnnn形式的文件名,其中host_name是從服務(wù)器主機(jī)名,nnnnnn是序列號(hào)。用連續(xù)序列號(hào)來創(chuàng)建連續(xù)中繼日志文件,從000001開始。從服務(wù)器跟蹤中繼日志索引文件來識(shí)別目前正使用的中繼日志。默認(rèn)中繼日志索引文件名為host_name-relay-bin.index。在默認(rèn)情況,這些文件在從服務(wù)器的數(shù)據(jù)目錄中被創(chuàng)建。中繼日志與二進(jìn)制日志的格式相同,并且可以用mysqlbinlog讀取。當(dāng)SQL線程執(zhí)行完中繼日志中的所有事件后,中繼日志將會(huì)被自動(dòng)刪除。
從服務(wù)器在數(shù)據(jù)目錄中另外創(chuàng)建兩個(gè)狀態(tài)文件--master.info和relay-log.info。狀態(tài)文件保存在硬盤上,從服務(wù)器關(guān)閉時(shí)不會(huì)丟失。下次從服務(wù)器啟動(dòng)時(shí),讀取這些文件以確定它已經(jīng)從主服務(wù)器讀取了多少二進(jìn)制日志,以及處理自己的中繼日志的程度。
設(shè)置主從復(fù)制:
1、確保在主服務(wù)器和從服務(wù)器上安裝的MySQL版本相同,并且最好是MySQL的最新穩(wěn)定版本。
2、在主服務(wù)器上為復(fù)制設(shè)置一個(gè)連接賬戶。該賬戶必須授予REPLICATION SLAVE權(quán)限。如果賬戶僅用于復(fù)制(推薦這樣做),則不需要再授予任何其它權(quán)限。
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'replication'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';
3、執(zhí)行FLUSH TABLES WITH READ LOCK語句清空所有表和塊寫入語句:
mysql> FLUSH TABLES WITH READ LOCK;
保持mysql客戶端程序不要退出。開啟另一個(gè)終端對主服務(wù)器數(shù)據(jù)目錄做快照。
shell> cd /usr/local/mysql/
shell> tar -cvf /tmp/mysql-snapshot.tar ./data
如果從服務(wù)器的用戶賬戶與主服務(wù)器的不同,你可能不想復(fù)制mysql數(shù)據(jù)庫。在這種情況下,應(yīng)從歸檔中排除該數(shù)據(jù)庫。你也不需要在歸檔中包括任何日志文件或者master.info或relay-log.info文件。
當(dāng)FLUSH TABLES WITH READ LOCK所置讀鎖定有效時(shí)(即mysql客戶端程序不退出),讀取主服務(wù)器上當(dāng)前的二進(jìn)制日志名和偏移量值:
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
File列顯示日志名,而Position顯示偏移量。在該例子中,二進(jìn)制日志值為mysql-bin.003,偏移量為73。記錄該值。以后設(shè)置從服務(wù)器時(shí)需要使用這些值。它們表示復(fù)制坐標(biāo),從服務(wù)器應(yīng)從該點(diǎn)開始從主服務(wù)器上進(jìn)行新的更新。
如果主服務(wù)器運(yùn)行時(shí)沒有啟用--logs-bin,SHOW MASTER STATUS顯示的日志名和位置值為空。在這種情況下,當(dāng)以后指定從服務(wù)器的日志文件和位置時(shí)需要使用的值為空字符串('')和4.
取得快照并記錄日志名和偏移量后,回到前一中端重新啟用寫活動(dòng):
mysql> UNLOCK TABLES;
4、確保主服務(wù)器主機(jī)上my.cnf文件的[mysqld]部分包括一個(gè)log-bin選項(xiàng)。該部分還應(yīng)有一個(gè)server-id=Master_id選項(xiàng),其中master_id必須為1到232–1之間的一個(gè)正整數(shù)值。例如:
[mysqld]
log-bin
server-id=1
如果沒有提供那些選項(xiàng),應(yīng)添加它們并重啟服務(wù)器。
5、停止從服務(wù)器上的mysqld服務(wù)并在其my.cnf文件中添加下面的行:
[mysqld]
server-id=2
slave_id值同Master_id值一樣,必須為1到232–1之間的一個(gè)正整數(shù)值。并且,從服務(wù)器的ID必須與主服務(wù)器的ID不相同。
6、將數(shù)據(jù)備據(jù)目錄中。確保對這些文件和目錄的權(quán)限正確。服務(wù)器 MySQL運(yùn)行的用戶必須能夠讀寫文件,如同在主服務(wù)器上一樣。
Shell> chown -R mysql:mysql /usr/local/mysql/data
7、啟動(dòng)從服務(wù)器。在從服務(wù)器上執(zhí)行下面的語句,用你的系統(tǒng)的實(shí)際值替換選項(xiàng)值:
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;
8、啟動(dòng)從服務(wù)器線程:
mysql> START SLAVE;
執(zhí)行這些程序后,從服務(wù)器應(yīng)連接主服務(wù)器,并補(bǔ)充自從快照以來發(fā)生的任何更新。
9、如果出現(xiàn)復(fù)制錯(cuò)誤,從服務(wù)器的錯(cuò)誤日志(HOSTNAME.err)中也會(huì)出現(xiàn)錯(cuò)誤消息。
10、從服務(wù)器復(fù)制時(shí),會(huì)在其數(shù)據(jù)目錄中發(fā)現(xiàn)文件master.info和HOSTNAME-relay-log.info。從服務(wù)器使用這兩個(gè)文件跟蹤已經(jīng)處理了多少主服務(wù)器的二進(jìn)制日志。不要移除或編輯這些文件,除非你確切知你正在做什么并完全理解其意義。即使這樣,最好是使用CHANGE MASTER TO語句。
分享:Apache服務(wù)器下使用 ab 命令進(jìn)行壓力測試ab是Apache超文本傳輸協(xié)議(HTTP)的性能測試工具。 其設(shè)計(jì)意圖是描繪當(dāng)前所安裝的Apache的執(zhí)行性能,主要是顯示你安裝的Apache每秒可以處理多少個(gè)請求. #ab -v可以看出其基本信息 #ab -n1000 -c10 http://localhost:81/t.php 這是一個(gè)基本命令 -n1000表示總請求數(shù)為1000
- MySQL 備份和恢復(fù)策略詳細(xì)教程
- Apache服務(wù)器下使用 ab 命令進(jìn)行壓力測試
- MySQL下的NoSQL解決方案HandlerSocket
- MySQL引擎 學(xué)習(xí)筆記
- navicat如何連接mysql?navicat連接mysql詳細(xì)圖文教程
- 如何從Windows命令行啟動(dòng)MySQL
- 你應(yīng)該知道的10個(gè)MySQL客戶啟動(dòng)選項(xiàng)
- MySQL十條特殊技巧
- 用特殊的MySQL運(yùn)算符獲得更多數(shù)據(jù)比較功能
- MySQL數(shù)據(jù)庫中與 NULL值有關(guān)的幾個(gè)問題
- Redis SORT排序命令使用方法詳解
- mysql多表隨機(jī)查詢優(yōu)化方案
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
猜你也喜歡看這些
- 怎樣創(chuàng)建SQL Server 2000故障轉(zhuǎn)移群集
- sqlserver (parse name)字符串截取的方法
- 讓你的MySQL數(shù)據(jù)庫徹底與中文聯(lián)姻
- SQL Server數(shù)據(jù)庫增強(qiáng)版?zhèn)浞蒹w驗(yàn)
- 解讀SQL查詢結(jié)果集對注入的影響及利用
- 怎樣制定自己的SQL Server 2000觸發(fā)器
- 快速清除SQLServer日志的兩種方法
- 揭秘SQL Server數(shù)據(jù)庫系統(tǒng)的編譯
- 關(guān)于Oracle數(shù)據(jù)庫與SQL Server數(shù)據(jù)庫鏡像的關(guān)系
- 解析SQL Server數(shù)據(jù)庫恢復(fù)操作實(shí)例
- 相關(guān)鏈接:
- 教程說明:
MySQL教程-如何配置MySQL主從復(fù)制
。