




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、手把手教你實(shí)現(xiàn)MySQL雙機(jī)數(shù)據(jù)同步假設(shè)目前有兩臺(tái) MySQL 數(shù)據(jù)庫(kù)服務(wù)器,如何實(shí)現(xiàn)這兩臺(tái)機(jī)器的數(shù)據(jù)同步問(wèn)題?很多朋友一開(kāi)始接觸MySQL雙機(jī)同步需求的時(shí)候可能會(huì)感到不知道從哪里入手,事實(shí)上這是MySQL本身就支持的功能之一。本文提供有關(guān)MySQL主從同步的初步思路,供大家參考。AD: 編者按:很多朋友一開(kāi)始接觸MySQL雙機(jī)同步需求的時(shí)候可能會(huì)感到不知道從哪里入手,事實(shí)上這是MySQL本身就支持的功能之一。本文提供有關(guān)MySQL主從同步的初步思路,供大家參考。一.需求問(wèn)題假設(shè)目前有兩臺(tái) MySQL 數(shù)據(jù)庫(kù)服務(wù)器,如何實(shí)現(xiàn)這兩臺(tái)機(jī)器的數(shù)據(jù)同步問(wèn)題?即在一臺(tái)機(jī)器上修改數(shù)據(jù)庫(kù)后,另一臺(tái)機(jī)器會(huì)同步
2、更新所修改的信息。二.解決方案查資料發(fā)現(xiàn) MySQL 支持單向,異步復(fù)制,復(fù)制過(guò)程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而另一個(gè)或多個(gè)其他服務(wù)器充當(dāng)從服務(wù)器。原理是這樣的:主服務(wù)器將更新寫(xiě)入二進(jìn)制日志文件,并維護(hù)文件的一個(gè)索引來(lái)跟蹤日志循環(huán)。這些日志可以記錄發(fā)送到從服務(wù)器的更新。當(dāng)一個(gè)從服務(wù)器連接主服務(wù)器時(shí), 它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接受從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知新的更新。2.1 測(cè)試環(huán)境1. Master : 7 (CentOS 5.5 x86_64
3、160;) MySQL Version : 5.0.77 2. Slave: 03 (CentOS 5.3 i386) MySQL Version : 5.0.45 備注:Master 和 slave 端的 MySQL 版本最好要一樣的,或者 Master 端的版本高于 Slave 端2.2 配置過(guò)程2.2.1 Master 端設(shè)置開(kāi)啟 MySQL 服務(wù)并新建
4、一個(gè)測(cè)試數(shù)據(jù)庫(kù) abc:1. rootcamlit : /etc/init.d/mysqld start 2. jian.macamlit : mysql -u root -p 3. Enter password: xxxx 4. Welcome to the MySQL monitor. Commands end with
5、0;or g. 5. Your MySQL connection id is 3 6. Server version: 5.0.77 Source distribution 7. 8. Type 'help;' or 'h' for help. Type 'c' to clea
6、r the buffer. 9. 10. mysql> create database abc; 11. Query OK, 1 row affected (0.31 sec) 12. 13. #創(chuàng)建一個(gè)用來(lái)同步的用戶(hù),指定只能在 03 登錄 14. #REPLICATION SLAVE: Enable repl
7、ication slaves to read binary log events from the master 15. 16. mysql> grant replication slave on *.* to 'test1''03' identified by 'test1' 17
8、. Query OK, 0 rows affected (0.16 sec) 修改配置文件:1. rootcamlit : vi /etc/f 備注:在修改配置文件之前做好該文件的備份工作。1. mysqld 2. datadir=/var/lib/mysql 3. socket=/var/lib/mysql/mysql.sock 4. user=mysql 5. old_pas
9、swords=1 6. 7. #增加下面內(nèi)容 8. server_id=1#1 表示 master, 2 表示 slave binlog-do-db=abc #需要同步的數(shù)據(jù)庫(kù),如果有多個(gè)數(shù)據(jù)庫(kù),每個(gè)數(shù)據(jù)庫(kù)一行 binlog-ignore-db=mysql#不需要同步的數(shù)據(jù)庫(kù) log-bin=mysql-bin 9. 10. mysqld_safe
10、11. log-error=/var/log/mysqld.log 12. pid-file=/var/run/mysqld/mysqld.pid 重啟服務(wù):1. rootcamlit : /etc/init.d/mysqld restart 2.2.2 Slave 端設(shè)置和 master 端一樣創(chuàng)建一個(gè)相同的數(shù)據(jù)庫(kù): abc1. Enter password: 2. Welcome to the MySQL m
11、onitor. Commands end with or g. 3. Your MySQL connection id is 5 4. Server version: 5.0.45-log Source distribution 5. 6. Type 'help;' or 'h
12、9; for help. Type 'c' to clear the buffer. 7. 8. mysql> create database abc; 9. Query OK, 1 row affected (0.31 sec) 修改配置文件:1. roottest2 : vi /etc/f
13、 1. mysqld 2. datadir=/var/lib/mysql 3. socket=/var/lib/mysql/mysql.sock 4. user=mysql 5. old_passwords=1 6. 7. #增加下面內(nèi)容 8. server_id=2 log-bin=mysql-bin master-host=7
14、; master-user=test1 master-password=test1 master-port=3306 master-connect-retry=10 #連接次數(shù) replicate-do-db=abc #接受的數(shù)據(jù)庫(kù)名 replicate-ignore-db=mysql #不要接受的數(shù)據(jù)庫(kù) 9. 1
15、0. mysqld_safe 11. log-error=/var/log/mysqld.log 12. pid-file=/var/run/mysqld/mysqld.pid 重啟服務(wù):1. roottest2: /etc/init.d/mysqld restart 備注:配置成功 后會(huì)在 mysql 目錄(/var/lib/mysql/)下生成 文件,如果要更改 slave 設(shè)置,要先將該文件刪除才會(huì)起作用。進(jìn)入 mysql,輸入下面命令:1. roott
16、est2: mysql -u root -p 2. Enter password: 3. Welcome to the MySQL monitor. Commands end with or g. 4. Your MySQL connection id is 4 5. Server vers
17、ion: 5.0.45-log Source distribution 6. 7. Type 'help;' or 'h' for help. Type 'c' to clear the buffer. 8. 9. mysql> slave start; 10.
18、 Query OK, 0 rows affected, 1 warning (0.00 sec) 11. #查看同步情況 12. mysql > show slave status; 或 show master status; 2.3 結(jié)果測(cè)試在 Master 端進(jìn)行數(shù)據(jù)庫(kù) abc 的一些操作,如下所示:1. jian.macamlit :
19、mysql -u root -p 2. Enter password: 3. Welcome to the MySQL monitor. Commands end with or g. 4. Your MySQL connection id is 3 5. Server ver
20、sion: 5.0.77-log Source distribution 6. 7. Type 'help;' or 'h' for help. Type 'c' to clear the buffer. 8. 9. mysql> use abc; 10. Da
21、tabase changed 11. mysql> create table test1 (IP VARCHAR(20),USER VARCHAR(100), MAIL 12. VARCHAR(100); 13. Query OK, 0 rows affected (1.20 sec) 14. mysql> insert into
22、 test1(IP,USER,MAIL) values('6', 'test', 'test'); 15. Query OK, 1 row affected (0.06 sec) 在 Slave 端查看是否能夠更新:1. roottest2 : mysql -u root -p 2. Enter p
23、assword: 3. Welcome to the MySQL monitor. Commands end with or g. 4. Your MySQL connection id is 6 5. Server version: 5.0.45-log Source distribution 6
24、. 7. Type 'help;' or 'h' for help. Type 'c' to clear the buffer. 8. 9. mysql> show databases; 10. +-+ 11. | Database |
25、 12. +-+ 13. | information_schema | 14. | foo| 15. | mysql | 16. | test | 17. |abc | 18. +-+ 19. 5rows in set (0.00 sec)
26、 20. mysql> use abc; 21. Reading table information for completion of table and column names 22. You can turn off this feature to get a quicker startup with
27、160;-A 23. Database changed 24. mysql> show tables; 25. +-+ 26. | Tables_in_abc | 27. +-+ 28. | test1 | 29. +-+ 30. 1 row in set (0.03 sec)
28、160; 31. mysql> select * from test1; 32. +-+-+-+ 33. | IP | USER | MAIL | 34. +-+-+-+ 35. | 6 | test | test | 36. +-+-+-+&
29、#160; 37. 1 row in set (0.00 sec) 從上面的結(jié)果可以看到 Master 端的數(shù)據(jù)可以同步到 Slave 端里面。說(shuō)明此時(shí)主從數(shù)據(jù)庫(kù)的同步問(wèn)題已經(jīng)成功解決。三.補(bǔ)充資料關(guān)于如何連接到遠(yuǎn)程 MySQL 問(wèn)題,可以采取下面的步驟:首先先登錄到遠(yuǎn)程機(jī)器:1. jian.macamlit : ssh root03 2. password: xxx 3. roottest2 :
30、60; 編輯配置文件:1. roottest2 : vi /etc/f 增加下面一行內(nèi)容:1. mysqld 2. datadir=/var/lib/mysql 3. socket=/var/lib/mysql/mysql.sock 4. user=mysql 5. old_passwords=1 6. bind-address=03#此 IP 地址為 MySQ
31、L 本機(jī)的 IP 地址 7. mysqld_safe 8. log-error=/var/log/mysqld.log 9. pid-file=/var/run/mysqld/mysqld.pi 重啟服務(wù):1. roottest2 : /etc/init.d/mysqld restart 創(chuàng)建測(cè)試數(shù)據(jù)庫(kù):1. roottest2 : mysql -u root -p 2. Enter
32、 password: 3. Welcome to the MySQL monitor. Commands end with or g. 4. Your MySQL connection id is 2 5. Server version: 5.0.45 Source distribution
33、0;6. 7. Type 'help;' or 'h' for help. Type 'c' to clear the buffer. 8. 9. mysql> create database foo 10. Query OK, 1 row affected
34、0;(0.00 sec) 11. #增加用戶(hù) test123 從任何主機(jī)登錄到 MySQL 12. mysql> grant all privileges on *.* to 'test123''%' identified by 'test123' with grant option; 13. Quer
35、y OK, 0 rows affected (0.00 sec) 14. #增加用戶(hù) test1 從 7 主機(jī)登錄到 MySQL 15. mysql> grant all privileges on foo.* to 'test1''7' identified by
36、39;test1' with grant option; 16. Query OK, 0 rows affected (0.00 sec) 如果有防火墻的設(shè)置的話(huà),可以如下設(shè)置:1. roottest2 : iptables -A INPUT -i eth0 -s 7 -p tcp -dport
37、160;3306 -j ACCEPT 2. roottest2: /etc/init.d/iptales save 最后在客戶(hù)端就可以輸入下面命令來(lái)遠(yuǎn)程進(jìn)入 MySQL 數(shù)據(jù)庫(kù):1. jian.macamlit : mysql -u test1 -h 03 -p 2. Enter password: 3. Welcome to the
38、60;MySQL monitor. Commands end with or g. 4. Your MySQL connection id is 13 5. Server version: 5.0.45 Source distribution 6. Type 'help;' or 'h'
39、160;for help. Type 'c' to clear the buffer. mysqld.pl內(nèi)容如下:1. #!/usr/bin/perl 2. 3. #This script is used to check if the mysql replication is ok 4. 5. use strict; 6.
40、use DBI; 7. use POSIX "strftime" 8. 9. my $host = "03" 10. my $user = "test1&
41、quot; 11. my $passwd = "test1" 12. my $port = "3306" 13. my $max_behind = "120"
42、; 14. my $check_log = "./mysql_check.log" 15. 16. 17. #Open the log file 18. open (FH, ">> $check_log") or die $!; 19. 20. #Connect the
43、 mysql server 21. my $dbh = &MysqlConnect ($host, $port, $user, $passwd); 22. 23. 24. #Get slave sql status 25. my $slave_status = &MysqlQuery( $dbh, 'show slave
44、0;status'); 26. print FH "Error: SQL Query Error:" . $dbh->errstr; 27. 28. 29. my $slave_IO = $slave_status->Slave_IO_Running;
45、0;30. my $slave_SQL = $slave_status->Slave_SQL_Running; 31. my $seconds_behind_master = $slave_status->Seconds_Behind_Master; 32. my $now_time
46、; = POSIX:strftime ("%Y-%m-%d %H:%M:%S", localtime); 33. 34. 35. print "Check the Slave MySQL stauts.n" 36. print "_" x 50, "n" 37.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025天津市建筑安全員A證考試題庫(kù)附答案
- 生物-四川省金太陽(yáng)2025屆高三2月開(kāi)學(xué)考試試題和答案
- 2025年度房產(chǎn)出售代理售后服務(wù)協(xié)議
- 2025年度化工原料運(yùn)輸事故應(yīng)急預(yù)案合同
- 2025年度文化藝術(shù)公司公司掛靠文化藝術(shù)交流活動(dòng)合同
- 2025年度農(nóng)村魚(yú)塘養(yǎng)殖權(quán)轉(zhuǎn)讓與漁業(yè)資源可持續(xù)利用合同
- 2025年度圖書(shū)出版著作權(quán)許可及翻譯權(quán)合同
- 2025年度電商運(yùn)營(yíng)顧問(wèn)勞動(dòng)合同
- 2025年度商業(yè)地產(chǎn)開(kāi)發(fā)車(chē)位贈(zèng)送及使用維護(hù)合同
- 2025年度個(gè)人自愿捐贈(zèng)殘疾人福利基金協(xié)議書(shū)
- 美麗的春天課件
- 2025年山東青島自貿(mào)發(fā)展有限公司招聘筆試參考題庫(kù)含答案解析
- 液化氣罐的使用和安全防范
- 會(huì)計(jì)法律法規(guī)答題答案
- 2024年山東外貿(mào)職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 2025江蘇常州溧陽(yáng)市部分機(jī)關(guān)事業(yè)單位招聘編外人員78人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年學(xué)校心理健康教育工作計(jì)劃(三篇)
- 2025年教科版科學(xué)五年級(jí)下冊(cè)教學(xué)計(jì)劃(含進(jìn)度表)
- 北師大版一年級(jí)語(yǔ)文下冊(cè)第一單元元宵節(jié)《1元宵節(jié)》
- 歐盟一般食品法Regulation-(EC)-No-178-2002中文翻譯
- 2024屆高考語(yǔ)文二輪復(fù)習(xí)詩(shī)歌專(zhuān)題訓(xùn)練文學(xué)短評(píng)類(lèi)題型(含解析)
評(píng)論
0/150
提交評(píng)論