1. 程式人生 > >mysql備份/恢復策略

mysql備份/恢復策略

需要考慮的一些因素。
1.確定要備份的表的儲存引擎是事務型還是非事務性,兩種不同的儲存引擎備份方式在處理資料一致性方面是不太一樣的。
2.確定使用全備份還是增量備份。全備份的優點是備份保持最新備份恢復的時候可以花費更少的時間缺點是如果資料量大,將會花費很多的時間,並對系統造成較長時間的壓力。增量備份則恰恰相反,只需要備份每天的增量日誌,備份時間少,對負載壓力也小;缺點就是恢復的時候需要全備份加上次備份到故障前的所有日誌,恢復時間會長些。
3.可以考慮採取複製的方法來做異地備份,但是記住,複製不能代替備份,它對資料庫的誤操作也無能為力,要定期做備份,備份的週期要充分考慮系統可以承受的恢復時間。備份要在系統負載較小的時候進行。確保MySQL開啟log-bin選項有了BINLOGMySQL才可以在必要的時候做完整恢復或基於時間點的恢復或基於位置的恢復。要經常做備份恢復測試確保備份是有效的並且是可以恢復的
邏輯備份和恢復
在MySQL裡面邏輯備份的最大優點是對於各種儲存引擎都可以用同樣的方法來備份而物理備份則不同不同的儲存引擎有著不同的備份方法。因此對於不同儲存引擎混合的資料庫用邏輯備份會更簡單一些。本節將詳細介紹邏輯備份以及相應的恢復方法
備份

 shell> mysqldump [options] db_name [tables]

 備份指定的一個或多個數據庫。

shell> mysqldump [options] ---database DB1 [DB2 DB3...]

 備份所有資料庫。

shell> mysqldump [options] --all-databases

2.備份資料庫test
[[email protected] ~]$ mysqldump –u root -p test > test.sql
Enter password
3.備份資料庫test下的表emp

[zzx@localhost ~]$ mysqldump -uroot -p test emp > emp.sqlEnter password

4備份資料庫test下的表emp和dept

[zzx@localhost ~]$ mysqldump -uroot -p test emp dept > emp_dept.sqlEnter password

5備份資料庫test下的所有表為逗號分割的文字備份到/tmp

[root@localhost tmp]# mysqldump -uroot -T /tmp test emp --    fields-terminated-by ','
[root@localhost tmp]# more emp.txt 1,z1 2,z2 3,z3 4,z4 1,z

其中mysqldump的選項很多具體可以使用“–help”引數檢視
mysqldump --help
需要強調的是,為了保證資料備份的一致性MyISAM儲存引擎在備份的時候需要加上-l引數表示將所有表加上讀鎖在備份期間所有表將只能讀而不能進行資料更新。但是對於事務儲存引擎InnoDB和BDB來說可以採用更好的選項–single-transaction此選項將使得InnoDB儲存引擎得到一個快照Snapshot使得備份的資料能夠保證一致性
完全恢復
mysqldump的恢復也很簡單將備份作為輸入執行即可具體語法如下

mysql –uroot –p dbname < bakfile

注意將備份恢復後資料並不完整還需要將備份後執行的日誌進行重做語法如下

[root@localhost mysql]# mysqldump  -uroot –p –l –F test >test.dmpEnter password

其中-l引數表示給所有表加讀鎖-F表示生成一個新的日誌檔案此時test中emp表的資料如下

