日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
MySQL數(shù)據(jù)庫輕松備份至OSS:實(shí)用教程(mysql數(shù)據(jù)庫備份到oss)

MySQL是目前最為流行的關(guān)系型數(shù)據(jù)庫之一。在學(xué)習(xí)、開發(fā)或生產(chǎn)環(huán)境下使用該數(shù)據(jù)庫時(shí),安全備份是非常重要的操作。而阿里云OSS(對(duì)象存儲(chǔ)服務(wù))是一款高可用、可擴(kuò)展的云存儲(chǔ)服務(wù),也是當(dāng)前最為優(yōu)秀的云端備份方案之一。在此,我們將介紹如何使用云備份輕松地將MySQL數(shù)據(jù)庫備份至OSS。

天山網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。成都創(chuàng)新互聯(lián)從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

前置條件

在開始備份操作之前,您需要確保在阿里云上創(chuàng)建了MySQL數(shù)據(jù)庫,同時(shí)在OSS存儲(chǔ)管理中創(chuàng)建了Bucket和Object。

步驟一:安裝OSS工具包

為了連接MySQL和OSS,我們需要安裝一些必要的工具包。在本文中,我們將使用Python編寫的oss2包。

要安裝oss2,您首先需要在計(jì)算機(jī)上安裝Python環(huán)境。如果您已經(jīng)安裝了Python環(huán)境,可以直接在命令行中使用pip安裝oss2包。

在終端中輸入以下指令以安裝oss2:

“`

pip install oss2

“`

當(dāng)oss2安裝成功后,您可以繼續(xù)進(jìn)行下一步。

步驟二:創(chuàng)建備份腳本

在計(jì)算機(jī)上創(chuàng)建一個(gè)Python文件,例如’mysql_backup.py’,用于執(zhí)行MySQL數(shù)據(jù)庫備份并上傳到OSS。下面是為此目的創(chuàng)建的示例腳本:

“`python

# 導(dǎo)入所需的庫

import oss2

import time

import os

import pymysql.cursors

from datetime import datetime

# 配置初始參數(shù)

Mysql_host = ‘your_mysql_host’

Mysql_user = ‘your_mysql_user’

Mysql_password = ‘your_mysql_password’

Mysql_database = ‘your_mysql_database’

Oss_access_key_id = ‘your_oss_access_key_id’

Oss_access_key_secret = ‘your_oss_access_key_secret’

Oss_endpoint = ‘your_oss_endpoint’

Oss_bucket_name = ‘your_oss_bucket_name’

Oss_folder_name = ‘mysql_backup_folder’

# 創(chuàng)建OSS存儲(chǔ)對(duì)象

auth = oss2.Auth(Oss_access_key_id, Oss_access_key_secret)

bucket = oss2.Bucket(auth, Oss_endpoint, Oss_bucket_name)

# 從MySQL服務(wù)器備份數(shù)據(jù)庫

timestamp = datetime.now().strftime(‘%Y-%m-%d_%H-%M-%S’)

backup_file_name = ‘backup_’ + Mysql_database + ‘_’ + timestamp + ‘.sql’

os.system(‘mysqldump -u’ + Mysql_user + ‘ -p’ + Mysql_password + ‘ -h’ + Mysql_host + ‘ ‘ + Mysql_database + ‘ > ‘ + backup_file_name)

# 上傳備份文件到OSS存儲(chǔ)桶中

object_name = Oss_folder_name + ‘/’ + backup_file_name

bucket.put_object_from_file(object_name, backup_file_name)

# 刪除計(jì)算機(jī)上的備份文件

os.remove(backup_file_name)

“`

在此腳本中,我們首先從計(jì)算機(jī)上指定的MySQL服務(wù)器備份了MySQL數(shù)據(jù)庫。然后,我們將備份文件上傳至OSS存儲(chǔ)桶中,并刪除了本地備份文件。請(qǐng)注意,此腳本可將備份文件直接上傳到OSS存儲(chǔ)桶的特定文件夾中。如果您沒有為此目的創(chuàng)建文件夾,請(qǐng)先在OSS管理控制臺(tái)中創(chuàng)建相應(yīng)的文件夾。

步驟三:使用定時(shí)任務(wù)執(zhí)行腳本

備份工作通常定期執(zhí)行,以保證數(shù)據(jù)的連續(xù)備份。由于MySQL和OSS都是基于云的服務(wù),因此在計(jì)劃任務(wù)中使用諸如cron之類的軟件執(zhí)行備份工作是更好的方式。

