mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)
1.復(fù)制概述
Mysql內(nèi)建的復(fù)制功能是構(gòu)建大型,高性能應(yīng)用程序的基礎(chǔ)。將Mysql的數(shù)據(jù)分布到多個(gè)系統(tǒng)上去,這種分布的機(jī)制,是通過(guò)將Mysql的某一臺(tái)主機(jī)的數(shù)據(jù)復(fù)制到其它主機(jī)(slaves)上,并重新執(zhí)行一遍來(lái)實(shí)現(xiàn)的。復(fù)制過(guò)程中一個(gè)服務(wù)器充當(dāng)主服務(wù)器,而一個(gè)或多個(gè)其它服務(wù)器充當(dāng)從服務(wù)器。主服務(wù)器將更新寫(xiě)入二進(jìn)制日志文件,并維護(hù)文件的一個(gè)索引以跟蹤日志循環(huán)。這些日志可以記錄發(fā)送到從服務(wù)器的更新。當(dāng)一個(gè)從服務(wù)器連接主服務(wù)器時(shí),它通知主服務(wù)器從服務(wù)器在日志中讀取的最后一次成功更新的位置。從服務(wù)器接收從那時(shí)起發(fā)生的任何更新,然后封鎖并等待主服務(wù)器通知新的更新。
請(qǐng)注意當(dāng)你進(jìn)行復(fù)制時(shí),所有對(duì)復(fù)制中的表的更新必須在主服務(wù)器上進(jìn)行。否則,你必須要小心,以避免用戶(hù)對(duì)主服務(wù)器上的表進(jìn)行的更新與對(duì)從服務(wù)器上的表所進(jìn)行的更新之間的沖突。
1.1 mysql支持的復(fù)制類(lèi)型:
(1)基于語(yǔ)句的復(fù)制:在主服務(wù)器上執(zhí)行的SQL語(yǔ)句,在從服務(wù)器上執(zhí)行同樣的語(yǔ)句。MySQL默認(rèn)采用基于語(yǔ)句的復(fù)制,效率比較高。一旦發(fā)現(xiàn)沒(méi)法精確復(fù)制時(shí),會(huì)自動(dòng)選著基于行的復(fù)制。
(2)基于行的復(fù)制:把改變的內(nèi)容復(fù)制過(guò)去,而不是把命令在從服務(wù)器上執(zhí)行一遍. 從mysql5.0開(kāi)始支持
(3)混合類(lèi)型的復(fù)制: 默認(rèn)采用基于語(yǔ)句的復(fù)制,一旦發(fā)現(xiàn)基于語(yǔ)句的無(wú)法精確的復(fù)制時(shí),就會(huì)采用基于行的復(fù)制。
1.2 復(fù)制解決的問(wèn)題
MySQL復(fù)制技術(shù)有以下一些特點(diǎn):
(1) 數(shù)據(jù)分布 (Data distribution )
(2) 負(fù)載平衡(load balancing)
(3) 備份(Backups)
(4) 高可用性和容錯(cuò)行 High availability and failover
1.3 復(fù)制如何工作
整體上來(lái)說(shuō),復(fù)制有3個(gè)步驟:
(1) master將改變記錄到二進(jìn)制日志(binary log)中(這些記錄叫做二進(jìn)制日志事件,binary log events);
(2) slave將master的binary log events拷貝到它的中繼日志(relay log);
(3) slave重做中繼日志中的事件,將改變反映它自己的數(shù)據(jù)。
2 .復(fù)制配置
有兩臺(tái)MySQL數(shù)據(jù)庫(kù)服務(wù)器Master和slave,Master為主服務(wù)器,slave為從服務(wù)器,初始狀態(tài)時(shí),Master和slave中的數(shù)據(jù)信息相同,當(dāng)Master中的數(shù)據(jù)發(fā)生變化時(shí),slave也跟著發(fā)生相應(yīng)的變化,使得master和slave的數(shù)據(jù)信息同步,達(dá)到備份的目的。
要點(diǎn):
負(fù)責(zé)在主、從服務(wù)器傳輸各種修改動(dòng)作的媒介是主服務(wù)器的二進(jìn)制變更日志,這個(gè)日志記載著需要傳輸給從服務(wù)器的各種修改動(dòng)作。因此,主服務(wù)器必須激活二進(jìn)制日志功能。從服務(wù)器必須具備足以讓它連接主服務(wù)器并請(qǐng)求主服務(wù)器把二進(jìn)制變更日志傳輸給它的權(quán)限。
一、安裝MySQL
說(shuō)明:在兩臺(tái)MySQL服務(wù)器192.168.21.169和192.168.21.168上分別進(jìn)行如下操作,安裝MySQL 5.5.22
二、配置MySQL主服務(wù)器(192.168.21.169)
mysql -u root -p #進(jìn)入MySQL控制臺(tái)create database AMT_DB; #建立數(shù)據(jù)庫(kù)AMT_DBinsert into mysql.user(Host,User,Password) values ('localhost','archermind',password('123456')); #創(chuàng)建用戶(hù)archermind,建立MySQL主從數(shù)據(jù)庫(kù)同步用戶(hù)replication密碼123456 flush privileges; #刷新系統(tǒng)授權(quán)表#授權(quán)用戶(hù)replication只能從192.168.21.168這個(gè)IP訪問(wèn)主服務(wù)器192.168.21.169上面的數(shù)據(jù)庫(kù),并且只具有數(shù)據(jù)庫(kù)備份的權(quán)限grant replication slave on *.* to 'replication'@'192.168.21.168' identified by '123456' with grant option;復(fù)制代碼三、把MySQL主服務(wù)器192.168.21.169中的數(shù)據(jù)庫(kù)AMT_DB導(dǎo)入到MySQL從服務(wù)器192.168.21.168中
1、導(dǎo)出數(shù)據(jù)庫(kù)AMT_DB
mysqldump -u root -p AMT_DB > /home/replication.sql #在MySQL主服務(wù)器進(jìn)行操作,導(dǎo)出數(shù)據(jù)庫(kù)AMT_DB到/home/replication.sql復(fù)制代碼備注:在導(dǎo)出之前可以先進(jìn)入MySQL控制臺(tái)執(zhí)行下面命令
flush tables with read lock; #數(shù)據(jù)庫(kù)只讀鎖定命令,防止導(dǎo)出數(shù)據(jù)庫(kù)的時(shí)候有數(shù)據(jù)寫(xiě)入unlock tables; #解除鎖定復(fù)制代碼2、導(dǎo)入數(shù)據(jù)庫(kù)到MySQL從服務(wù)器
mysql -u root -p #進(jìn)入從服務(wù)器MySQL控制臺(tái)create database AMT_DB; #創(chuàng)建數(shù)據(jù)庫(kù)use AMT_DB #進(jìn)入數(shù)據(jù)庫(kù)source /home/replication.sql #導(dǎo)入備份文件到數(shù)據(jù)庫(kù)mysql -u replication -h 192.168.21.169 -p #測(cè)試在從服務(wù)器上登錄到主服務(wù)器復(fù)制代碼四、配置MySQL主服務(wù)器的my.cnf文件
#vim /etc/my.cnf #編輯配置文件,在[mysqld]部分添加下面內(nèi)容 server-id=1 #設(shè)置服務(wù)器id,為1表示主服務(wù)器,注意:如果原來(lái)的配置文件中已經(jīng)有這一行,就不用再添加了。 log_bin=mysql-bin #啟動(dòng)MySQ二進(jìn)制日志系統(tǒng),注意:如果原來(lái)的配置文件中已經(jīng)有這一行,就不用再添加了。 binlog-do-db=AMT_DB #需要同步的數(shù)據(jù)庫(kù)名,如果有多個(gè)數(shù)據(jù)庫(kù),可重復(fù)此參數(shù),每個(gè)數(shù)據(jù)庫(kù)一行 binlog-ignore-db=mysql #不同步mysql系統(tǒng)數(shù)據(jù)庫(kù)#service mysqld restart #重啟MySQL復(fù)制代碼mysql -u root -p #進(jìn)入mysql控制臺(tái)show master status; 查看主服務(wù)器,出現(xiàn)以下類(lèi)似信息+------------------+----------+--------------+------------------+|File |Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 7131 | AMT_DB |mysql |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)復(fù)制代碼注意:這里記住File的值:mysql-bin.000001和Position的值:7131,后面會(huì)用到。
五、配置MySQL從服務(wù)器的my.cnf文件
#vim /etc/my.cnf #編輯配置文件,在[mysqld]部分添加下面內(nèi)容server-id=2 #配置文件中已經(jīng)有一行server-id=1,修改其值為2,表示為從數(shù)據(jù)庫(kù)log-bin=mysql-bin #啟動(dòng)MySQ二進(jìn)制日志系統(tǒng),注意:如果原來(lái)的配置文件中已經(jīng)有這一行,就不用再添加了。replicate-do-db=AMT_DB #需要同步的數(shù)據(jù)庫(kù)名,如果有多個(gè)數(shù)據(jù)庫(kù),可重復(fù)此參數(shù),每個(gè)數(shù)據(jù)庫(kù)一行replicate-ignore-db=mysql #不同步mysql系統(tǒng)數(shù)據(jù)庫(kù):wq! #保存退出#service mysqld restart #重啟MySQL復(fù)制代碼注意:MySQL 5.1.7版本之后,已經(jīng)不支持把master配置屬性寫(xiě)入my.cnf配置文件中了,只需要把同步的數(shù)據(jù)庫(kù)和要忽略的數(shù)據(jù)庫(kù)寫(xiě)入即可。
mysql -u root -p #進(jìn)入MySQL控制臺(tái)slave stop; #停止slave同步進(jìn)程change master to master_host='192.168.21.169',master_user='replication',master_password='123456',master_log_file='mysql-bin.000001' ,master_log_pos=7131; #執(zhí)行同步語(yǔ)句slave start; #開(kāi)啟slave同步進(jìn)程SHOW SLAVE STATUSG #查看slave同步信息,出現(xiàn)以下內(nèi)容*************************** 1. row *************************** Slave_IO_State:Waiting for master to send event Master_Host:192.168.21.169 Master_User:replication Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000001 Read_Master_Log_Pos:7131 Relay_Log_File:MySQLSlave-relay-bin.000001 Relay_Log_Pos:253 Relay_Master_Log_File:mysql-bin.000001 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB:AMT_DB Replicate_Ignore_DB:mysql Replicate_Do_Table: Replicate_Ignore_Table:1 row in set (0.00 sec)復(fù)制代碼注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上這兩個(gè)參數(shù)的值為Yes,即說(shuō)明配置成功!
六、測(cè)試MySQL主從服務(wù)器雙機(jī)熱備是否成功
1、進(jìn)入MySQL主服務(wù)器
mysql -u root-p #進(jìn)入主服務(wù)器MySQL控制臺(tái)use AMT_DB #進(jìn)入數(shù)據(jù)庫(kù)CREATETABLE test ( id int not null primary key,name char(20)); #創(chuàng)建test復(fù)制代碼2、進(jìn)入MySQL從服務(wù)器
mysql -u root-p #進(jìn)入MySQL控制臺(tái)use AMT_DB #進(jìn)入數(shù)據(jù)庫(kù)show tables; #查看AMT_DB表結(jié)構(gòu),會(huì)看到有一個(gè)新建的表test,表示數(shù)據(jù)庫(kù)同步成功復(fù)制代碼至此,MySQL數(shù)據(jù)庫(kù)配置主從服務(wù)器實(shí)現(xiàn)雙機(jī)熱備
總結(jié)
以上是生活随笔為你收集整理的mysql 导出dmp文件_一文带你了解MySQL主从复制(Master-Slave)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java方面的文献综述怎么写_java论
- 下一篇: mysql的告警日志_运维日记|MySQ