mysql> select * from emp order by id;
+------+------+
| id   | name |
+------+------+
|    1 | z1   | 
|    2 | z2   | 
|    3 | z3   | 
|    4 | z4   | 
+------+------+
4 rows in set (0.00 sec

基於時間點恢復
由於誤操作比如誤刪除了一張表這時使用完全恢復是沒有用的因為日誌裡面還存在誤操作的語句我們需要的是恢復到誤操作之前的狀態然後跳過誤操作語句再恢復後面執行的語句完成我們的恢復。這種恢復叫不完全恢復在MySQL中不完全恢復分為基於時間點的恢復和基於位置的恢復。以下是基於時間點恢復的操作步驟:
1如果上午10點發生了誤操作可以用以下語句用備份和BINLOG將資料恢復到故障前

shell>mysqlbinlog --stop-date="2005-04-20 9:59:59" /var/log/mysql/bin.123456 | mysql -uroot –pmypw

2跳過故障時的時間點繼續執行後面的BINLOG完成恢復

shell>mysqlbinlog --start-date="2005-04-20 10:01:00" /var/log/mysql/bin.123456| mysql -uroot -pmypwd 

基於位置恢復
和基於時間點的恢復類似但是更精確因為同一個時間點可能有很多條SQL語句同時執行。恢復的操作步驟如下。1在shell下執行如下命令

shell>mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-2010:05:00" /var/log/mysql/bin.123456 > /tmp/mysql_restore.sql 

該命令將在/tmp目錄建立小的文字檔案編輯此檔案找到出錯語句前後的位置號例如前後位置號分別是368312和368315。2恢復了以前的備份檔案後應從命令列輸入下面內容:

shell>mysqlbinlog --stop-position="368312" /var/log/mysql/bin.123456 \    | mysql -u root -pmypwd shell>mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 \    | mysql -u root -pmypwd \

上面的第一行將恢復到停止位置為止的所有事務。下一行將恢復從給定的起始位置直到二進位制日誌結束的所有事務。因為mysqlbinlog的輸出包括每個SQL語句記錄之前的SETTIMESTAMP語句因此恢復的資料和相關MySQL日誌將反應事務執行的原時間

物理備份和恢復

物理備份又分為冷備份和熱備份兩種和邏輯備份相比它的最大優點是備份和恢復的速度更快因為物理備份的原理都是基於檔案的cp。本節將介紹MySQL中的物理備份及其恢復的方法

冷備份
冷備份其實就是停掉資料庫服務cp資料檔案的方法。這種方法對MyISAM和InnoDB儲存引擎都適合但是一般很少使用因為很多應用是不允許長時間停機的。進行備份的操作如下停掉MySQL服務在作業系統級別備份MySQL的資料檔案和日誌檔案到備份目錄。進行恢復的操作如下首先停掉MySQL服務在作業系統級別恢復MySQL的資料檔案然後重啟MySQL服務使用mysqlbinlog工具恢復自備份以來的所有BINLOG

熱備份

MySQL中對於不同的儲存引擎熱備份方法也有所不同,下面主要介紹MyISAM和InnoDB兩種最常用的儲存引擎的熱備份方法:

1.MyISAM儲存引擎
方法1:使用mysqlhotcopy工具mysqlhotcopy是MySQL自帶的一個熱備份工具使用方法很簡單

shell> mysqlhotcopy db_name [/path/to/new_directory

mysqlhotcopy有很多選項具體可以使用“–help”檢視幫助

mysqlhotcopy --help

方法2手工鎖表copy
在mysqlhotcopy使用不正常的情況下,可以手工來做熱備份操作步驟如下:
首先資料庫中所有表加讀鎖

mysql>flush tables for read 

然後cp資料檔案到備份目錄即可
2.InnoDB儲存引擎
ibbackup是Innobase公司www.innodb.com的一個熱備份工具專門對InnoDB儲存引擎進行物理熱備份此工具是收費的但可以免費使用1個月。Innobase公司已經於2005年被Oracle公司所收購。下面簡單介紹一下使用ibbackup工具的備份步驟
1編輯用於啟動的配置檔案my.cnf和用於備份的配置檔案backup-my.cnf

my.cnf的例子如下:
[mysqld] datadir = /home/heikki/data 
innodb_data_home_dir = /home/heikki/data innodb_data_file_path=ibdata1:100M;ibdata2:200M;ibdata3:500M:autoextend 
innodb_log_group_home_dir = /home/heikki/data 
set-variable = innodb_log_files_in_group=2 
set-variable = innodb_log_file_size=20M

2如果想備份到/home/heikki/backup則
backup-my.cnf的例子如下:

mysqld] datadir = /home/heikki/backup
innodb_data_home_dir = /home/heikki/backup innodb_data_file_path=ibdata1:100M;ibdata2:200M;ibdata3:500M:autoextend
innodb_log_group_home_dir = /home/heikki/backup 
set-variable = innodb_log_files_in_group=2
set-variable = innodb_log_file_size=20M

3.開始備份
注意:
ibbackup工具不會覆蓋任何重名的檔案因此在新的備份開始之前,需要確保備份目錄中沒有重名檔案否則備份很可能會失敗。
4.備份完成後,備份目錄下包含有資料檔案和日誌檔案,如下所示

$ ls -lh /home/heikki/backu
total 824M
-rw-r—–    1 pekka    dev          22MJan2117:42ibbackup_logfile
-rw-r—–    1 pekka    dev          100M Jan 21 17:36 ibdata1
-rw-r—–    1 pekka    dev          200M Jan 21 17:38 ibdata2
-rw-r—–    1 pekka    dev          500M Jan 21 17:42 ibdata

因為在cp資料檔案時檔案內容在不斷地變化因此在不同的時間點cp的資料塊中的資料很可能是不一致的。因此ibbackup在備份期間用一個日誌檔案ibbackup_logfile記錄了備份期間資料的變化在恢復的時候就可以用此日誌檔案對備份的資料檔案進行日誌重做使得備份的資料能夠保持完整性和一致性。當主資料庫出現故障時我們需要用備份進行恢復恢復的步驟如下。1進行日誌重做。如前面所述利用下面的命令對備份資料進行日誌重做

shell>ibbackup --apply-log /home/pekka/backup-my.cnf

2恢復後重啟資料庫服務

shell>./bin/mysqld_saft  --defaults-file=/home/pekka/backup-my.cnf  &

3服務重啟後利用BINLOG日誌將備份點與故障點之間的剩餘資料進行恢復

mysqlbinlog  binlog-file | mysql -u root –p***

ibbackup還有一些其他的功能比如壓縮備份、不完全恢復等這裡就不再贅述。更詳細的使用方法讀者可以用“ibbackup –help”命令進行檢視或者參閱官方幫助文件http://www.innodb.com/support/documentation/innodb-hot-backup-manual/。對於InnoDB和MyISAM混合的資料庫Innobase公司還提供了一個開源的Perl指令碼innobackup它可以將兩種儲存引擎的表一起進行備份具體使用方法讀者可以參閱上述連結中的文件

表的匯入匯出

在資料庫的日常維護中表的匯入匯出是很頻繁的一類操作。本節將對MySQL中這類操作進行詳細的介紹希望讀者能夠熟練掌握

匯出

在某些情況下為了一些特定的目的經常需要將表裡的資料匯出為某些符號分割的純資料文字而不是SQL語句。這些應用可能有以下一些
用來作為EXCEL顯示單純為了節省備份空間
為了快速的載入資料LOAD DATA的載入速度比普通的SQL載入要快20倍以上。
為了滿足這些應用可以使用以下兩種辦法來實現。
方法1使用SELECT …INTO OUTFILE …命令來匯出資料具體語法如下:

mysql> SELECT * FROM tablename INTO OUTFILE 'target_file' [option]

其中option引數可以是以下選項

FIELDS  TERMINATED BY 'string' 欄位分隔符預設為製表符’\t’FIELDS  [OPTIONALLY] ENCLOSED BY 'char'(欄位引用符如果加OPTIONALLY選項則只用在char、varchar和text等字元型欄位上。預設不使用引用符)
FIELDS  ESCAPED BY 'char' 轉義字元預設為’\’LINES   STARTING BY 'string' 每行前都加此字串預設''LINES   TERMINATED BY 'string'行結束符預設為’\n’

其中char表示此符號只能是單個字元string表示可以是字串。例如將emp表中資料匯出為資料文字其中欄位分隔符為“,”欄位引用符為“””雙引號記錄結束符為回車符具體實現如下

ysql> select * from emp into outfile '/tmp/emp.txt' fields terminated by ","  enclosedby '"' ;                   Query OK, 5 rows affected (0.00 sec)
mysql>
mysql> system more/tmp/emp.txt
"1","z1","aa"
"2","z1","aa"
"3","z1","aa"
"4","z1","aa"
"1","z1","aa

發現第一列是數值型如果不希望欄位兩邊用引號引起則語句改為

mysql> select * from emp into outfile '/tmp/emp.txt' fields terminated by ","
optionally enclosed by '"' ;
Query OK, 
5 rows affected (0.00 sec)
mysql>system more/tmp/emp.txt
1,"z1","aa"
2,"z1","aa"
3,"z1","aa"
4,"z1","aa"
1,"z1","aa

結果如我們所願第一列的雙引號被去掉。下面來測試一下轉義字元。轉義字元顧名思義就是由於含義模糊而需要特殊進行轉換的字元在不同的情況下需要轉義的字元是不一樣的。MySQL匯出的資料中需要轉義的字元主要包括以下3類轉義字元本身欄位分隔符記錄分隔符。在下面的例子中對錶emp中的name更新為含“\”欄位分隔符記錄分隔符的資料然後匯出

mysql> update emp set name='\\"##!aa' where id=1;
Query OK, 
2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> system rm /tmp/emp.txt
mysql> select * from emp into outfile '/tmp/emp.txt' fields terminated by ","optionally enclosed by '"' 
Query OK,
 5 rows affected (0.00 sec)
 mysql> system more /tmp/emp.txt1,
 1,"\\\"##!aa","aa"
 2,"z1","aa"
 3,"z1","aa"
 4,"z1","aa"
 1,"\\\"##!aa","aa"
 mysql>

以上例子中name中含有轉義字元本身“\”域引用符“””因此在輸出的資料中我們發現這兩種字元前面都加上了轉義字元“\”“#”變成了“\#”。繼續進行測試將id為1的name更新為含有欄位分隔符“,”的字串

mysql> update emp set name='\\"#,#,!aa' where id=1;
Query OK, 
2 rows affected (0.04 sec)
Rows matched: 2  Changed: 2  Warnings: 0
mysql> system rm /tmp/emp.txt
mysql> select * from emp into outfile '/tmp/emp.txt' fields terminated by ","optionally enclosed by '"' ;
Query OK, 
5 rows affected (0.00 sec)
mysql> system more/tmp/emp.txt1,
1,"\\\"#,#,!aa","aa"
2,"z1","aa"
3,"z1","aa"
4,"z1","aa"
1,"\\\"#,#,!aa","aa

注意在MySQL客戶端連線成功後如果要執行作業系統的命令可以用“system+作業系統命令”來進行執行。這個時候發現數據中的字元“”並沒有被轉義這是為什麼呢其實仔細想想就明白了因為每個字串的兩邊帶有引用符“””雙引號)所以當MySQL看到資料中的“,”時由於它處在前半個引用分隔符之後後半個引用分隔符之前所以並沒有將它作為欄位分隔符而只是作為普通的一個數據字元來對待因而不需要轉義。繼續做測試將輸出檔案的欄位引用符去掉這個時候我們的預期是資料中的“,”將成為轉義字元而需要加上“\”