在Linux操作系統(tǒng)上,可以使用以下命令編輯cron表:

“`

crontab -e

“`

然后,添加以下條目:

“`

0 3 * * * /usr/bin/python /path/to/mysql_backup.py >/dev/null 2>&1

“`

上述條目將每天的凌晨3點(diǎn)執(zhí)行一次備份。除此之外,您還可以根據(jù)需要定制定時(shí)計(jì)劃。

結(jié)尾語

以上就是如何將MySQL數(shù)據(jù)庫備份至OSS的全過程。在實(shí)際的服務(wù)器環(huán)境下,數(shù)據(jù)庫備份是一個(gè)不能忽視的重要工作。使用阿里云的OSS方案,可以大大提高數(shù)據(jù)備份的可靠性和安全性。希望這篇文章可以幫助您輕松地備份和保護(hù)數(shù)據(jù)。

相關(guān)問題拓展閱讀:

  • MYSQL備份數(shù)據(jù)庫
  • 如何備份整個(gè)mysql數(shù)據(jù)庫
  • 備份mysql數(shù)據(jù)

MYSQL備份數(shù)據(jù)庫

定期的備份可使我們數(shù)據(jù)庫崩潰造成的損失大大降低。在MySQL中進(jìn)行數(shù)據(jù)備份的方法有兩種,一種是使用mysqldump程序,一種是使用mysqlhotcopy、cp、tar或cpio等打包程序直接拷貝數(shù)據(jù)庫文件。mysqldump程序備份數(shù)據(jù)庫較慢,但它生成的文本文件便于移植。使用mysqlhotcopy等程序備份速度快,因?yàn)樗苯訉?duì)系統(tǒng)文件進(jìn)行操作,需人為協(xié)調(diào)數(shù)據(jù)庫數(shù)據(jù)的備份前后一致性。

使用mysqldump備份數(shù)據(jù)庫其實(shí)就是把數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)成一系列CREATE TABLE和INSERT語句,通過這些語句我們就可重新生成數(shù)據(jù)庫。使用mysqldump的方法如下:

% mysqldump –opt testdb | gzip > /data/backup/testdb.bak

#–opt選項(xiàng)會(huì)對(duì)轉(zhuǎn)儲(chǔ)過程進(jìn)行優(yōu)化,基悶枯生成的備份文件會(huì)小一點(diǎn),后的管道操作會(huì)進(jìn)行數(shù)據(jù)壓縮

% mysqldump –opt testdb mytable1,mytable2 | gzip > /data/backup/testdb_mytable.bak

#可在數(shù)據(jù)庫后接數(shù)據(jù)表名,只導(dǎo)出指定的數(shù)據(jù)表,多個(gè)數(shù)據(jù)表可用逗號(hào)分隔

–opt選項(xiàng)還可激活–add-drop-table選項(xiàng),它將會(huì)在備份文件的每條CREATE TABLE前加上一條DROP TABLE IF EXISTS語句。這可方便進(jìn)行數(shù)據(jù)表的更新,而不會(huì)發(fā)生“數(shù)據(jù)表已存在”的錯(cuò)誤。

用mysqldump命令還可直接把數(shù)據(jù)庫轉(zhuǎn)移到另外一臺(tái)服務(wù)器上,不用生成備份文件。重復(fù)執(zhí)行可定期更新遠(yuǎn)程數(shù)據(jù)庫。

% mysqladmin -h remote_host create testdb

% mysqldump –opt testdb | mysql -h remote_host testdb

另外還可通過ssh遠(yuǎn)程調(diào)用服務(wù)器上的程序,如:

% ssh remote_host mysqladmin create testdb

% mysqldump –opt testdb | ssh remote_host mysql testdb

通過直接拷貝系統(tǒng)文件的方式備份數(shù)據(jù)庫,在備份時(shí),要確保沒有人對(duì)數(shù)據(jù)庫進(jìn)行修改操作。要做到這點(diǎn),更好關(guān)閉服務(wù)器。如果不能關(guān)閉罩鉛的,要以只讀方試鎖定有關(guān)數(shù)據(jù)表。下面是一些示例:

% cp -r db /backup/db #備份db數(shù)據(jù)庫到/backup/db目錄

% cp table_name.* /backup/db#只備份table_name數(shù)據(jù)表

% scp -r db remotehot:/usr/local/mysql/data#用scp把數(shù)據(jù)庫直接拷貝到遠(yuǎn)程服務(wù)器

