电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

MySQL數據庫入門之備份數據庫操作詳解

瀏覽:21日期:2023-10-15 10:15:02

本文實例講述了MySQL數據庫入門之備份數據庫操作。分享給大家供大家參考,具體如下:

接上一次:MySQL數據庫入門多實例配置

一提到數據,大家神經都會很緊張,數據的類型有很多種,但是總歸一點,數據很重要,非常重要,因此,日常的數據備份工作就成了運維工作的重點中的重點的重點.................

首先來看看數據庫中的數據

mysql> select * from test;+-----+------+| id | name |+-----+------+| 1 | 1 || 11 | text || 21 | abc || 9 | bcd || 111 | 1 || 441 | text || 41 | abc || 999 | bcd |+-----+------+8 rows in set (0.00 sec)1、單庫備份

[root@centos6 ~]# mysqldump -uroot -p test >/download/testbak_$(date +%F).sqlEnter password: [root@centos6 ~]# ll /download/total 2-rw-r--r--. 1 root root 1888 Dec 12 20:34 testbak_2016-12-12.sql

下面我們看看這個備份文件到底是什么內容

[root@centos6 ~]# egrep -v '^--|*|^$' /download/testbak_2016-12-12.sqlDROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` int(4) NOT NULL, `name` char(20) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;LOCK TABLES `test` WRITE;INSERT INTO `test` VALUES (1,’1’),(11,’text’),(21,’abc’),(9,’bcd’),(111,’1’),(441,’text’),(41,’abc’),(999,’bcd’);UNLOCK TABLES;

由上的文件內容,可以看出,這個備份實際的過程就是將創建數據庫、建表、插入數據的sql語句備份出來,也可以說是將sql語句導出

-B參數

[root@centos6 ~]# mysqldump -uroot -p -B test >/download/testbak_$(date +%F)_b.sqlEnter password: [root@centos6 ~]# egrep -v '^--|^$' /download/testbak_2016-12-12_b.sql /*!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 */;CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `test`;DROP TABLE IF EXISTS `test`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `test` ( `id` int(4) NOT NULL, `name` char(20) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;/*!40101 SET character_set_client = @saved_cs_client */;LOCK TABLES `test` WRITE;/*!40000 ALTER TABLE `test` DISABLE KEYS */;INSERT INTO `test` VALUES (1,’1’),(11,’text’),(21,’abc’),(9,’bcd’),(111,’1’),(441,’text’),(41,’abc’),(999,’bcd’);/*!40000 ALTER TABLE `test` 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 */;

-B參數的作用一目了然,就是當我們的數據庫丟失時,可以直接用此備份文件進行恢復,無需再重新建庫、建表,然后再進行數據恢復的操作

2、壓縮備份

有時候,數據庫的數據比較大,可能會用到壓縮后進行備份,節省備份時間與磁盤空間的使用

[root@centos6 ~]# mysqldump -uroot -p -B test|gzip >/download/testbak_$(date +%F).sql.gzEnter password: [root@centos6 ~]# ll /download/testbak_2016-12-12.sql.gz-rw-r--r--. 1 root root 753 Dec 12 20:49 /download/testbak_2016-12-12.sql.gz[root@centos6 ~]# ll /download/total 14-rw-r--r--. 1 root root 2027 Dec 12 20:41 testbak_2016-12-12_b.sql-rw-r--r--. 1 root root 1888 Dec 12 20:34 testbak_2016-12-12.sql-rw-r--r--. 1 root root 753 Dec 12 20:49 testbak_2016-12-12.sql.gz

同時也可以看的壓縮后的效果

3、多庫備份

[root@centos6 ~]# mysqldump -uroot -p -B test mysql|gzip >/download/testbak_$(date +%F).sql01.gzEnter password: -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.[root@centos6 ~]# ll /download/testbak_2016-12-12.sql01.gz -rw-r--r--. 1 root root 152696 Dec 12 20:52 /download/testbak_2016-12-12.sql01.gz

此處有個警告信息,可以忽略也可以備份時加上參數,備份語句如下

[root@centos6 ~]# mysqldump -uroot -p -B --events test mysql|gzip >/download/testbak_$(date +%F).sql02.gzEnter password: [root@centos6 ~]# ll /download/testbak_2016-12-12.sql02.gz -rw-r--r--. 1 root root 152749 Dec 12 20:54 /download/testbak_2016-12-12.sql02.gz