mysql> system rm /tmp/emp.txt
mysql> select * from emp into outfile '/tmp/emp.txt' fields terminated by ","  ;
Query OK,
 5 rows affected (0.00 sec)
1,\\"#\,#\,!aa,aa
2,z1,aa
3,z1,aa4,
4,z1,a
1,\\"#\,#\,!aa,aa

果然現在的“,”前面加上了轉義字元“\”。而剛才的引用符“””卻沒有被轉義因為它已經沒有什麼歧義不需要被轉義。通過上面的測試可以得出以下結論當匯出命令中包含欄位引用符時資料中含有轉義字元本身和欄位引用符的字元需要被轉義當匯出命令中不包含欄位引用符時資料中含有轉義字元本身和欄位分隔符的字元需要被轉義。注意SELECT…INTO OUTFILE…產生的輸出檔案如果在目標目錄下有重名檔案將不會建立成功原始檔不能被自動覆蓋。方法2用mysqldump匯出資料為文字

mysqldump –u username –T target_dir dbname tablename [option]

其中option引數可以是以下選項  –fields-terminated-by=name欄位分隔符 –fields-enclosed-by=name欄位引用符 –fields-optionally-enclosed-by=name欄位引用符只用在char、varchar和text等字元型欄位上 –fields-escaped-by=name轉義字元 –lines-terminated-by=name記錄結束符。下面的例子中採用mysqldump生成了指定分隔符分隔的文字