在把數(shù)據(jù)庫直接拷貝到遠(yuǎn)程主機(jī)時(shí),應(yīng)注意兩臺(tái)機(jī)器必須有同樣的硬件結(jié)構(gòu),或者將拷貝的數(shù)據(jù)表全部是可移植數(shù)據(jù)表類型。

使用mysqlhotcopy工具,它是一個(gè)Perl DBI腳本,可在不關(guān)閉服務(wù)器的情況下備份數(shù)據(jù)庫,它主要的優(yōu)點(diǎn)是:

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

可自動(dòng)完成數(shù)據(jù)鎖定工作,備份時(shí)不用關(guān)閉服務(wù)器。

能刷新日志,使備份文件和日志文件的檢查點(diǎn)能保持同步。

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

% mysqlhotcopy db /bakcup/ #把db數(shù)據(jù)庫備份到backup/db目錄里,會(huì)自動(dòng)創(chuàng)建一個(gè)db目錄

使用BACKUP TABLE語句進(jìn)行備份,該語句最早出現(xiàn)在MySQL 3.23.25版本中,僅適用于MyISAM數(shù)據(jù)表。用法如下:

mysql> BACKUP TABLE mytable TO ‘/backup/db’;#把mytable數(shù)據(jù)表備份到/backup/db目錄下

為了執(zhí)行該語句,你必須擁搏洞有那些表的FILE權(quán)限和SELECT權(quán)限,備份目錄還必須是服務(wù)器可寫的。該語句執(zhí)行時(shí),會(huì)先把內(nèi)存中的數(shù)據(jù)寫入磁盤,再把各個(gè)數(shù)據(jù)表的.frm(表結(jié)構(gòu)定義文件)、.MYD(數(shù)據(jù))文件從數(shù)據(jù)目錄拷貝到備份目錄。它不拷貝.MYI(索引)文件,因?yàn)樗苡昧硗鈨蓚€(gè)文件重建。BACKUP TABLE語句備份時(shí),依次鎖定數(shù)據(jù)表,當(dāng)同時(shí)備份多個(gè)數(shù)據(jù)表時(shí),數(shù)據(jù)表可能會(huì)被修改,所以備份0完成時(shí),備份文件中的數(shù)據(jù)和現(xiàn)時(shí)數(shù)據(jù)表中的數(shù)據(jù)可能會(huì)有差異,為了消除該差異,我們可用只讀方式鎖定數(shù)據(jù)表,在備份完成后再解鎖。如:

mysql> LOCK TABLES tb1 READ,tb2 READ;

mysql> BACKUP TABLE tb1,tb2 TO ‘backup/db’;

mysql> UNLOCK TABLES;

使用BACKUP TABLE語句備份的數(shù)據(jù)表可用RESTORE TABLE重新加載到服務(wù)器。

InnoDB和BDB數(shù)據(jù)庫也可用mysqldump和直接拷貝法進(jìn)行備份。使用直接拷貝法時(shí)應(yīng)注意需把組成InnoDB和BDB數(shù)據(jù)庫的所有文件都拷貝下來,如InnoDB的.frm文件、日志文件和表空間配置文件;BDB的數(shù)據(jù)文件、日志文件等。

使用鏡像機(jī)制進(jìn)行備份,我們可用SLAVE STOP語句掛起從服務(wù)器的鏡像,在從服務(wù)器上通過直接拷貝法或其它工具制作備份。備份完成,用SLAVE START重新啟動(dòng)鏡像,從服務(wù)器重新與主服務(wù)器同步,接收備份時(shí)主服務(wù)器所做的修改。

在MySQL中沒有為數(shù)據(jù)庫重命名的命令,但我們可用mysqldump轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫,再創(chuàng)建一個(gè)新的空數(shù)據(jù)庫,把轉(zhuǎn)儲(chǔ)文件加載到該新數(shù)據(jù)庫,這樣就完成數(shù)據(jù)庫重命名的工作。如:

% mysqldump old_db >db.sql#轉(zhuǎn)儲(chǔ)db數(shù)據(jù)庫數(shù)據(jù)

% mysqladmin create new_db#新建一個(gè)空的數(shù)據(jù)庫

% mysql new_db 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’;

如何備份整個(gè)mysql數(shù)據(jù)庫

1、首先打開mysql數(shù)據(jù)庫軟件進(jìn)入軟件主界面。

