使用mysqldump對mysql進行備份和恢復
mysqldump是mysql的邏輯備份恢復工具,可以只備份某個表,某個庫或者整個資料庫。為了保證資料的一致性,備份的時候會加寫鎖,所以一定要在系統閒的時候用。
語法:
[root@D2-LZY245 ~]# mysqldump
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump –help
備份test1庫:
[root@D2-LZY245 ~]# mysqldump -uroot -p123456 test1 > test1_bk.sql
檢視生成的備份檔案:
[root@D2-LZY245 ~]# mysqldump -uroot -p123456 test1 > test1_bk.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@D2-LZY245 ~]# cat test1_bk.sql
-- MySQL dump 10.13 Distrib 5.7.15, for linux-glibc2.5 (x86_64)
--
-- Host: localhost Database: test1
-- ------------------------------------------------------
-- Server version 5.7.15
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `emp`
--
DROP TABLE IF EXISTS `emp`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp` (
`employee_id` int(10) DEFAULT NULL,
`first_name` varchar(50) DEFAULT NULL,
`last_name` varchar(50) DEFAULT NULL,
`salary` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `emp`
--
LOCK TABLES `emp` WRITE;
/*!40000 ALTER TABLE `emp` DISABLE KEYS */;
INSERT INTO `emp` VALUES (100,'Steven','King',24000.00),(101,'Neena','Kochhar',17000.00),(102,'Lex','De Haan',17000.00),(103,'Alexander','Hunold',9000.00),(104,'Bruce','Ernst',6000.00),(105,'David','Austin',4800.00),(106,'Valli','Pataballa',4800.00),(107,'Diana','Lorentz',4200.00),(108,'Nancy','Greenberg',12008.00),(109,'Daniel','Faviet',9000.00),(110,'John','Chen',8200.00);
/*!40000 ALTER TABLE `emp` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `emp1`
--
DROP TABLE IF EXISTS `emp1`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `emp1` (
`employee_id` int(10) DEFAULT NULL,
`first_name` varchar(50) DEFAULT NULL,
`last_name` varchar(50) DEFAULT NULL,
`salary` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `emp1`
--
LOCK TABLES `emp1` WRITE;
/*!40000 ALTER TABLE `emp1` DISABLE KEYS */;
INSERT INTO `emp1` VALUES (100,'Steven','King',24000.00),(101,'Neena','Kochhar',17000.00),(102,'Lex','De Haan',17000.00),(103,'Alexander','Hunold',9000.00),(104,'Bruce','Ernst',6000.00),(105,'David','Austin',4800.00),(106,'Valli','Pataballa',4800.00),(107,'Diana','Lorentz',4200.00),(108,'Nancy','Greenberg',12008.00),(109,'Daniel','Faviet',9000.00),(110,'John','Chen',8200.00);
/*!40000 ALTER TABLE `emp1` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2017-05-26 18:32:51
備份檔案實際上就是SQL指令碼,先是設定引數,如果表存在則刪除表,然後建立表,鎖表,執行插入語句,解鎖。恢復的時候執行這個SQL指令碼就好了。執行指令碼有2種方式,一種是重定向,一種是使用source。
重定向方式:
mysql> create database test2;
Query OK, 1 row affected (0.00 sec)
#建立一個資料庫test2,恢復到test2。
[root@D2-LZY245 ~]# mysql -uroot -p123456 test2 < test1_bk.sql
檢視確認:
mysql> use test2
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+-----------------+
| Tables_in_test2 |
+-----------------+
| emp |
| emp1 |
+-----------------+
2 rows in set (0.00 sec)
source方式:
mysql> create database test3;
Query OK, 1 row affected (0.00 sec)
mysql> use test3;
Database changed
mysql> source /root/test1_bk.sql
mysql> show tables;
+-----------------+
| Tables_in_test3 |
+-----------------+
| emp |
| emp1 |
+-----------------+
2 rows in set (0.00 sec)
這兩種方式是有區別的,使用重定向方式,如果有錯誤會直接退出,不會執行後續的語句,而使用source方式則會跳過錯誤的地方,繼續執行後續的語句。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28536251/viewspace-2140115/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- 【mysqldump】mysqldump及備份恢復示例MySql
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- 【MySQL】MySQL備份和恢復MySql
- 【Mongo】Mongodump 與 mongorestore對mongo進行備份恢復GoREST
- Mysql備份恢復MySql
- MySQL日誌管理,備份和恢復MySql
- MySQL備份和恢復方法彙總MySql
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- MySQL 備份與恢復MySql
- 備份和恢復
- Mysql備份與恢復(1)---物理備份MySql
- 利用MySQL全備份(mysqldump),如何只恢復一個庫或者一個表?MySql
- MySQL備份與恢復——基於MyDumper/MyLoader 邏輯備份恢復MySql
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql
- 如何在HarmonyOS對資料庫進行備份,恢復與加密資料庫加密
- KunlunDB備份和恢復
- redis 備份和恢復Redis
- MySQL備份與恢復——基於OUTFILE /LOAD DATA 邏輯備份恢復MySql
- Mysql備份和還原資料庫-mysqldumpMySql資料庫
- 《入門MySQL—備份與恢復》MySql
- MySQL備份與恢復——實操MySql
- 入門MySQL——備份與恢復MySql
- docker 中 MySQL 備份及恢復DockerMySql
- MySQL備份與恢復操作解析MySql
- Mysql資料備份與恢復MySql
- 12 使用RMAN備份和恢復檔案
- Jtti:CentOS系統中如何進行系統備份和恢復?JttiCentOS
- SqlServer備份和恢復(二)SQLServer
- SqlServer 備份和恢復(一)SQLServer
- mongdb遭遇勒索,用備份進行資料恢復資料恢復
- RAC備份恢復之Voting備份與恢復
- MySQL運維實戰之備份和恢復(8.1)xtrabackup全量備份MySql運維
- SQL Server中使用臨時表進行資料備份與恢復SQLServer
- Mysql的幾種備份與恢復MySql
- 【MySQL】Xtrabackup備份及恢復指令碼MySql指令碼
- Mysql資料庫備份及恢復MySql資料庫
- MySQL8.4備份恢復快速命令MySql