當前位置:首頁 » 操作系統 » mysql遠程資料庫備份

mysql遠程資料庫備份

發布時間: 2023-01-10 16:11:58

A. 怎麼來實現遠程伺服器的Mysql資料庫備份和恢復

現在有個需求需要實現數據的備份和恢復.以前沒碰到過。希望會的給予指點。 問題補充:pxb1988 寫道引用 public static void backup() { String user = "root"; // 資料庫帳號 String password = "root"; // 登陸密碼 String database = "test"; // 需要備份的資料庫名 String filepath = "d:\\finacing.sql"; // 備份的路徑地址 String stmt1 = "mysqlmp " + database +" -h 192.168.5.222 "+ " -u " + user + " -p" + password + " --default-character-set=utf8 --result-file=" + filepath; try { Runtime.getRuntime().exec(stmt1); System.out.println("數據已導出到文件" + filepath + "中"); } catch (IOException e) { e.printStackTrace(); } } 其中的-h 192.168.5.222 換成127.0.0.1或localhost都可以,但換成區域網中的ip就不可以. 但是這樣備份不行還是報錯 錯誤信息如下

B. 遠程備份mysql資料庫,遠程mysql5.5,本地mysql5.1,要使用mysqlmp命令,遠程及本地都是linux環境

遠程備份mysql資料庫,遠程mysql5.5,本地mysql5.1,要使用mysqlmp命令,遠程及本地都是linux環境
mysqlmp在備份遠程資料庫的時候只比本地備份多了-h或-host參數,該參數後面的等於號後面填寫遠程主機的主機名或IP地址即可。此外備份操作與本地使用哪種操作系統關系不大。
舉例:
$ mysqlmp -uroot -p –host=192.168.100.6 –all-databases > mysql.mp

C. 備份mysql數據

其實你的這個問題是mysql中的一個核心問題,既mysql數據的備份和恢復
你可以使用三種方式
1.使用sql語句導入導出
2.使用mysqlmp 和mysqlimport 工具
3.直接 數據文件 既冷備份
你說說的詳細,就給積分,那我就說詳細些

一.使用sql語句完成mysql的備份和恢復

你可以使用SELECT INTO OUTFILE語句備份數據,並用LOAD DATA INFILE語句恢復數據。這種方法只能導出數據的內容,不包括表的結構,如果表的結構文件損壞,你必須要先恢復原來的表的結構。
語法:
SELECT * INTO {OUTFILE | DUMPFILE} 'file_name' FROM tbl_name
LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]
INTO TABLE tbl_name
SELECT ... INTO OUTFILE 'file_name'格式的SELECT語句將選擇的行寫入一個文件。文件在伺服器主機上被創建,並且不能是已經存在的(不管別的,這可阻止資料庫表和文件例如「/etc/passwd」被破壞)。SELECT ... INTO OUTFILE是LOAD DATA INFILE逆操作。
LOAD DATA INFILE語句從一個文本文件中以很高的速度讀入一個表中。如果指定LOCAL關鍵詞,從客戶主機讀文件。如果LOCAL沒指定,文件必須位於伺服器上。(LOCAL在MySQL3.22.6或以後版本中可用。)
為了安全原因,當讀取位於伺服器上的文本文件時,文件必須處於資料庫目錄或可被所有人讀取。另外,為了對伺服器上文件使用LOAD DATA INFILE,在伺服器主機上你必須有file的許可權。使用這種SELECT INTO OUTFILE語句,在伺服器主機上你必須有FILE許可權。
為了避免重復記錄,在表中你需要一個PRIMARY KEY或UNIQUE索引。當在唯一索引值上一個新記錄與一個老記錄重復時,REPLACE關鍵詞使得老記錄用一個新記錄替代。如果你指定IGNORE,跳過有唯一索引的現有行的重復行的輸入。如果你不指定任何一個選項,當找到重復索引值時,出現一個錯誤,並且文本文件的餘下部分被忽略時。
如果你指定關鍵詞LOW_PRIORITY,LOAD DATA語句的執行被推遲到沒有其他客戶讀取表後。
使用LOCAL將比讓伺服器直接存取文件慢些,因為文件的內容必須從客戶主機傳送到伺服器主機。在另一方面,你不需要file許可權裝載本地文件。如果你使用LOCAL關鍵詞從一個本地文件裝載數據,伺服器沒有辦法在操作的當中停止文件的傳輸,因此預設的行為好像IGNORE被指定一樣。
當在伺服器主機上尋找文件時,伺服器使用下列規則:
 如果給出一個絕對路徑名,伺服器使用該路徑名。
 如果給出一個有一個或多個前置部件的相對路徑名,伺服器相對伺服器的數據目錄搜索文件。
 如果給出一個沒有前置部件的一個文件名,伺服器在當前資料庫的資料庫目錄尋找文件。