2、然后再左側(cè)樹里打開自己的的數(shù)據(jù)庫。

3、然后需要點(diǎn)擊需要備份的數(shù)據(jù)庫名。

4、如圖所示為打開數(shù)據(jù)庫后界面。

5、然指凳后需要點(diǎn)擊轉(zhuǎn)儲(chǔ)sql文件選項(xiàng)。

6、然后需要打開選唯茄旅擇存儲(chǔ)文件路徑并選擇保存。

7、點(diǎn)擊保存即可在路徑備份好格式為sql的數(shù)據(jù)納粗庫文件。

Mysql數(shù)據(jù)庫的常用備份方法是使用使用實(shí)用程序mysqldump, 其命令格式如下

 # mysqldump database

  其參數(shù)的含義為:

  options:代表mysqldump的選項(xiàng),通過哪州mysqldump –help可以查到。

  database: 代表將要備份的數(shù)據(jù)庫

  李棚蔽tables: 代表將要備份的表,如果不指定任何表,則備份整個(gè)數(shù)據(jù)庫。

  使用 mysqldump進(jìn)行備份非常簡單,如果要備份數(shù)據(jù)庫” phpbb_db_backup ”,使用命令:

#mysqldump –u -p phpbb_db_backup > /usr/backups/mysql/ phpbb_db_backup.2023.5.6

  還可以使用gzip命令對(duì)備份文件進(jìn)行壓縮:

#mysqldump phpbb_db_backup | gzip > /usr/backups/和攔mysql/ phpbb_db_backup.2023.5.6。gz

  恢復(fù)數(shù)據(jù)使用命令:

#mysql –u -p phpbb_db_backup INSTALL COMPONENT “

2、在全備前開啟page-track

SELECT mysqlbackup_page_track_set(true);

3、全備之后,做增量備份時(shí)指定若滿足page tracking條件,默認(rèn)會(huì)使用page-track模式,否則會(huì)使用full-scan模式,也可以指定–incremental=page-track。

mysqlbackup –incremental-backup-dir=backup_incr –trace=3 –incremental=page-track –incremental-base=history:last_full_backup backup

incremental-base有3種選擇

last_backup:基于前一次備份做增備,前一次備份可能是增備,也可能是全備。這種方式全備之間可能會(huì)有多個(gè)增備,每次增量可能比較小,但恢復(fù)時(shí)需要逐個(gè)合并。

last_full_backup:基于前一次全備做增備。這種方式增備會(huì)越往后體積可能越大,但恢復(fù)時(shí)只需要合并最后一次增量備份。

dir:基于前一次的備份目錄,前一次備份可能是增備,也可能是全備。

測試對(duì)比full-scan 和page-track ,在變更頁小于總體50%的情況下 ,備份效率至少能有1倍的速度提升。

page-track 模式 磁盤讀寫均衡,說明讀寫的都是修改頁面。

請(qǐng)點(diǎn)擊輸入圖片描述

full-scan模式 磁盤讀寫差別很大,說明讀了很多未修改的頁面。

備份mysql數(shù)據(jù)

mysqldump -h 遠(yuǎn)程數(shù)據(jù)庫ip -u 用戶名 -p 密碼

數(shù)據(jù)庫名>test.sql

其實(shí)你的這個(gè)問題是mysql中的一個(gè)核心問題,既mysql數(shù)據(jù)的備份和恢復(fù)

你可以使用三種方式

1.使用sql語句導(dǎo)入導(dǎo)出

2.使用mysqldump 和mysqlimport 工具

3.直接copy 數(shù)據(jù)文件 既冷備份

你說說的詳細(xì),就給積分,那我就說詳細(xì)些

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

你可以使用SELECT INTO OUTFILE語句備份數(shù)據(jù),并用LOAD DATA INFILE語句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來的表的結(jié)構(gòu)。

語法:

SELECT * INTO {OUTFILE | DUMPFILE} ‘file_name’ FROM tbl_name

LOAD DATA INFILE ‘file_name.txt’

INTO TABLE tbl_name

SELECT … INTO OUTFILE ‘file_name’格式的SELECT語句將選擇的行寫入一個(gè)文件。文件在服務(wù)器主機(jī)上被創(chuàng)建,并且不能是已經(jīng)存在的(不管別的,這可阻止數(shù)據(jù)庫表和文件例如“/etc/passwd”被破壞)。SELECT … INTO OUTFILE是LOAD DATA INFILE逆操作。