[root@localhost tmp]# mysqldump -uroot -T /tmp test emp --fields-terminated-by ','--fields-optionally-enclosed-by '"'
[root@localhost tmp]# more /tmp/emp.txt
1,"\\\"#,#,!aa","aa"
2,"z1","aa"
3,"z1","aa"
4,"z1","aa"
1,"\\\"#,#,!aa","aa

除了生成資料檔案emp.txt之外還生成一個emp.sql檔案裡面記錄了emp表的建立指令碼記錄的內容如下

[root@localhost tmp]# more emp.sql-- MySQL dump 10.11---- Host: localhost    Database: test-- -------------------------------------------------------- Server version       5.0.41-community-log/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;/*!40101 SET @[email protected]@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @[email protected]@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='' */;/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;---- Table structure for table `emp`--DROP TABLE IF EXISTS `emp`;CREATE TABLE `emp` (  `id` int(11) default NULL,  `name` varchar(10) default NULL,  `content` text) ENGINE=InnoDB DEFAULT CHARSET=latin1;/*!40103 SET [email protected]_TIME_ZONE */;/*!40101 SET [email protected]_SQL_MODE */;/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;/*!40101 SET [email protected]_COLLATION_CONNECTION */;/*!40111 SET [email protected]_SQL_NOTES */
-- Dump completed on 2007-08-11 20:27:32

