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

mysql備份遠程資料庫

發布時間: 2023-02-15 00:14:16

① 怎麼來實現遠程伺服器的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就不可以. 但是這樣備份不行還是報錯 錯誤信息如下

② mysql資料庫怎麼遠程備份,導出導入數據啊,望高手指教指導,有重謝

安個資料庫操作的軟體,或者安個網頁形式的MyAdmin

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

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

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/表示保存備份文件的目錄,這個每個人也可以根據自己的要求來做。

⑤ 如何設置遠程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

⑥ 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 TABLES;

使用BACKUP TABLE語句備份的數據表可用RESTORE TABLE重新載入到伺服器。

InnoDB和BDB資料庫也可用mysqlmp和直接拷貝法進行備份。使用直接拷貝法時應注意需把組成InnoDB和BDB資料庫的所有文件都拷貝下來,如InnoDB的.frm文件、日誌文件和表空間配置文件;BDB的數據文件、日誌文件等。

使用鏡像機制進行備份,我們可用SLAVE STOP語句掛起從伺服器的鏡像,在從伺服器上通過直接拷貝法或其它工具製作備份。備份完成,用SLAVE START重新啟動鏡像,從伺服器重新與主伺服器同步,接收備份時主伺服器所做的修改。

在MySQL中沒有為資料庫重命名的命令,但我們可用mysqlmp轉儲資料庫,再創建一個新的空資料庫,把轉儲文件載入到該新資料庫,這樣就完成資料庫重命名的工作。如:

% mysqlmp old_db >db.sql #轉儲db資料庫數據
% mysqladmin create new_db #新建一個空的資料庫
% mysql new_db < db.sql #把db資料庫的數據載入到新的資料庫中
% mysqladmin drop old_db #刪除舊的資料庫

一個更簡單的重命名資料庫的方法是直接修改資料庫目錄名,但該方法不適用於InnoDB和BDB資料庫。注意,在更名後,需在許可權表中更新相關數據表信息,需執行以下語句:

mysql> UPDATE db SET db='new_db' WHERE db='old_db';
mysql> UPDATE tables_priv SET db='new_db' WHERE db='old_db';
mysql> UPDATE columns_priv SET db='new_db' WHERE db='old_db';
mysql> UPDATE host SET db='new_db' WHERE db='old_db';

⑦ 遠程備份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

⑧ 備份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就可以了

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

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

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

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

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

熱點內容
sql多條記錄合並 發布:2025-07-27 12:42:02 瀏覽:508
我的世界怎麼把材質包裝進伺服器電腦版 發布:2025-07-27 12:33:57 瀏覽:396
手游吃雞90幀要什麼配置 發布:2025-07-27 12:31:41 瀏覽:824
壓生庚演算法 發布:2025-07-27 12:31:37 瀏覽:444
伺服器版本更新是什麼意思 發布:2025-07-27 12:25:42 瀏覽:574
安卓畫畫軟體是什麼 發布:2025-07-27 12:25:40 瀏覽:642
python編程入門第3版pdf 發布:2025-07-27 12:25:04 瀏覽:871
唐燃油與h7配置哪個好 發布:2025-07-27 12:24:12 瀏覽:787
上傳圖片兼容ie8 發布:2025-07-27 12:17:45 瀏覽:550
如何配置債券賺錢 發布:2025-07-27 12:17:32 瀏覽:920