LOAD DATA INFILE語句從一個(gè)文本文件中以很高的速度讀入一個(gè)表中。如果指定LOCAL關(guān)鍵詞,從客戶主機(jī)讀文件。如果LOCAL沒指定,文件必須位于服務(wù)器上。(LOCAL在MySQL3.22.6或以后版本中可用。)

為了安全原因,當(dāng)讀取位于服務(wù)器上的文本文件時(shí),文件必須處于數(shù)據(jù)庫目錄或可被所有人讀取。另外,為了對(duì)服務(wù)器上文件使用LOAD DATA INFILE,在服務(wù)器主機(jī)上你必須有file的權(quán)限。使用這種SELECT INTO OUTFILE語句,在服務(wù)器主機(jī)上你必須有FILE權(quán)限。

為了避免重復(fù)記錄,在表中你需要一個(gè)PRIMARY KEY或UNIQUE索引。當(dāng)在唯一索引值上一個(gè)新記錄與一個(gè)老記錄重復(fù)時(shí),REPLACE關(guān)鍵詞使得老記錄用一個(gè)新記錄替代。如果你指定IGNORE,跳過有唯一索引的現(xiàn)有行的重復(fù)行的輸入。如果你不指定任何一個(gè)選項(xiàng),當(dāng)找到重復(fù)索引值時(shí),出現(xiàn)一個(gè)錯(cuò)誤,并且文本文件的余下部分被忽略時(shí)衡模。

如果你指定關(guān)鍵詞LOW_PRIORITY,LOAD DATA語句的執(zhí)行被推遲到?jīng)]有其他客戶讀取表后。

使用LOCAL將比讓服務(wù)器直接存取文件慢些,因?yàn)槲募膬?nèi)容必須從客戶主機(jī)傳送到服務(wù)器主機(jī)。在另一方面,你不需要file權(quán)限裝載本地文件。如果你使用LOCAL關(guān)鍵詞從一個(gè)本地文件裝載數(shù)據(jù),服務(wù)器沒銷攔絕有辦法在操作的當(dāng)中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣。

當(dāng)在服務(wù)器主機(jī)上尋找文件時(shí),服務(wù)器使用下列規(guī)則:

? 如虧姿果給出一個(gè)絕對(duì)路徑名,服務(wù)器使用該路徑名。

? 如果給出一個(gè)有一個(gè)或多個(gè)前置部件的相對(duì)路徑名,服務(wù)器相對(duì)服務(wù)器的數(shù)據(jù)目錄搜索文件。

? 如果給出一個(gè)沒有前置部件的一個(gè)文件名,服務(wù)器在當(dāng)前數(shù)據(jù)庫的數(shù)據(jù)庫目錄尋找文件。

假定表tbl_name具有一個(gè)PRIMARY KEY或UNIQUE索引,備份一個(gè)數(shù)據(jù)表的過程如下:

1、鎖定數(shù)據(jù)表,避免在備份過程中,表被更新

mysql>LOCK TABLES READ tbl_name;

關(guān)于表的鎖定的詳細(xì)信息,將在下一章介紹。

2、導(dǎo)出數(shù)據(jù)

mysql>SELECT * INTO OUTFILE ‘tbl_name.bak’ FROM tbl_name;

3、解鎖表

mysql>UNLOCK TABLES;

相應(yīng)的恢復(fù)備份的數(shù)據(jù)的過程如下:

1、為表增加一個(gè)寫鎖定:

mysql>LOCK TABLES tbl_name WRITE;

2、恢復(fù)數(shù)據(jù)

mysql>LOAD DATA INFILE ‘tbl_name.bak’

->REPLACE INTO TABLE tbl_name;

如果,你指定一個(gè)LOW_PRIORITY關(guān)鍵字,就不必如上要對(duì)表鎖定,因?yàn)閿?shù)據(jù)的導(dǎo)入將被推遲到?jīng)]有客戶讀表為止:

mysql>LOAD DATA LOW_PRIORITY INFILE ‘tbl_name’

->REPLACE INTO TABLE tbl_name;

3、解鎖表

mysql->UNLOCAK TABLES;

5.3.2使用mysqlimport恢復(fù)數(shù)據(jù)