匯入
本節只討論用SELECT… INTO OUTFILE或者mysqldump匯出的純資料文字的匯入方法。和匯出類似匯入也有兩種不同的方法分別是LOAD DATA INFILE…和mysqlimport它們的本質是一樣的區別只是在於一個在MySQL內部執行另一個在MySQL外部執行
方法1使用“LOAD DATA INFILE…”命令

mysql > LOAD DATA[LOCAL] INFILEfilenameINTO TABLE tablename [option]

option可以是以下選項 FIELDS TERMINATED BY ‘string’欄位分隔符預設為製表符’\t’ FIELDS [OPTIONALLY] ENCLOSED BY ‘char’欄位引用符如果加OPTIONALLY選項則只用在char、varchar和text等字元型欄位上。預設不使用引用符 FIELDS ESCAPED BY ‘char’轉義字元預設為’\’ LINES STARTING BY ‘string’每行前都加此字串預設” LINES TERMINATED BY ‘string’行結束符預設為’\n’ IGNORE number LINES忽略輸入檔案中的前n行資料 (col_name_or_user_var,…) 按照列出的欄位順序和欄位數量載入資料 SET col_name = expr,…將列做一定的數值轉換後再載入。其中char表示此符號只能是單個字元string表示可以是字串。FILELD和LINES和前面SELECT …INTO OUTFILE…的含義完全相同不同的是多了幾個不同的選項下面的例子將檔案“/tmp/emp.txt”中的資料載入到表emp中