這樣就不會有這為警告信息了

但是這種多庫一起備份,就會產生一個問題,如果只是其中一個數據庫有問題了,就不好進行單庫恢復了,故此備份方法不常用,也不符合實際需求,因此多庫備份時就需要進行多次單庫備份的操作

[root@centos6 ~]# mysqldump -uroot -p -B test|gzip >/download/testbackup_$(date +%F).sql.gz Enter password: [root@centos6 ~]# mysqldump -uroot -p -B --events mysql|gzip >/download/mysqlbak_$(date +%F).sql.gz Enter password: [root@centos6 ~]# ll /download/total 80-rw-r--r--. 1 root root 152608 Dec 12 20:58 mysqlbak_2016-12-12.sql.gz-rw-r--r--. 1 root root 754 Dec 12 20:58 testbackup_2016-12-12.sql.gz-rw-r--r--. 1 root root 2027 Dec 12 20:41 testbak_2016-12-12_b.sql-rw-r--r--. 1 root root 1888 Dec 12 20:34 testbak_2016-12-12.sql-rw-r--r--. 1 root root 152696 Dec 12 20:52 testbak_2016-12-12.sql01.gz-rw-r--r--. 1 root root 152749 Dec 12 20:54 testbak_2016-12-12.sql02.gz-rw-r--r--. 1 root root 753 Dec 12 20:49 testbak_2016-12-12.sql.gz4、單表備份

分庫備份是為了恢復數據庫時方便操作,但是同樣面臨問題,如果是某個庫中的某一個表有損壞,但又不有全庫進行恢復,所以實際生產中常用的是分庫、分表進行備份,這樣數據也備份了,恢復時也好操作

[root@centos6 ~]# mysqldump -uroot -p -B test test >/download/test_testbak_$(date +%F).sql Enter password: [root@centos6 ~]# egrep -v '#|^$|*' /download/test_testbak_2016-12-12.sql-- MySQL dump 10.13 Distrib 5.5.52, for linux2.6 (x86_64)---- Host: localhost Database: test-- -------------------------------------------------------- Server version 5.5.53-log---- Current Database: `test`--USE `test`;---- Table structure for table `test`--DROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` int(4) NOT NULL, `name` char(20) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;---- Dumping data for table `test`--LOCK TABLES `test` WRITE;INSERT INTO `test` VALUES (1,’1’),(11,’text’),(21,’abc’),(9,’bcd’),(111,’1’),(441,’text’),(41,’abc’),(999,’bcd’);UNLOCK TABLES;---- Current Database: `test`--USE `test`;---- Table structure for table `test`--DROP TABLE IF EXISTS `test`;CREATE TABLE `test` ( `id` int(4) NOT NULL, `name` char(20) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;---- Dumping data for table `test`--LOCK TABLES `test` WRITE;INSERT INTO `test` VALUES (1,’1’),(11,’text’),(21,’abc’),(9,’bcd’),(111,’1’),(441,’text’),(41,’abc’),(999,’bcd’);UNLOCK TABLES;-- Dump completed on 2016-12-12 21:13:16

因此分表備份同分庫備份一樣,只需要進行多次單表備份的操作,但是有的小伙伴肯定會提出問題了,如果一個庫里幾千張表,幾萬張表,這種備份要備到猴年馬月吧????,數據量比較大的備份可以使用專業的備份工具,數據量不大或者表不是很多的情況,可以將備份操作寫成腳本 納入定時任務,定時執行,只需要檢查備份是否成功即可

分享一下民工哥,實際生產環境中一個簡單的備份腳本,僅供參考