如果你僅僅恢復(fù)數(shù)據(jù),那么完全沒有必要在客戶機(jī)中執(zhí)行SQL語句,因?yàn)槟憧梢院唵蔚氖褂胢ysqlimport程序,它完全是與LOAD DATA 語句對(duì)應(yīng)的,由發(fā)送一個(gè)LOAD DATA INFILE命令到服務(wù)器來運(yùn)作。執(zhí)行命令mysqlimport –help,仔細(xì)查看輸出,你可以從這里得到幫助。

shell> mysqlimport db_name filename …

對(duì)于在命令行上命名的每個(gè)文本文件,mysqlimport剝?nèi)ノ募臄U(kuò)展名并且使用它決定哪個(gè)表導(dǎo)入文件的內(nèi)容。例如,名為“patient.txt”、“patient.text”和“patient”將全部被導(dǎo)入名為patient的一個(gè)表中。

常用的選項(xiàng)為:

-C, –compress 如果客戶和服務(wù)器均支持壓縮,壓縮兩者之間的所有信息。

-d, –delete 在導(dǎo)入文本文件前倒空表格。

l, –lock-tables 在處理任何文本文件前為寫入所定所有的表。這保證所有的表在服務(wù)器上被同步。

–low-priority,–local,–replace,–ignore分別對(duì)應(yīng)LOAD DATA語句的LOW_PRIORITY,LOCAL,REPLACE,IGNORE關(guān)鍵字。

例如恢復(fù)數(shù)據(jù)庫db1中表tbl1的數(shù)據(jù),保存數(shù)據(jù)的文件為tbl1.bak,假定你在服務(wù)器主機(jī)上:

shell>mysqlimport –lock-tables –replace db1 tbl1.bak

這樣在恢復(fù)數(shù)據(jù)之前現(xiàn)對(duì)表鎖定,也可以利用–low-priority選項(xiàng):

shell>mysqlimport –low-priority –replace db1 tbl1.bak

如果你為遠(yuǎn)程的服務(wù)器恢復(fù)數(shù)據(jù),還可以這樣:

shell>mysqlimport -C –lock-tables –replace db1 tbl1.bak

當(dāng)然,解壓縮要消耗CPU時(shí)間。

象其它客戶機(jī)一樣,你可能需要提供-u,-p選項(xiàng)以通過身分驗(yàn)證,也可以在選項(xiàng)文件my.cnf中存儲(chǔ)這些參數(shù),具體方法和其它客戶機(jī)一樣,這里就不詳述了。

二、使用mysqldump備份數(shù)據(jù)

同mysqlimport一樣,也存在一個(gè)工具mysqldump備份數(shù)據(jù),但是它比SQL語句多做的工作是可以在導(dǎo)出的文件中包括SQL語句,因此可以備份數(shù)據(jù)庫表的結(jié)構(gòu),而且可以備份一個(gè)數(shù)據(jù)庫,甚至整個(gè)數(shù)據(jù)庫系統(tǒng)。

mysqldump database

mysqldump –databases DB1

mysqldump –all-databases

如果你不給定任何表,整個(gè)數(shù)據(jù)庫將被傾倒。

通過執(zhí)行mysqldump –help,你能得到你mysqldump的版本支持的選項(xiàng)表。

1、備份數(shù)據(jù)庫的方法

例如,假定你在服務(wù)器主機(jī)上備份數(shù)據(jù)庫db_name

shell> mydqldump db_name

當(dāng)然,由于mysqldump缺省時(shí)把輸出定位到標(biāo)準(zhǔn)輸出,你需要重定向標(biāo)準(zhǔn)輸出。例如,把數(shù)據(jù)庫備份到bd_name.bak中:

shell> mydqldump db_name>db_name.bak

你可以備份多個(gè)數(shù)據(jù)庫,注意這種方法將不能指定數(shù)據(jù)表:

shell> mydqldump –databases db1 db1>db.bak

你也可以備份整個(gè)數(shù)據(jù)庫系統(tǒng)的拷貝,不過對(duì)于一個(gè)龐大的系統(tǒng),這樣做沒有什么實(shí)際的價(jià)值:

shell> mydqldump –all-databases>db.bak

雖然用mysqldump導(dǎo)出表的結(jié)構(gòu)很有用,但是恢復(fù)大量數(shù)據(jù)時(shí),眾多SQL語句使恢復(fù)的效率降低。你可以通過使用–tab選項(xiàng),分開數(shù)據(jù)和創(chuàng)建表的SQL語句。

