mysqldump可以把整个数据库的所有表都备份到一个sql文件里,但随着数据量的增大,往往需要查看历史记录的某个表数据,再把对应的备份sql导入就很耗时间。于是想到,mysqldump备份的时...
mysqldump可以把整个数据库的所有表都备份到一个sql文件里,但随着数据量的增大,往往需要查看历史记录的某个表数据,再把对应的备份sql导入就很耗时间。
于是想到,mysqldump备份的时候直接按表来备份到不同的sql文件里,但这样做可能会导致数据不一致,造成以后故障恢复时出问题
所以现在想到的方法是,备份的时候还是把所有表备份到一个sql文件里,然后再通过shell做分割。以下是截取开头的部分内容。
-- MySQL dump 10.13 Distrib 5.5.20, for Linux (x86_64)
--
-- Host: localhost Database: misscoquines
-- ------------------------------------------------------
-- Server version 5.5.20-log
/*!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 `admin_assert`
--
DROP TABLE IF EXISTS `admin_assert`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `admin_assert` (
*************
**************
**************
CREATE TABLE `admin_role` (
****************
*****************
经观察,可以根据CREATE TABLE关键字来分割,但不知道shell应该怎么写,请教!
每个表可以看成一大段,每一个大段的内容格式大致如下(具体内容用星号代替)
--
-- Table structure for table `admin_user`
--
DROP TABLE IF EXISTS `admin_user`;
***
***
CREATE TABLE `admin_user` (
***
-- Dumping data for table `admin_user`
***
LOCK TABLES `admin_user` WRITE;
***
UNLOCK TABLES;
展开