假定表tbl_name具有一個PRIMARY KEY或UNIQUE索引,備份一個數據表的過程如下:
1、鎖定數據表,避免在備份過程中,表被更新
mysql>LOCK TABLES READ tbl_name;
關於表的鎖定的詳細信息,將在下一章介紹。
2、導出數據
mysql>SELECT * INTO OUTFILE 『tbl_name.bak』 FROM tbl_name;
3、解鎖表
mysql>UNLOCK TABLES;
相應的恢復備份的數據的過程如下:
1、為表增加一個寫鎖定:
mysql>LOCK TABLES tbl_name WRITE;
2、恢復數據
mysql>LOAD DATA INFILE 『tbl_name.bak』
->REPLACE INTO TABLE tbl_name;
如果,你指定一個LOW_PRIORITY關鍵字,就不必如上要對表鎖定,因為數據的導入將被推遲到沒有客戶讀表為止:
mysql>LOAD DATA LOW_PRIORITY INFILE 『tbl_name』
->REPLACE INTO TABLE tbl_name;
3、解鎖表
mysql->UNLOCAK TABLES;
5.3.2使用mysqlimport恢復數據
如果你僅僅恢復數據,那麼完全沒有必要在客戶機中執行SQL語句,因為你可以簡單的使用mysqlimport程序,它完全是與LOAD DATA 語句對應的,由發送一個LOAD DATA INFILE命令到伺服器來運作。執行命令mysqlimport --help,仔細查看輸出,你可以從這里得到幫助。
shell> mysqlimport [options] db_name filename ...
對於在命令行上命名的每個文本文件,mysqlimport剝去文件名的擴展名並且使用它決定哪個表導入文件的內容。例如,名為「patient.txt」、「patient.text」和「patient」將全部被導入名為patient的一個表中。
常用的選項為:
-C, --compress 如果客戶和伺服器均支持壓縮,壓縮兩者之間的所有信息。
-d, --delete 在導入文本文件前倒空表格。
l, --lock-tables 在處理任何文本文件前為寫入所定所有的表。這保證所有的表在伺服器上被同步。
--low-priority,--local,--replace,--ignore分別對應LOAD DATA語句的LOW_PRIORITY,LOCAL,REPLACE,IGNORE關鍵字。
例如恢復資料庫db1中表tbl1的數據,保存數據的文件為tbl1.bak,假定你在伺服器主機上:
shell>mysqlimport --lock-tables --replace db1 tbl1.bak
這樣在恢復數據之前現對表鎖定,也可以利用--low-priority選項:
shell>mysqlimport --low-priority --replace db1 tbl1.bak
如果你為遠程的伺服器恢復數據,還可以這樣:
shell>mysqlimport -C --lock-tables --replace db1 tbl1.bak
當然,解壓縮要消耗CPU時間。
象其它客戶機一樣,你可能需要提供-u,-p選項以通過身分驗證,也可以在選項文件my.cnf中存儲這些參數,具體方法和其它客戶機一樣,這里就不詳述了。