-T,–tab= 在選項(xiàng)指定的目錄里,創(chuàng)建用制表符(tab)分隔列值的數(shù)據(jù)文件和包含創(chuàng)建表結(jié)構(gòu)的SQL語句的文件,分別用擴(kuò)展名.txt和.sql表示。該選項(xiàng)不能與–databases或–all-databases同時(shí)使用,并且mysqldump必須運(yùn)行在服務(wù)器主機(jī)上。

例如,假設(shè)數(shù)據(jù)庫db包括表tbl1,tbl2,你準(zhǔn)備備份它們到/var/mysqldb

shell>mysqldump –tab=/var/mysqldb/ db

其效果是在目錄/var/mysqldb中生成4個(gè)文件,分別是tbl1.txt、tbl1.sql、tbl2.txt和tbl2.sql。

2、mysqldump實(shí)用程序時(shí)的身份驗(yàn)證的問題

同其他客戶機(jī)一樣,你也必須提供一個(gè)MySQL數(shù)據(jù)庫帳號(hào)用來導(dǎo)出數(shù)據(jù)庫,如果你不是使用匿名用戶的話,可能需要手工提供參數(shù)或者使用選項(xiàng)文件:

如果這樣:

shell>mysql -u root –pmypass db_name>db_name.sql

或者這樣在選項(xiàng)文件中提供參數(shù):

user=root

password=mypass

然后執(zhí)行

shell>mysqldump db_name>db_name.sql

那么一切順利,不會(huì)有任何問題,但要注意命令歷史會(huì)泄漏密碼,或者不能讓任何除你之外的用戶能夠訪問選項(xiàng)文件,由于數(shù)據(jù)庫服務(wù)器也需要這個(gè)選項(xiàng)文件時(shí),選項(xiàng)文件只能被啟動(dòng)服務(wù)器的用戶(如,mysql)擁有和訪問,以免泄密。在Unix下你還有一個(gè)解決辦法,可以在自己的用戶目錄中提供個(gè)人選項(xiàng)文件(~/.my.cnf),例如,/home/some_user/.my.cnf,然后把上面的內(nèi)容加入文件中,注意防止泄密。在NT系統(tǒng)中,你可以簡單的讓c:\my.cnf能被指定的用戶訪問。

你可能要問,為什么這么麻煩呢,例如,這樣使用命令行:

shell>mysql -u root –p db_name>db_name.sql

或者在選項(xiàng)文件中加入

user=root

password

然后執(zhí)行命令行:

shell>mysql db_name>db_name.sql

你發(fā)現(xiàn)了什么?往常熟悉的Enter password:提示并沒有出現(xiàn),因?yàn)闃?biāo)準(zhǔn)輸出被重定向到文件db_name.sql中了,所以看不到往常的提示符,程序在等待你輸入密碼。在重定向的情況下,再使用交互模式,就會(huì)有問題。在上面的情況下,你還可以直接輸入密碼。然后在文件db_name.sql文件的之一行看到:

Enter password:#……..

你可能說問題不大,但是mysqldump之所以把結(jié)果輸出到標(biāo)準(zhǔn)輸出,是為了重定向到其它程序的標(biāo)準(zhǔn)輸入,這樣有利于編寫腳本。例如:

用來自于一個(gè)數(shù)據(jù)庫的信息充實(shí)另外一個(gè)MySQL數(shù)據(jù)庫也是有用的:

shell>mysqldump –opt database | mysql –host=remote-host -C database

如果mysqldump仍運(yùn)行在提示輸入密碼的交互模式下,該命令不會(huì)成功,但是如果mysql是否運(yùn)行在提示輸入密碼的交互模式下,都是可以的。

如果在選項(xiàng)文件中的或者任何一段中指定了password選項(xiàng),且不提供密碼,即使,在另一段中有提供密碼的選項(xiàng)password=mypass,例如

user=root

password

user=admin

password=mypass

那么mysqldump一定要你輸入admin用戶的密碼:

mysql>mysqldump db_name

即使是這樣使用命令行:

mysql>mysqldump –u root –ppass1 db

也是這樣,不過要如果-u指定的用戶的密碼。

其它使用選項(xiàng)文件的客戶程序也是這樣

3、有關(guān)生成SQL語句的優(yōu)化控制

–add-locks 生成的SQL 語句中,在每個(gè)表數(shù)據(jù)恢復(fù)之前增加LOCK TABLES并且之后UNLOCK TABLE。(為了使得更快地插入到MySQL)。

–add-drop-table 生成的SQL 語句中,在每個(gè)create語句之前增加一個(gè)drop table。