[root@centos6 scripts]# vi bak.sh #!/bin/sh###########################################this scripts create by root of mingongge#create at 2016-11-11#######################################ip=`grep ’IPADDR’ /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F '=' ’{print $2}’`#定義服務器IP變量BAKDIR=/backup #定義備份路徑[ ! -d $BAKDIR/${ip} ] && mkdir -p $BAKDIR/${ip} #判斷如果不存在這個路徑就創建一個,為了服務器多的時候方便看DB_PWD='mingongge'DB_USER='root'MYSQL='/application/mysql/bin/mysql'MYSQL_DUMP='/application/mysql/bin/mysqldump'DATA=`date +%F`####bak data of test’s databses####DB_NAME=`$MYSQL -u$DB_USER -p$DB_PWD -e 'show databases;'|sed ’1,5d’` #定義數據庫變量for name in $DB_NAME#for循環語句取庫名do $MYSQL_DUMP -u$DB_USER -p$DB_PWD -B ${name} |gzip >$BAKDIR/${ip}/${name}_$DATA.sql.gz #全庫備份 [ ! -d $BAKDIR/${ip}/${name} ] && mkdir -p $BAKDIR/${ip}/${name}#判斷這個路徑,為了區別哪個庫的備份文件 for tablename in `$MYSQL -u$DB_USER -p$DB_PWD -e 'show tables from ${name};'|sed ’1d’`#for循環語句取表名 do $MYSQL_DUMP -u$DB_USER -p$DB_PWD ${name} ${tablename} |gzip >$BAKDIR/${ip}/${name}/${tablename}_$DATA.sql.gz#分表備份 donedone

執行的結果如下

[root@ranzhioa ~]# tree /backup//backup/10.1xx.1xx.1xx #服務器IP xxxxxxx #其實是庫名cash_balance_2016-12-15.sql.gzcash_depositor_2016-12-15.sql.gzcash_trade_2016-12-15.sql.gzcrm_customer_2016-12-15.sql.gzcrm_delivery_2016-12-15.sql.gzcrm_order_2016-12-15.sql.gzcrm_orderAction_2016-12-15.sql.gzcrm_orderField_2016-12-15.sql.gzcrm_plan_2016-12-15.sql.gz

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL查詢技巧大全》、《MySQL常用函數大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數據庫鎖相關技巧匯總》

希望本文所述對大家MySQL數據庫計有所幫助。

標簽: MySQL 數據庫
相關文章:
主站蜘蛛池模板: 语料库-提供经典范文,文案句子,常用文书,您的写作得力助手 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 细石混凝土泵_厂家_价格-烟台九达机械有限公司 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 上海律师咨询_上海法律在线咨询免费_找对口律师上策法网-策法网 广东高华家具-公寓床|学生宿舍双层铁床厂家【质保十年】 | 不锈钢发酵罐_水果酒发酵罐_谷物发酵罐_山东誉诚不锈钢制品有限公司 | 北京征地律师,征地拆迁律师,专业拆迁律师,北京拆迁律师,征地纠纷律师,征地诉讼律师,征地拆迁补偿,拆迁律师 - 北京凯诺律师事务所 | 杭州代理记账费用-公司注销需要多久-公司变更监事_杭州福道财务管理咨询有限公司 | 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 皮带机-带式输送机价格-固定式胶带机生产厂家-河南坤威机械 | 电梯装饰-北京万达中意电梯装饰有限公司 | 今日热点_实时热点_奇闻异事_趣闻趣事_灵异事件 - 奇闻事件 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | 建大仁科-温湿度变送器|温湿度传感器|温湿度记录仪_厂家_价格-山东仁科 | 河南中专学校|职高|技校招生-河南中职中专网 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | hc22_hc22价格_hc22哈氏合金—东锜特殊钢 | 安驭邦官网-双向万能直角铣头,加工中心侧铣头,角度头[厂家直销] 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 温州富欧金属封头-不锈钢封头厂家| 深圳3D打印服务-3D打印加工-手板模型加工厂-悟空打印坊 | 手术室净化装修-手术室净化工程公司-华锐手术室净化厂家 | 深圳装修_店面装修设计_餐厅设计_装修全包价格-尚泰装饰设计 | 环球周刊网| 仪器仪表网 - 永久免费的b2b电子商务平台 | 南京交通事故律师-专打交通事故的南京律师 | 匀胶机旋涂仪-声扫显微镜-工业水浸超声-安赛斯(北京)科技有限公司 | 机床导轨_导轨板_滚轮导轨-上海旻佑精密机械有限公司 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 智慧旅游_智慧景区_微景通-智慧旅游景区解决方案提供商 | 火锅底料批发-串串香技术培训[川禾川调官网] | 成都热收缩包装机_袖口式膜包机_高速塑封机价格_全自动封切机器_大型套膜机厂家 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 蚂蚁分类信息系统 - PHP同城分类信息系统 - MayiCMS | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 江苏皓越真空设备有限公司| 减速机电机一体机_带电机减速器一套_德国BOSERL电动机与减速箱生产厂家 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 检验科改造施工_DSA手术室净化_导管室装修_成都特殊科室建设厂家_医疗净化工程公司_四川华锐 |