mysql> load data infile '/tmp/emp.txt' into table emp fields terminated by ',' enclosedby '"' ;
Query OK,
4 rows affected (0.03 sec)
mysql> select * from emp;
+------+------+---------+
| id   | name | content |
+------+------+---------+
|    2 | z1   | aa      | 
|    3 | z1   | aa      | 
|    4 | z1   | aa      | 
|    1 | z1   | aa      | 
+------+------+---------+
4 rows in set (0.00 sec

如果不希望載入檔案中的前兩行可以如下操作

mysql> load data infile '/tmp/emp.txt' into table emp fields terminated by ',' enclosedby '"' ignore 2 lines;
Query OK,
 2 rows affected (0.04 sec)Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
+------+------+---------+
| id   | name | content |
+------+------+---------+
|    4 | z1   | aa      | 
|    1 | z1   | aa      | 
+------+------+---------+
2 rows in set (0.00 sec)

此時資料只加載了兩行

mysql> system more /tmp/emp.txt
2,"z1","aa"
3,"z1","aa"
4,"z1","aa"
1,"z1","aa

或者只想載入部分列可以在命令列中加上列的順序如下例所示

mysql> load data infile '/tmp/emp.txt' into table emp fields terminated by ',' enclosed
by '"' ignore 2 lines (id,content,name);
Query OK, 
2 rows affected (0.05 sec)
Records: 2  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select * from emp;
+------+------+---------+
| id   | name | content |
+------+------+---------+
|    4 | aa   | z1      | 
|    1 | aa   | z1      | 
+------+------+---------+
2 rows in set (0.00 sec)

可以發現檔案中第二列的內容放到了content裡面第三列的內容放到了name裡面。如果只想載入第一列欄位的列表裡面可以只加第一列的名稱

mysql> load data infile '/tmp/emp.txt' into table emp fields terminated by ',' enclosedby '"' ignore 2 lines (id);
Query OK, 
2 rows affected, 2 warnings (0.04 sec)Records: 2  Deleted: 0  Skipped: 0  Warnings: 2
mysql> select * from emp;
+------+------+---------+
| id   | name | content |
+------+------+---------+
|    4 | NULL | NULL    | 
|    1 | NULL | NULL    | 
+------+------+---------+
2 rows in set (0.00 sec)

如果希望將id列的內容+10後再載入到表中可以如下操作

mysql> load data infile '/tmp/emp.txt' into table emp fields terminated by ',' enclosedby '"' set id=id+10;
Query OK,
4 rows affected (0.03 sec)
Records: 4  Deleted: 0  Skipped: 0  Warnings: 0
mysql> select * from emp;
+------+------+---------+
| id   | name | content |
+------+------+---------+
|   12 | z1   | aa      | 
|   13 | z1   | aa      | 
|   14 | z1   | aa      | 
|   11 | z1   | aa      | 
+------+------+---------+
4 rows in set (0.00 sec)

方法2用mysqlimport來實現具體命令如下

shell>mysqlimportu rootp***  [--LOCAL]  dbname order_tab.txt  [option]

其中option引數可以是以下選項  –fields-terminated-by=name欄位分隔符 –fields-enclosed-by=name欄位引用符 –fields-optionally-enclosed-by=name欄位引用符只用在char、varchar和text等字元型欄位上 –fields-escaped-by=name轉義字元 –lines-terminated-by=name記錄結束符 – ignore-lines=number或略前幾行。這與mysqldump的選項幾乎完全相同這裡不再詳細介紹簡單來看一個例子

[[email protected] tmp]# mysqlimport -uroot test /tmp/emp.txt --fields-terminated-by=','
--fields-enclosed-by='"'test.emp: Records: 4  Deleted: 0  Skipped: 0  Warnings: 0
[[email protected] tmp]# 
[[email protected] tmp]# mysql -uroot test -e 'select count(10) from emp'
+-----------+
| count(10) |
+-----------+
|         4 | 
+-----------+
[[email protected] tmp]# mysql -uroot test -e 'select * from emp'
+------+------+---------+
| id   | name | content |
+------+------+---------+
|    2 | z1   | aa      | 
|    3 | z1   | aa      |
|    4 | z1   | aa      | 
|    1 | z1   | aa      | 
+------+------+---------

注意:如果匯入和匯出是跨平臺操作的,Windows和Linux,那麼要注意設定引數line-terminated-by,Windows上設定為line-terminated-by=’\r\n’,Linux上設定為line-terminated-by=’\n’

相關推薦

mysql備份/恢復策略

需要考慮的一些因素。 1.確定要備份的表的儲存引擎是事務型還是非事務性,兩種不同的儲存引擎備份方式在處理資料一致性方面是不太一樣的。 2.確定使用全備份還是增量備份。全備份的優點是備份保持最新備份恢復的時候可以花費更少的時間缺點是如果資料量大,將會花費

mysql-學習-13-20170619-MySQL備份恢復-xtrabackup-2

soc tar pex cfa nod 遠程 表空間 tid doc mysql-學習-13-20170619-MySQL備份恢復-xtrabackup-2 【管理員】吳炳錫(82565387) 20:34:15基於xtrabackup的增備,只需要了解如果需要增備建

MySQL備份恢復基礎知識及MySQLdump講解

mysql 備份恢復 基礎知識 mysqldump數據庫備份恢復知識要點:時間軸備份類型分類: 完全備份:備份整個數據集 增量備份:上一次完全備份,或上一次增量備份以後變化的數據的備份(還原麻煩,節省空間) 差異備份:僅備份最近一次完全備份以來變化的數據(還原簡單,空間消耗大)什

mysql 備份恢復

article posit -h post iss 基礎上 statement rest 系列 mysql備份還原-基於binlog的增量備份還原 1 簡介 基於binlog的恢復需要建立在全量備份恢復基礎上。使用mysqldump的全量備份的方法在我前面的文

Mysql備份恢復學習筆記

重復 環境 rest sed 關閉 top 啟動 emctl trab xtrabackup 物理備份+binlog 完整備份 創建備份目錄:#mkdir /back/full備份:#innobackupex --user=root --password=‘123‘ /b

mysql 備份/恢復

apple style mysql 備份 pos 保存 查看 ted root 表結構 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC" } p.p2 { margin: 0.0px 0.0

mysql 備份 恢復

mysql 備份 mysql bak 備份 roo 數據庫 databases mysqld oot mysqldump -h127.0.0.1 -uroot -p123456 --databases dbname > d:/mysqlbak/dbname .dump

MySQL備份恢復工具Xtrabackup

    參考文件https://www.cnblogs.com/youkanyouxiao/p/8335173.html      Xtrabackup介紹     Xtrabackup是由percona開源的免費資料庫熱備份軟體,它能對InnoDB資料庫和XtraDB儲

MySQL備份恢復(未完成)

MySQL備份恢復 本文件主要圍繞生產中經常使用的mysqldump、mydumper、xtrabackup等工具來進行備份恢復的學習。 1. MySQL 的備份方式 MySQL的備份方法,劃分為如下三種: 冷備份 冷備是指在資料庫關閉的情況下進行備份,這種備

mysql備份恢復

1.mysqldump 2.mysqlbackup 3.mysqlhotcopy 4.xtrabackup/innobackupex 5.cp 備份備於一切,今天彙總一下常用的幾種備份方法,以及恢復的步驟。 1.mysqldump 在日常工作中,我們會

解鎖MySQL備份恢復的4種正確姿勢

作者介紹: 馮帥,點融網高階DBA,獲有Oracle OCM、MySQL OCP,目前從事MySQL相關的運維和架構工作,擅長異構資料庫互動。 分享大綱: mysqldump mysqlbackup mysqlhotcopy xtrabackup/innobackupex 備份高於一切,今天彙總一下

詳解mysql備份恢復的三種實現方式

一、Mysql備份策略: 完整備份: 完整備份就是指對某一個時間點上的所有資料或應用進行的一個完整拷貝,對資料量大的,備份時間較長,當然資料在恢復的時候快。 增量備份: 備份自上一次備份(包括完整備份,差異備份,增量備份)之後所有變化的資料進行備份。恢復的時候只需要一次完整的備份加上完整備份後的多

深入解析mysql備份恢復

一、冷備份與恢復備份1.關閉mysql服務程序mysql stop;2.把data資料目錄和日誌目錄復恢復複製data目錄和日誌目錄替換原有的目錄啟動mysql程序 mysql start二、邏輯備份與恢復備份1.匯出所有資料庫mysqldump -q --single-t

mysql系列之5.mysql備份恢復

備份資料: mysqldump #mysqldump -uroot -p123456 test > /test_bak.sql #egrep -v "#|\*|--|^$" /test_bak.sql 指定對應字符集 #mysqldump -uroot -p1234

13.4 mysql用戶管理 13.5 常用sql語句 13.6 mysql數據庫備份恢復

13.4 mysql用戶管理 13.5 常用sql語句 13.6 mysql數據庫備份恢復- 13.4 mysql用戶管理 - 13.5 常用sql語句 - 13.6 mysql數據庫備份恢復 - 擴展 - SQL語句教程 http://blog.51cto.com/zt/206 - 什麽是事務?事務的特性

Xtrabackup進行MySQL備份恢復

xtrabackup進行mysql備份與恢復一、使用Xtrabackup進行MySQL備份1、簡介Xtrabackup是由percona提供的mysql數據庫備份工具,據官方介紹,這也是世界上惟一一款開源的能夠對innodb和xtradb數據庫進行熱備的工具。特點:(1)備份過程快速、可靠;(2)備份過程不會

mysql用戶管理、常用sql語句、mysql數據庫備份恢復

mysql用法mysql用戶管理1、新增用戶user1,並設置密碼為123456mysql> grant all on *.* to ‘user1‘@‘127.0.0.1‘ identified by ‘123456‘;#創建user1用戶並授予其所有權限“*.*”(通配符)#第一個*:表示所有的數據庫

mysql 第三十五篇文章~xtarbackup增量備份以及策略

判斷 config 服務器 dir 難度 修改 初始 一周 -a 一 簡介: 今天咱們來探討下增量備份的策略 二 背景: 隨著數據量的日益增長,全備已經不現實了,所以探討並測試了增量備份策略 三 具體策略: 1 一周為界限,一天做全備,其他時間以全備為基礎進行增量備份

MySQL備份恢復方案,mysqlbinlog,mysqldump,主從,主主復制

庫存 讀寫 sel erro l數據庫 reat 當前 password ima DBMS數據庫管理系統的三層模型:物理層,邏輯層以及視圖層。 物理層:決定數據的存儲形式。 邏輯層:是一張有一張的表,一行行的數據記錄。 視圖層:讓用戶看起來更方便,可有可無。 存