二、使用mysqlmp備份數據
同mysqlimport一樣,也存在一個工具mysqlmp備份數據,但是它比SQL語句多做的工作是可以在導出的文件中包括SQL語句,因此可以備份資料庫表的結構,而且可以備份一個資料庫,甚至整個資料庫系統。
mysqlmp [OPTIONS] database [tables]
mysqlmp [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
mysqlmp [OPTIONS] --all-databases [OPTIONS]
如果你不給定任何錶,整個資料庫將被傾倒。
通過執行mysqlmp --help,你能得到你mysqlmp的版本支持的選項表。
1、備份資料庫的方法
例如,假定你在伺服器主機上備份資料庫db_name
shell> mydqlmp db_name
當然,由於mysqlmp預設時把輸出定位到標准輸出,你需要重定向標准輸出。例如,把資料庫備份到bd_name.bak中:
shell> mydqlmp db_name>db_name.bak
你可以備份多個資料庫,注意這種方法將不能指定數據表:
shell> mydqlmp --databases db1 db1>db.bak
你也可以備份整個資料庫系統的拷貝,不過對於一個龐大的系統,這樣做沒有什麼實際的價值:
shell> mydqlmp --all-databases>db.bak
雖然用mysqlmp導出表的結構很有用,但是恢復大量數據時,眾多SQL語句使恢復的效率降低。你可以通過使用--tab選項,分開數據和創建表的SQL語句。
-T,--tab= 在選項指定的目錄里,創建用製表符(tab)分隔列值的數據文件和包含創建表結構的SQL語句的文件,分別用擴展名.txt和.sql表示。該選項不能與--databases或--all-databases同時使用,並且mysqlmp必須運行在伺服器主機上。
例如,假設資料庫db包括表tbl1,tbl2,你准備備份它們到/var/mysqldb
shell>mysqlmp --tab=/var/mysqldb/ db
其效果是在目錄/var/mysqldb中生成4個文件,分別是tbl1.txt、tbl1.sql、tbl2.txt和tbl2.sql。
2、mysqlmp實用程序時的身份驗證的問題
同其他客戶機一樣,你也必須提供一個MySQL資料庫帳號用來導出資料庫,如果你不是使用匿名用戶的話,可能需要手工提供參數或者使用選項文件:
如果這樣:
shell>mysql -u root –pmypass db_name>db_name.sql
或者這樣在選項文件中提供參數:
[mysqlmp]
user=root
password=mypass
然後執行
shell>mysqlmp db_name>db_name.sql
那麼一切順利,不會有任何問題,但要注意命令歷史會泄漏密碼,或者不能讓任何除你之外的用戶能夠訪問選項文件,由於資料庫伺服器也需要這個選項文件時,選項文件只能被啟動伺服器的用戶(如,mysql)擁有和訪問,以免泄密。在Unix下你還有一個解決辦法,可以在自己的用戶目錄中提供個人選項文件(~/.my.cnf),例如,/home/some_user/.my.cnf,然後把上面的內容加入文件中,注意防止泄密。在NT系統中,你可以簡單的讓c:\my.cnf能被指定的用戶訪問。
你可能要問,為什麼這么麻煩呢,例如,這樣使用命令行:
shell>mysql -u root –p db_name>db_name.sql
或者在選項文件中加入
[mysqlmp]
user=root
password
然後執行命令行:
shell>mysql db_name>db_name.sql
你發現了什麼?往常熟悉的Enter password:提示並沒有出現,因為標准輸出被重定向到文件db_name.sql中了,所以看不到往常的提示符,程序在等待你輸入密碼。在重定向的情況下,再使用交互模式,就會有問題。在上面的情況下,你還可以直接輸入密碼。然後在文件db_name.sql文件的第一行看到:
Enter password:#……..
你可能說問題不大,但是mysqlmp之所以把結果輸出到標准輸出,是為了重定向到其它程序的標准輸入,這樣有利於編寫腳本。例如:
用來自於一個資料庫的信息充實另外一個MySQL資料庫也是有用的:
shell>mysqlmp --opt database | mysql --host=remote-host -C database
如果mysqlmp仍運行在提示輸入密碼的交互模式下,該命令不會成功,但是如果mysql是否運行在提示輸入密碼的交互模式下,都是可以的。
如果在選項文件中的[client]或者[mysqlmp]任何一段中指定了password選項,且不提供密碼,即使,在另一段中有提供密碼的選項password=mypass,例如
[client]
user=root
password
[mysqlmp]
user=admin
password=mypass
那麼mysqlmp一定要你輸入admin用戶的密碼:
mysql>mysqlmp db_name
即使是這樣使用命令行:
mysql>mysqlmp –u root –ppass1 db
也是這樣,不過要如果-u指定的用戶的密碼。
其它使用選項文件的客戶程序也是這樣
3、有關生成SQL語句的優化控制
--add-locks 生成的SQL 語句中,在每個表數據恢復之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。
--add-drop-table 生成的SQL 語句中,在每個create語句之前增加一個drop table。
-e, --extended-insert 使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句)
下面兩個選項能夠加快備份表的速度:
-l, --lock-tables. 為開始導出數據前,讀鎖定所有涉及的表。
-q, --quick 不緩沖查詢,直接傾倒至stdout。
理論上,備份時你應該指定上訴所有選項。這樣會使命令行過於復雜,作為代替,你可以簡單的指定一個--opt選項,它會使上述所有選項有效。
例如,你將導出一個很大的資料庫:
shell> mysqlmp --opt db_name > db_name.txt
當然,使用--tab選項時,由於不生成恢復數據的SQL語句,使用--opt時,只會加快數據導出。
4、恢復mysqlmp備份的數據
由於備份文件是SQL語句的集合,所以需要在批處理模式下使用客戶機
 如果你使用mysqlmp備份單個資料庫或表,即:
shell>mysqlmp --opt db_name > db_name.sql
由於db_name.sql中不包括創建資料庫或者選取資料庫的語句,你需要指定資料庫
shell>mysql db2 < db_name.sql
 如果,你使用--databases或者--all-databases選項,由於導出文件中已經包含創建和選用資料庫的語句,可以直接使用,不比指定資料庫,例如:
shell>mysqlmp --databases db_name > db_name.sql
shell>mysql <db_name.sql
 如果你使用--tab選項備份數據,數據恢復可能效率會高些
例如,備份資料庫db_name後在恢復:
shell>mysqlmp --tab=/path/to/dir --opt test
如果要恢復表的結構,可以這樣:
shell>mysql < /path/to/dir/tbl1.sql

如果要恢復數據,可以這樣
shell>mysqlimport -l db /path/to/dir/tbl1.txt

如果是在Unix平台下使用(推薦),就更方便了:
shell>ls -l *.sql | mysql db
shell>mysqlimport --lock-tables db /path/to/dir/*.txt

三 .用直接拷貝的方法備份恢復
根據本章前兩節的介紹,由於MySQL的資料庫和表是直接通過目錄和表文件實現的,因此直接復制文件來備份資料庫數據,對MySQL來說特別方便。而且自MySQL 3.23起MyISAM表成為預設的表的類型,這種表可以為在不同的硬體體系中共享數據提供了保證。
使用直接拷貝的方法備份時,尤其要注意表沒有被使用,你應該首先對表進行讀鎖定。
備份一個表,需要三個文件:
對於MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的數據文件
tbl_name.MYI 表的索引文件
對於ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的數據文件
tbl_name.ISM 表的索引文件
你直接拷貝文件從一個資料庫伺服器到另一個伺服器,對於MyISAM表,你可以從運行在不同硬體系統的伺服器之間復制文件

像你這個問題,可以把遠程機器的mysql數據目錄ftp下載到你本地的mysql目錄下,重啟mysql就可以了

D. 本地MySQL資料庫怎麼與遠程MySQL資料庫同步

首先備份好你本地的資料庫,方法如下。
1、用APMServ5.2.6(網站上面有下載)帶的phpmyadmin
進行備份恢復。
A、運行APMServ5.2.6,
點擊右邊的「管理MySql
資料庫」。伺服器填寫127.0.0.1:3306,
登入名稱:root,密碼為空進行登錄。在左邊是資料庫列表。點擊你的資料庫。點導出、拉到
最下面把「另存為文件」打勾。點執行。這樣你就可以備份你的資料庫了。
2、運行mySQL-Front
備份恢復你的資料庫。
A、新建一個登錄。
信息欄中隨便寫一下名字。標識你的登錄信息。
B、點擊連接欄,分別填好:
伺服器:伺服器的IP

口:一般為3306
C、點擊注冊欄,分別填好:

戶:你申請的資料庫的用戶名(如果是本地一般為root),

碼:資料庫的密碼(本地為空)
資料庫:你申請的資料庫名。
填寫好這些信息後點擊「確定」這樣就能鏈接到你的遠程資料庫了。左邊這個遠程數據。
伺服器的一些資料庫,點擊你的資料庫後等待鏈接。直至返回所有數據,你便能打開你的資料庫。
中的數據表了。在這里你可以修改你的數據表結構,刪除填加數據等(小心操作)。
D、右鍵點擊你的資料庫進行備份(輸出)數據,有幾種備份的類型,一般選sql。

E. 請問怎麼遠程備份mysql資料庫到本地

提供備份的本地2種方法:
命令行備份到伺服器上下載到本地;
通過客戶端工具將mysql備份並同步下載到本地或者查詢導出到本地;

F. 如何定時備份遠程mysql資料庫

在網路裡面搜索「多備份」,注冊一個賬號
登陸成功後,找到資料庫備份

進行資料庫遠程授權:要備份成功,得先對資料庫進行遠程授權,允許備份主機遠程訪問你的資料庫。

填寫你的資料庫IP,資料庫用戶名,密碼等參數信息

選擇存儲位置,備份頻率等
至此,資料庫備份任務就創建成功了。然後,多備份就會自動定時的幫你備份你的資料庫。

G. 如何設置遠程mysql資料庫自動備份資料庫

使用mysqlmp備份資料庫

但遠程備份一般都比較慢沒辦法保證資料庫的一致性

例如:

備份所有庫
mysqlmp-hxx.xx.xx.xx-P3306-uusername-ppassword--max_allowed_packet=1G-R-E-d--opt--flush-logs--default-character-set=utf8--all-databases>backup.sql

備份單庫
mysqlmp-hxx.xx.xx.xx-P3306-uusername-ppassword--max_allowed_packet=1G-R-E-d--opt--flush-logs--default-character-set=utf8dbname>backup.sql

H. 如何備份MYSQL資料庫

定期的備份可使我們資料庫崩潰造成的損失大大降低。在MySQL中進行數據備份的方法有兩種,一種是使用mysqlmp程序,一種是使用mysqlhot、cp、tar或cpio等打包程序直接拷貝資料庫文件。mysqlmp程序備份資料庫較慢,但它生成的文本文件便於移植。使用mysqlhot等程序備份速度快,因為它直接對系統文件進行操作,需人為協調資料庫數據的備份前後一致性。

使用mysqlmp備份資料庫其實就是把資料庫轉儲成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成資料庫。使用mysqlmp的方法如下:

% mysqlmp --opt testdb | gzip > /data/backup/testdb.bak
#--opt選項會對轉儲過程進行優化,生成的備份文件會小一點,後的管道操作會進行數據壓縮
% mysqlmp --opt testdb mytable1,mytable2 | gzip > /data/backup/testdb_mytable.bak
#可在資料庫後接數據表名,只導出指定的數據表,多個數據表可用逗號分隔

--opt選項還可激活--add-drop-table選項,它將會在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進行數據表的更新,而不會發生「數據表已存在」的錯誤。

用mysqlmp命令還可直接把資料庫轉移到另外一台伺服器上,不用生成備份文件。重復執行可定期更新遠程資料庫。

% mysqladmin -h remote_host create testdb
% mysqlmp --opt testdb | mysql -h remote_host testdb
另外還可通過ssh遠程調用伺服器上的程序,如:
% ssh remote_host mysqladmin create testdb
% mysqlmp --opt testdb | ssh remote_host mysql testdb

通過直接拷貝系統文件的方式備份資料庫,在備份時,要確保沒有人對資料庫進行修改操作。要做到這點,最好關閉伺服器。如果不能關閉的,要以只讀方試鎖定有關數據表。下面是一些示例:

% cp -r db /backup/db #備份db資料庫到/backup/db目錄
% cp table_name.* /backup/db #只備份table_name數據表
% scp -r db remotehot:/usr/local/mysql/data #用scp把資料庫直接拷貝到遠程伺服器

在把資料庫直接拷貝到遠程主機時,應注意兩台機器必須有同樣的硬體結構,或者將拷貝的數據表全部是可移植數據表類型。

使用mysqlhot工具,它是一個Perl DBI腳本,可在不關閉伺服器的情況下備份資料庫,它主要的優點是:

它直接拷貝文件,所以它比mysqlmp快。

可自動完成數據鎖定工作,備份時不用關閉伺服器。

能刷新日誌,使備份文件和日誌文件的檢查點能保持同步。

下面是該工具的使用示例:

% mysqlhot db /bakcup/ #把db資料庫備份到backup/db目錄里,會自動創建一個db目錄

使用BACKUP TABLE語句進行備份,該語句最早出現在MySQL 3.23.25版本中,僅適用於MyISAM數據表。用法如下:

mysql> BACKUP TABLE mytable TO '/backup/db'; #把mytable數據表備份到/backup/db目錄下

為了執行該語句,你必須擁有那些表的FILE許可權和SELECT許可權,備份目錄還必須是伺服器可寫的。該語句執行時,會先把內存中的數據寫入磁碟,再把各個數據表的.frm(表結構定義文件)、.MYD(數據)文件從數據目錄拷貝到備份目錄。它不拷貝.MYI(索引)文件,因為它能用另外兩個文件重建。BACKUP TABLE語句備份時,依次鎖定數據表,當同時備份多個數據表時,數據表可能會被修改,所以備份0完成時,備份文件中的數據和現時數據表中的數據可能會有差異,為了消除該差異,我們可用只讀方式鎖定數據表,在備份完成後再解鎖。如:

mysql> LOCK TABLES tb1 READ,tb2 READ;
mysql> BACKUP TABLE tb1,tb2 TO 'backup/db';
mysql> UNLOCK TABLE

I. 如何實現MySQL資料庫的備份與恢復

在資料庫表丟失或損壞的情況下 備份你的資料庫是很重要的 如果發生系統崩潰 你肯定想能夠將你的表盡可能丟失最少的數據恢復到崩潰發生時的狀態 有時 正是MySQL管理員造成破壞 管理員已經知道表以破壞 用諸如vi或Emacs等編輯器試圖直接編輯它們 這對表絕對不是件好事!備份資料庫兩個主要方法是用mysqlmp程序或直接拷貝資料庫文件(如用cp cpio或tar等) 每種方法都有其優缺點 mysqlmp與MySQL伺服器協同操作 直接拷貝方法在伺服器外部進行 並且你必須採取措施保證沒有客戶正在修改你將拷貝的表 如果你想用文件系統備份來備份資料庫 也會發生同樣的問題 如果資料庫表在文件系統備份過程中被修改 進入備份的表文件主語不一致的狀態 而對以後的恢復表將失去意義 文件系統備份與直接拷貝文件的區別是對後者你完全控制了備份過程 這樣你能採取措施確保伺服器讓表不受干擾 mysqlmp比直接拷貝要慢些 mysqlmp生成能夠移植到其它機器的文本文件 甚至那些有不同硬體結構的機器上 直接拷貝文件不能移植到其它機器上 除非你正在拷貝的表使用MyISAM存儲格式 ISAM表只能在相似的硬體結構的機器上拷貝 在MySQL 中引入的MyISAM表存儲格式解決了該問題 因為該格式是機器無關的 所以直接拷貝文件可以移植到具有不同硬體結構的機器上 只要滿足兩個條件 另一台機器必須也運行MySQL 或以後版本 而且文件必須以MyISAM格式表示 而不是ISAM格式 不管你使用哪種備份方法 如果你需要恢復資料庫 有幾個原則應該遵守 以確保最好的結果 定期實施備份 建立一個計劃並嚴格遵守 讓伺服器執行更新日誌 當你在崩潰後需要恢復數據時 更新日誌將幫助你 在你用備份文件恢復數據到備份時的狀態後 你可以通過運行更新日誌中的查詢再次運用備份後面的修改 這將資料庫中的表恢復到崩潰發生時的狀態 以文件系統備份的術語講 資料庫備份文件代表完全傾倒(full mp) 而更新日誌代表漸進傾倒(incremental mp) 使用一種統一的和易理解的備份文件命名機制 象backup buckup 等不是特別有意義 當實施你的恢復時 你將浪費時間找出文件里是什麼東西 你可能發覺用資料庫名和日期構成備份文件名會很有用 例如 %mysqlmp samp_db >/usr/archives/mysql/samp_db %mysqlmp menagerie >/usr/archives/mysql/menagerie 你可能想在生成備份後壓縮它們 備份一般都很大!你也需要讓你的備份文件有過期期限以避免它們填滿你的磁碟 就象你讓你的日誌文件過期那樣 用文件系統備份備份你的備份文件 如果遇上了一個徹底崩潰 不僅清除了你的數據目錄 也清除了包含你的資料庫備份的磁碟驅動器 你將真正遇上了麻煩 也要備份你的更新日誌 將你的備份文件放在不同於用於你的資料庫的文件系統上 這將降低由於生成備份而填滿包含數據目錄的文件系統的可能性 用於創建備份的技術同樣對拷貝資料庫到另一台機器有用 最常見地 一個資料庫被轉移到了運行在另一台主機上的伺服器 但是你也可以將數據轉移到同一台主機上的另一個伺服器 使用mysqlmp備份和拷貝資料庫 當你使用mysqlmo程序產生資料庫備份文件時 預設地 文件內容包含創建正在傾倒的表的CREATE語句和包含表中行數據的INSERT語句 換句話說 mysqlmp產生的輸出可在以後用作mysql的輸入來重建資料庫 你可以將整個資料庫傾倒進一個單獨的文本文件中 如下 %mysqlmp samp_db >/usr/archives/mysql/samp_db 輸出文件的開頭看起來象這樣 # MySQL Dump ## Host: localhost Database: samp_db# # Server version alpha log## Table structure for table absence #CREATE TABLE absence(student_id int( ) unsigned DEFAULT NOT NULL date date DEFAULT NOT NULL PRIMARY KEY (student_id date));## Dumping data for table absence #INSERT INTO absence VALUES ( );INSERT INTO absence VALUES ( );INSERT INTO absence VALUES ( ); 文件剩下的部分有更多的INSERT和CREATE TABLE語句組成 如果你想壓縮備份 使用類似如下的命令 %mysqlmp samp_db | gzip >/usr/archives/mysql/samp_db gz如果你要一個龐大的資料庫 輸出文件也將很龐大 可能難於管理 如果你願意 你可以在mysqlmp命令行的資料庫名後列出單獨的表名來傾到它們的內容 這將傾倒文件分成較小 更易於管理的文件 下例顯示如何將samp_db資料庫的一些表傾到進分開的文件中 %mysqlmp samp_db student score event absence >grapbook sql%mysqlmp samp_db member president >hist league sql如果你生成准備用於定期刷新另一個資料庫內容的備份文件 你可能想用 add drop table選項 這告訴伺服器將DROP TABLE IF EXISTS語句寫入備份文件 然後 當你取出備份文件並把它裝載進第二個資料庫時 如果表已經存在 你不會得到一個錯誤 如果你倒出一個資料庫以便能把資料庫轉移到另一個伺服器 你甚至不必創建備份文件 要保證資料庫存在於另一台主機 然後用管道傾倒資料庫 這樣mysql能直接讀取mysqlmp的輸出 例如 你想從主機拷貝資料庫samp_db到 可以這樣很容易做到 %mysqladmin h create samp_db%mysqlmp samp_db | mysql h samp_db以後 如果你想再次刷新上的資料庫 跳過mysqladmin命令 但要對mysqlmp加上 add drop table以避免的得到表已存在的錯誤 %mysqlmp add drop table samp_db | mysql h samp_dbmysqlmp其它有用的選項包括 flush logs和 lock tables組合將對你的資料庫檢查點有幫助 lock tables鎖定你正在傾倒的所有表 而 flush logs關閉並重新打開更新日誌文件 新的更新日誌將只包括從備份點起的修改資料庫的查詢 這將設置你的更新日誌檢查點位備份時間 (然而如果你有需要執行個更新的客戶 鎖定所有表對備份期間的客戶訪問不是件好事 )如果你使用 flush logs設置檢查點到備份時 有可能最好是傾倒整個資料庫 如果你傾倒單獨的文件 較難將更新日誌檢查點與備份文件同步 在恢復期間 你通常按資料庫為基礎提取更新日誌內容 對單個表沒有提取更新的選擇 所以你必須自己提取它們 預設地 mysqlmp在寫入前將一個表的整個內容讀進內存 這通常確實不必要 並且實際上如果你有一個大表 幾乎是失敗的 你可用 quick選項告訴mysqlmp只要它檢索出一行就寫出每一行 為了進一步優化傾倒過程 使用 opt而不是 quick opt選項打開其它選項 加速數據的傾倒和把它們讀回 用 opt實施備份可能是最常用的方法 因為備份速度上的優勢 然而 要警告你 opt選項確實有代價 opt優化的是你的備份過程 不是其他客戶對資料庫的訪問 opt選項通過一次鎖定所有表阻止任何人更新你正在傾倒的任何錶 你可在一般資料庫訪問上很容易看到其效果 當你的資料庫一般非常頻繁地使用 只是一天一次地調節備份 一個具有 opt的相反效果的選項是 dedayed 該選項使得mysqlmp寫出INSERT DELAYED語句而不是INSERT語句 如果你將數據文件裝入另一個資料庫並且你想是這個操作對可能出現在該資料庫中的查詢的影響最小 delayed對此很有幫助 press選項在你拷貝資料庫到另一台機器上時很有幫助 因為它減少網路傳輸位元組的數量 下面有一個例子 注意到 press對與遠端主機上的伺服器通信的程序才給出 而不是對與本地主機連接的程序 %mysqlmp opt samp_db | mysql press h samp_dbmysqlmp有很多選項 詳見《MySQL參考手冊》 使用直接拷貝資料庫的備份和拷貝方法 另一種不涉及mysqlmp備份資料庫和表的方式是直接拷貝資料庫表文件 典型地 這用諸如cp tar或cpio實用程序 本文的例子使用cp 當你使用一種直接備份方法時 你必須保證表不在被使用 如果伺服器在你則正在拷貝一個表時改變它 拷貝就失去意義 保證你的拷貝完整性的最好方法是關閉伺服器 拷貝文件 然後重啟伺服器 如果你不想關閉伺服器 要在執行表檢查的同時鎖定伺服器 如果伺服器在運行 相同的制約也適用於拷貝文件 而且你應該使用相同的鎖定協議讓伺服器 安靜下來 假設伺服器關閉或你已經鎖定了你想拷貝的表 下列顯示如何將整個samp_db資料庫備份到一個備份目錄(DATADIR表示伺服器的數據目錄) %cd DATADIR%cp r samp_db /usr/archive/mysql單個表可以如下備份 %cd DATADIR/samp_db%cp member * /usr/archive/mysql/samp_db%cp score * /usr/archive/mysql/samp_db 當你完成了備份時 你可 lishixin/Article/program/MySQL/201311/29384

J. linux mysql怎麼遠程自動備份資料庫備份

Linux下可以利用crontab系統每天定時備份MySQL資料庫,以下是詳細步驟:
1、創建保存備份文件的路徑/mysqldata
#mkdir /mysqldata
2、創建/usr/sbin/bakmysql文件
#vi /usr/sbin/bakmysql
輸入
rq=` date +%Y%m%d `
tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql

或者寫成
rq=` date +%Y%m%d `
mysqlmp –all-databases -u root -p980405 > /mysqldata/mysql$rq.tar.gz
/var/lib/mysql是你資料庫文件的目錄,部分用戶是/usr/local/mysql/data,每個人可能不同
/mysqldata/表示保存備份文件的目錄,這個每個人也可以根據自己的要求來做。

熱點內容
09壓縮餅干 發布:2025-05-15 05:05:58 瀏覽:279
迭代法編程c 發布:2025-05-15 04:58:01 瀏覽:815
用什麼dns伺服器地址快 發布:2025-05-15 04:52:59 瀏覽:27
手機端so反編譯 發布:2025-05-15 04:50:55 瀏覽:610
linuxlamp安裝 發布:2025-05-15 04:50:45 瀏覽:578
sqlplus緩存區怎麼設置 發布:2025-05-15 04:50:44 瀏覽:858
shell腳本環境變數 發布:2025-05-15 04:45:18 瀏覽:693
安卓nba2k18什麼時候出 發布:2025-05-15 04:38:42 瀏覽:393
王者安卓轉蘋果為什麼顯示失敗 發布:2025-05-15 04:35:49 瀏覽:18
手機優酷緩存視頻格式 發布:2025-05-15 04:13:45 瀏覽:210