程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysqldump和big-log備份以及恢復示例

mysqldump和big-log備份以及恢復示例

編輯:MySQL綜合教程

mysqldump和big-log備份以及恢復示例


mysql版本

[root@zxl-nginx~]#mysql-V
mysqlVer14.14Distrib5.6.28,forlinux-glibc2.5(x86_64)usingEditLinewrapper

一、mysqldump

mysqldump僅適用於數據集較小場景

用法:mysqldump[options][db_name[tbl_name...]]
主要選項解釋:
--all-databases,-A:備份所有數據庫
--databases,-B:要備份的數據庫,可以同時備份多個,使用空格分隔
--flush-logs,-F:備份前、請求到鎖之後滾動日志,要記錄下復制時的二進制日志
--flush-privileges:通知數據庫重讀授權表
--host=host_name,-hhost_name:要備份的數據庫的主機名,可以基於網絡備份
--lock-all-tables,-x:請求鎖定所有表之後再備份,對MyISAM,InnoDB,Aria做溫備
--single-transaction:能夠對InnoDB存儲引擎實現熱備
-uusename備份的用戶名
-ppassword登陸數據庫的密碼
--events:備份事件調度器代碼
--routines:備份存儲過程和存儲函數
--triggers:備份觸發器
--master-date={0|1|2},0表示不記錄,1表示距離為changemaster語句,2表示記錄為注釋的changemaster語句

二、創建數據庫以及表並插入數據

mysql>createdatabasezxl;
QueryOK,1rowaffected(0.00sec)
mysql>usezxl
Databasechanged
mysql>CREATETABLE`users`(
->`id`bigint(20)NOTNULLAUTO_INCREMENT,
->`name`varchar(255)DEFAULTNULL,
->PRIMARYKEY(`id`)
->)ENGINE=InnoDBAUTO_INCREMENT=7DEFAULTCHARSET=utf8;
QueryOK,0rowsaffected(0.02sec)

#這是創建表以及插入數據的示例,來自互聯網。。。

#------------------------------
#--Tablestructureforusers
#------------------------------
#DROPTABLEIFEXISTS`users`;
#CREATETABLE`users`(
#`id`bigint(20)NOTNULLAUTO_INCREMENT,
#`name`varchar(255)DEFAULTNULL,
#PRIMARYKEY(`id`)
#)ENGINE=InnoDBAUTO_INCREMENT=7DEFAULTCHARSET=utf8;
#
#------------------------------
#--Recordsofusers
#------------------------------
#INSERTINTO`users`VALUES('1','小明');
#INSERTINTO`users`VALUES('2','小虎');
#INSERTINTO`users`VALUES('3','小花');
#INSERTINTO`users`VALUES('4','小花');
#INSERTINTO`users`VALUES('5','小花');
#INSERTINTO`users`VALUES('6','小虎');

插入數據

mysql>INSERTINTO`users`VALUES('1','小明');
QueryOK,1rowaffected(0.00sec)
mysql>INSERTINTO`users`VALUES('2','小虎');
QueryOK,1rowaffected(0.00sec)
mysql>INSERTINTO`users`VALUES('3','小花');
QueryOK,1rowaffected(0.00sec)
mysql>INSERTINTO`users`VALUES('4','小花');
QueryOK,1rowaffected(0.00sec)
mysql>INSERTINTO`users`VALUES('5','小花');
QueryOK,1rowaffected(0.01sec)
mysql>INSERTINTO`users`VALUES('6','小虎');
QueryOK,1rowaffected(0.00sec)

查看插入的數據

mysql>select*fromusers;
+----+--------+
|id|name|
+----+--------+
|1|小明|
|2|小虎|
|3|小花|
|4|小花|
|5|小花|
|6|小虎|
+----+--------+
6rowsinset(0.00sec)

三、備份數據庫以及演示如何恢復

[root@zxl-nginx~]#mysqldump-uroot-p123456--databaseszxl--single-transaction--flush-logs--master-data=2>/tmp/zxl_users.sql

