study 24 Mysql資料庫的備份與恢復

2021-07-26 01:46:26 字數 3501 閱讀 8493

一,備份單個資料庫練習多種引數使用

1,mysql資料庫自帶乙個很好用的備份命令,就是mysqldump,他的基本使用如下:

1)語法:mysqldump -u 使用者名稱  -p 資料庫名 >  備份的檔名

備份:mysqldump -uroot -p123456 -s /data/3306/mysql.sock www> /opt/mysql_bak.sql

恢復:mysql -uroot -p123456 -s /data/3306/mysql.sock www< /opt/mysql_bak.sql

2)加-b引數進行備份,可以新增建立資料庫的sql語句(加-b還可以後面跟多個資料庫名,進行多資料庫的備份):

> create database /*!32312 if not exists*/ `www` /*!40100 default character set utf8 */;

> use `www`;

例如:備份:mysqldump -uroot -p123456 -s /data/3306/mysql.sock -b www> /opt/mysql_bak_b.sql

恢復:mysql -uroot -p123456 -s /data/3306/mysql.sock < /opt/mysql_bak_b.sql

3)指定gzip壓縮命令 (通過gunzip解壓)

mysqldump -uroot -p123456 -s /data/3306/mysql.sock -b www | gzip > /opt/mysql_bak_b.sql.gz

2,mysqldump原理

1)通過生成sql語句,進行資料的邏輯備份

2)指定-b引數,備份多個庫

mysqldump -uroot -p123456 -s /data/3306/mysql.sock -b www  bbs  blog> /opt/mysql_bak_b.sql

3,如何做分庫備份(如果多個庫備份在乙個檔案中,且其中乙個庫壞了,會比較麻煩,所以最好乙個庫備份乙個檔案)

實際是乙個語句備份乙個庫;多寫幾 個語句;

# 一條命令列對多個庫進行備份

mysql -uroot -p123456 -s /data/3306/mysql.sock -e "show databases"|grep -evi "information|mysql|perform|database"|sed -r 's#([a-z].*)#mysqldump -uroot -p123456 -s /data/3306/mysql.sock -b \1 | gzip> /opt/\1.sql.gz#g' | bash

#通過shell指令碼程式設計實現

4,備份多個表(資料庫 表1 表2 表3 。。。。)

備份:mysqldump -uroot -p123456 -s /data/3306/mysql.sock www student test  #www為庫  student為表   test為表

5,如果做分表備份(如果多個表備份在乙個檔案中,且其中乙個錶壞了,會比較麻煩,所以最好乙個表備份乙個檔案)

解決:所有庫一次迴圈、每個庫中二次迴圈備份單個表

6,只備份表結構

加引數:-d

7,只備份表資料

加引數:-t

8,不指定資料名,備份所有:

mysqldump -uroot -p123456    -a    -b    --events | gzip > /opt/sss.sql.gz

9,重新整理blnlog(mysql開啟log-bin開關):

mysqldump -uroot -p123456    -a    -b   -f  --events | gzip > /opt/sss.sql.gz

10,增加binlog日誌檔名及對應的位置點(--master-data=1 ):

mysqldump -uroot -p123456 --master-data=1  -s /data/3306/mysql.sock oldboy

#將來做增量恢復時,可以不做日誌切割,不重新整理binlog;因為檔案中會顯示:change master to master_log_file='mysql-bin.000001', master_log_pos=107;

#已經告訴了日誌檔案在mysql-bin.000001;增量恢復從 107這個位置點開始,往下恢復就行了

11,鎖表:-x

12,唯讀鎖表:-l

13,--single-transaction   適合innodb事務資料庫備份

innodb表在備份時,通常啟用選項 --single-transaction來保證備份的一致性,實際上他的工作原理是設定本次會話的隔離級別為:

repeatable read,以確保本次會話(dump)時,不會看到其他會話已經提交了的資料(

14,工作中使用總結:

1)只有表庫的情況

myisam表 備份命令:

mysqldump -uroot -p123456  -a   -b   --master-data=1   --events   -x | gzip   >  /opt/all.sql.gz      #--master-data=2的區別

mysqldump -uroot -p123456  -a   -b   --master-data=1    --events  --single-transaction | gzip   >  /opt/all.sql.gz

2)有庫有表,還有觸發器、儲存過程、檢視等

myisam表:

mysqldump   --user=root   --all-databases   --flush-privileges   --lock-all-tables   --master-data=1   --flush-logs   --triggers   --routines   --events   --hex-blob > ***.sql

innodb表:

mysqldump   --user=root   --all-databases   --flush-privileges   --single-transaction  --master-data=1   --flush-logs   --triggers   --routines   --events   --hex-blob > ***.sql

15,使用source命令恢復資料庫

通常需要進入到myql命令列進行操作;也可以通過 -e 在linux命令列進行操作

16,mysqlbinlog 恢復

# 按照位置擷取

mysqlbinlog  mysqlbin.000020  -d www  --start-position=365  --stop-position=456  -r  pos.sql    #   -d   www:指定只恢復 www 資料庫的資料

# 按照時間擷取

mysqlbinlog  mysql-bin.000020  --start-datetime='2014-10-16 17:14:15'  --stop-datetime='2014-10-16 17:15:15'   -r   time.sql

MySQL資料庫實操教程 24 使用者管理

自定義view系列教程00 推翻自己和過往,重學自定義view 自定義view系列教程01 常用工具介紹 自定義view系列教程02 onmeasure原始碼詳盡分析 自定義view系列教程03 onlayout原始碼詳盡分析 自定義view系列教程04 draw原始碼分析及其實踐 自定義view系...

mysql資料庫效能資料 MYSQL資料庫效能優化

1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...

MySQL資料庫使用 MySQL資料庫管理

開發時一般不使用系統的root使用者,應該是建立乙個新的使用者,管理乙個工程。登入使用者的命令 mysql uusername p 登入完成後就進入sql命令格式,格式以 結尾。windows用安裝的時候設定的root登入命令列,如下圖所示。linux安裝時若沒有提示設定root密碼的,可以使用系統...