-e, –extended-insert 使用全新多行INSERT語法。(給出更緊縮并且更快的插入語句)

下面兩個(gè)選項(xiàng)能夠加快備份表的速度:

-l, –lock-tables. 為開始導(dǎo)出數(shù)據(jù)前,讀鎖定所有涉及的表。

-q, –quick 不緩沖查詢,直接傾倒至stdout。

理論上,備份時(shí)你應(yīng)該指定上訴所有選項(xiàng)。這樣會(huì)使命令行過于復(fù)雜,作為代替,你可以簡單的指定一個(gè)–opt選項(xiàng),它會(huì)使上述所有選項(xiàng)有效。

例如,你將導(dǎo)出一個(gè)很大的數(shù)據(jù)庫:

shell> mysqldump –opt db_name > db_name.txt

當(dāng)然,使用–tab選項(xiàng)時(shí),由于不生成恢復(fù)數(shù)據(jù)的SQL語句,使用–opt時(shí),只會(huì)加快數(shù)據(jù)導(dǎo)出。

4、恢復(fù)mysqldump備份的數(shù)據(jù)

由于備份文件是SQL語句的,所以需要在批處理模式下使用客戶機(jī)

? 如果你使用mysqldump備份單個(gè)數(shù)據(jù)庫或表,即:

shell>mysqldump –opt db_name > db_name.sql

由于db_name.sql中不包括創(chuàng)建數(shù)據(jù)庫或者選取數(shù)據(jù)庫的語句,你需要指定數(shù)據(jù)庫

shell>mysql db2 mysqldump –databases db_name > db_name.sql

shell>mysql mysqldump –tab=/path/to/dir –opt test

如果要恢復(fù)表的結(jié)構(gòu),可以這樣:

shell>mysql mysqlimport -l db /path/to/dir/tbl1.txt

如果是在Unix平臺(tái)下使用(推薦),就更方便了:

shell>ls -l *.sql | mysql db

shell>mysqlimport –lock-tables db /path/to/dir/*.txt

三 .用直接拷貝的方法備份恢復(fù)

根據(jù)本章前兩節(jié)的介紹,由于MySQL的數(shù)據(jù)庫和表是直接通過目錄和表文件實(shí)現(xiàn)的,因此直接復(fù)制文件來備份數(shù)據(jù)庫數(shù)據(jù),對(duì)MySQL來說特別方便。而且自MySQL 3.23起MyISAM表成為缺省的表的類型,這種表可以為在不同的硬件體系享數(shù)據(jù)提供了保證。

使用直接拷貝的方法備份時(shí),尤其要注意表沒有被使用,你應(yīng)該首先對(duì)表進(jìn)行讀鎖定。

備份一個(gè)表,需要三個(gè)文件:

對(duì)于MyISAM表:

tbl_name.frm 表的描述文件

tbl_name.MYD 表的數(shù)據(jù)文件

tbl_name.MYI 表的索引文件

對(duì)于ISAM表:

tbl_name.frm 表的描述文件

tbl_name.ISD 表的數(shù)據(jù)文件

tbl_name.I 表的索引文件

你直接拷貝文件從一個(gè)數(shù)據(jù)庫服務(wù)器到另一個(gè)服務(wù)器,對(duì)于MyISAM表,你可以從運(yùn)行在不同硬件系統(tǒng)的服務(wù)器之間復(fù)制文件

像你這個(gè)問題,可以把遠(yuǎn)程機(jī)器的mysql數(shù)據(jù)目錄ftp下載到你本地的mysql目錄下,重啟mysql就可以了

如果兩個(gè)數(shù)據(jù)庫版本是一樣的頌消

直接野并知復(fù)制文件過來就行了,,data文件夾下面以數(shù)據(jù)庫名為文蔽肆件名的文件

利用mysqldump導(dǎo)出來也可以,,

mysql數(shù)據(jù)庫備份到oss的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于mysql數(shù)據(jù)庫備份到oss,MySQL數(shù)據(jù)庫輕松備份至OSS: 實(shí)用教程,MYSQL備份數(shù)據(jù)庫,如何備份整個(gè)mysql數(shù)據(jù)庫,備份mysql數(shù)據(jù)的信息別忘了在本站進(jìn)行查找喔。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


分享文章:MySQL數(shù)據(jù)庫輕松備份至OSS:實(shí)用教程(mysql數(shù)據(jù)庫備份到oss)
鏈接地址:http://m.5511xx.com/article/cdpecji.html