Warning: Using a password on the command line interface can be insecure.

注:提示warning,因為5.6版本增加安全機制,不允許在命令行中出現密碼,具體沒研究,可以在my.cnf文件中加入[mysqldump]下加入用戶以及密碼就不會提示warning了。

備份數據庫之後,再次插入新的數據。

mysql>INSERTINTO`users`VALUES('7','bob');
QueryOK,1rowaffected(0.01sec)
mysql>INSERTINTO`users`VALUES('8','tom');
QueryOK,1rowaffected(0.00sec)
mysql>INSERTINTO`users`VALUES('9','lili');
QueryOK,1rowaffected(0.00sec)

查看新插入的數據

mysql>select*fromusers;
+----+--------+
|id|name|
+----+--------+
|1|小明|
|2|小虎|
|3|小花|
|4|小花|
|5|小花|
|6|小虎|
|7|bob|
|8|tom|
|9|lili|
+----+--------+
9rowsinset(0.00sec)

刪除數據庫zxl

mysql>dropdatabasezxl;
QueryOK,1rowaffected(0.01sec)
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|information_schema|
|mysql|
|performance_schema|
|test|
+--------------------+
4rowsinset(0.00sec)

查看mysqldump備份的sql文件中的pos節點位置以及相應的二進制文件名

二進制文件以及pos節點如下:

-- CHANGE MASTER TO MASTER_LOG_FILE='master-bin.000060', MASTER_LOG_POS=120;

使用mysqlbiglog查看二進制文件,刪除數據庫zxl的at位置是778

[root@zxl-nginxdata]#mysqlbinlogmaster-bin.000060
#at778
#16012014:25:42serverid1end_log_pos867CRC320x014503a4Querythread_id=44exec_time=0error_code=0
SETTIMESTAMP=1453271142/*!*/;
dropdatabasezxl

備份二進制日志位置

[root@zxl-nginx~]#mysqlbinlog--start-position=120--stop-position=778/usr/local/mysql/data/master-bin.000060>/tmp/big_log.sql

恢復數據庫

[root@zxl-nginx~]#mysql-uroot-p

查看恢復的數據庫

關閉二進制日志

mysql>setsessionsql_log_bin=0;
QueryOK,0rowsaffected(0.00sec)
mysql>showdatabases;
+--------------------+
|Database|
+--------------------+
|information_schema|
|mysql|
|performance_schema|
|test|
|zxl|
+--------------------+
5rowsinset(0.00sec)
查看恢復的表
mysql>usezxl;
Readingtableinformationforcompletionoftableandcolumnnames
Youcanturnoffthisfeaturetogetaquickerstartupwith-A
Databasechanged
mysql>showtables;
+---------------+
|Tables_in_zxl|
+---------------+
|users|
+---------------+
1rowinset(0.00sec)
mysql>select*fromusers;
+----+--------+
|id|name|
+----+--------+
|1|小明|
|2|小虎|
|3|小花|
|4|小花|
|5|小花|
|6|小虎|
+----+--------+
6rowsinset(0.00sec)
注:後增加的數據沒有恢復過來

恢復二進制備份的big-log文件

[root@zxl-nginx~]#mysql-uroot-p

再次查看users表

mysql>select*fromusers;
+----+--------+
|id|name|
+----+--------+
|1|小明|
|2|小虎|
|3|小花|
|4|小花|
|5|小花|
|6|小虎|
|7|bob|
|8|tom|
|9|lili|
+----+--------+
9rowsinset(0.00sec)

開啟big-log

mysql>setsessionsql_log_bin=1;
QueryOK,0rowsaffected(0.00sec)

注:關閉不關閉二進制只有不進行任何操作即可不關閉,原因你懂的。

注:在實際恢復時最好編輯my.cnf配置文件,添加如下項:

skip-networking //跳過網絡功能來恢復數據

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved