mysqldump备份之SQL格式


7.4 使用mysqldump进行备份
---------------------
dump file:
    可以作為數據備份,以防止數據丟失;
    主從複製的時候可以作為數據源;
    可以用來做實驗:
        作為數據庫的拷貝而不需要改動原來的數據;
        測試可能的升級兼容性
根據是否指定--tab選項,mysqldump的輸出有2種類型
    1、沒有--tab,mysqldump將SQL語句寫到標準輸出。
        輸出由CREATE語句(創建dumped 對象-數據庫、表等等)和SELECT語句(將數據加載到表裡邊)組成;
        可以把輸出保存到文件裡邊,之後可以讓mysql重建dumped 對象;
        有一些選項可以用於修改SQL語句的格式、控制哪些對象需要dump;
    2、使用了--tab選項,mysqldump為每一個dumped的表創建2個輸出文件;
        服務器將寫一個tab-delimited text file(製表符分割文本文件)--“表中每一行數據占一行的文件”;這個文件被命名為tbl_name.txt,放到輸出目錄;
        服務器也會為mysqldump操作的表發送一條CREATE TABLE 語句,這條語句將會在輸出目錄創建一個名為tbl_name.sql的文件;

    7.4.1 使用mysqldump將數據以SQL格式進行dump
    ++++++++++++++++++++++
    在默認情況下,mysqldump將以SQL格式將信息寫到標準輸出;我們可以將輸出保存到文件裡邊;
        shell> mysqldump [arguments] > file_name

    使用--all-databases選項來dump所有的數據庫:
        shell> mysqldump --all-databases > dump.sql

    使用--databases選項來dump指定的數據庫:
        shell> mysqldump --databases db1 db2 db3 > dump.sql
        --databases這個選項是的命令行中的所有名字(上面這個例子中:db1 db2 db3)都被當做數據名;
        如果不指定這個選項,命令行中的第一個名字(上面這個例子中的db1)被當做數據庫的名字,其他的(上面這個例子中的db2和db3)被當做表的名字;

    使用了--all-databases或者--databases選項的時候,對於每一個操作到的數據,mysqldump在dump output之前會寫CREATE DATABASE和USE語句;
    這樣可以保證在重新載入dumped文件的時候,如果數據庫不存在,那麼將會被創建;
    並且將它作為默認的數據庫,這樣數據就會被重新載入到對應的數據(就是說,保證了數據從哪個數據來還到哪個數據庫去)

    如果想要在重建數據庫之前強制刪除每一個數據庫,使用--all-drop-databases選項;
    這樣的話,mysqldump在每一個CREATE DATABASE語句之前寫一個DROP DATABASE語句;

    想要dump某一個數據庫,可以在命令行指定它的名字:
        shell> mysqldump --databases test > dump.sql 

    對於只dump一個數據庫的情況,--all-databases選項可以省略掉:
        shell> mysqldump test > dump.sql 
        在這種情況下,dump的輸出文件裡邊沒有CREATE DATABASE和USE語句,這樣做有下面這些影響:
            1、在重新載入的時候,我們必須指定一個數據庫,這樣,服務器才知道將數據導入到哪一個數據庫;
            2、在重新載入的時候,指定的數據庫名字可以和之前(導出的時候)的數據庫名字不一樣;
            3、如果導入數據的時候,數據庫不存在,我們必須先創建出來;
            4、因為沒有了CREATE DATABASE語句,所以--all-drop-databases選項就沒用;如果使用的話,將不會生成DROP DATABASE語句;

    如果只是想要dump出某一個數據的指定的表,可以在命令行中,將表的名字寫到數據庫後面:
        shell> mysqldump test t1 t3 t7 > dump.sql 

    7.4.2 重新載入SQL格式的備份數據
    ++++++++++++++++++++++
    想要重新載入由mysqldump寫的由SQL語句組成的dump文件的時候,將這個文件作為mysql客戶端的輸入;
    如果dump文件是使用--all-databases或者--databases選項創建的,它會包含CREATE DATABASE和USE語句,那麼我們導入dump文件的數據的時候就不用指定數據庫;

    shell> mysql < dump.sql 
    另一種可選方法,進入mysql,使用source命令:
    mysql> source < dump.sql 

    如果dump的文件是一個“單數據庫”(沒喲CREATE DATABASE和USE語句),可能需要先創建數據庫:
        shell> mysqladmin create db1 
        shell> mysql db1 < dump.sql 
    另一種可選的方法:
        mysql> CREATE DATABASE IF NOT EXISTS db1;
        mysql> USE db1;
        mysql> source dump.sql

    ++++++++++++++++++++++

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值