mysql中 /*! ....*/ 不是注释,mysql为了保持兼容,它把一些特有的仅在mysql上用的语句放在/*!....*/中,

这样这些语句如果在其他数据库中是不会被执行,但在mysql中它会执行。

9.1、备份数据的意义:

9.2、备份数据库的方法:

mysql建库字符集是utf8,客户端也是utf8;

1、备份语法:

mysql数据库自带了一个很好用的备份命令,就是mysqldump;

利用mysqldump命令备份数据的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出

或者生成备份的文件的过程;物理备份是把磁盘上的数据直接打包的过程;

它的语法为:mysqldump -u<用户名> -p<密码> <数据库名> >备份的文件

2、数据库备份:

mysqldump -uroot -p123456 -B lc | gzip >/tmp/lc_bak.sql.gz

# -B:表示备份时指定库进行备份,可以指定多个库进行备份; 还原时库不存在会创建,如果库存在则不创建;

#CREATE DATABASE /*!32312 IF NOT EXISTS*/ `lc` /*!40100 DEFAULT CHARACTER SET utf8 */;

#USE `lc`;

mysql dump -uroot -p123456 -A -B --events | gzip >/tmp/mysql_bak.sql.gz

#-A:表示备份所有的库;

#表示备份mysql中的所有的库,包括mysql的用户库'mysql'等mysql初始化时创建的库;

3、查看备份库的sql语句:

[root@db01 ~]# egrep -v "^$|#|\*|--" /tmp/lc_bak.sql

USE `lc`;

DROP TABLE IF EXISTS `test`;

CREATE TABLE `test` (

`id` int(4) NOT NULL AUTO_INCREMENT,

`name` varchar(20) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

LOCK TABLES `test` WRITE;

INSERT INTO `test` VALUES (3,'刘畅'),(4,'刘本德');

UNLOCK TABLES;

4、--compact参数说明:

5、分库备份脚本操作:

(1)普通的模式:

mysql -uroot -p123456 -e "show databases;" | egrep -vi "database|infor|perfor" | awk '{print "mysqldump -uroot -p123456 -B",$1}'

mysql -uroot -p123456 -e "show databases;" | egrep -vi "database|infor|perfor" | sed 's#^#mysqldump -uroot -p123456 -B #g'

mysqldump -uroot -p123456 -B lc | gzip >/tmp/lc_bak.sql.gzip

mysqldump -uroot -p123456 -B lc1 | gzip >/tmp/lc1_bak.sql.gzip

(2)for循环的模式:

for dbname in `mysql -uroot -p123456 -e "show databases;" | egrep -vi "database|infor|perfor"`; do

mysqldump -uroot -p123456 -B $dbname | gzip >/tmp/${dbname}_bak.sql.gz

done

-- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.#该错误可以忽略不计;

9.3、备份表(单库操作):

#不需要加-B:-B代表备份的是库,或多个库;

1、备份库中的表和表上的数据:

(1)语法:

mysqldump -u<用户名> -p<密码> <数据库名> <表名> >备份的文件名

(2)用法:

mysqldump -uroot -p123456 lc | gzip >/tmp/lc_bak.sql.gz

#表示备份lc库中所有的表和数据;

mysqldump -uroot -p123456 lc test | gzip >/tmp/lc_test_bak.sql.gz

#表示备份lc库中test表和数据,后面还可以跟表;

2、备份库中表的表结构,不包含数据:

(1)使用‘-d’参数;

(2)用法:

mysqldump -uroot -p123456 -d lc | gzip >/tmp/lc_table_all_bak.sql.gz

#表示备份lc库中所有表的表结构,不包括表上的内容;

mysqldump -uroot -p123456 -d lc test | gzip >/tmp/lc_table_test_bak.sql.gz

#表示备份lc库中test表的表结构,后面还可以跟表;

3、只备份库中表的数据:

(1)使用‘-t’参数,等价参数为--no-create-info ;经常

‘--quick --no-create-info --extended-insert’三个参数一起使用;

--quick:表示一行一行的读;

--no-create-info:表示不导出表结构;

--extended-insert:表示insert语句插入数据时放到一行进行插入;

(2)用法:

mysqldump -uroot -p123456 -t lc | gzip >/tmp/lc_data_all_bak.sql.gz

#表示备份lc库中所有表上的数据;

mysqldump -uroot -p123456 -t lc test | gzip >/tmp/lc_data_test_bal.sql.gz

#表示备份lc库中test表上的数据,后面还可以跟表;

(4)总结:

一般使用备份表时使用的是备份库中的表和表上的数据一起备份,最好再做个库的整备,

这样在还原库的时候可以放置备份表的数据杂碎,也能根据需要还原特定的表上的数据;

9.4、备份表(多库的操作):

#需要加-B:-B代表备份的是库,或多个库;

1、备份多库的表结构:

mysqldump -uroot -p123456 -d -B lc | gzip >/tmp/lc_table_all.sql.gz

#表示备份lc库的表结构,后面还可以跟其它的库;

mysqldump -uroot -p123456 -d -A -B --events | gzip >/tmp/mysql_table_all.sql.gz

#表示备份mysql所有的库的表结构;

2、备份多库的表数据:

mysqldump -uroot -p123456 -t -B lc | gzip >/tmp/lc_data_all.sql.gz

#表示备份lc库的所有表上的数据,后面还可以跟其它的库;

mysqldump -uroot -p123456 -t -A -B --events | gzip >/tmp/mysql_table_all.sql.gz

#表示备份mysql所有的库的表上的数据;

9.5、备份库和表时刷新(切割)mysql的binlog参数:

1、备份数据库时刷新binlog:

(1)-F 参数:

mysqldump -uroot -p123456 -B -F lc | gzip >/tmp/lc_bak.sql.gz

#-F 自动分割binlog,自己需要确定binlog的位置;

(2)--master-data=1 参数:

mysqldump -uroot -p123456 -F --master-data=1 -B lc | gzip >/tmp/lc_bak.sql.gz

gzip -d /tmp/lc_bak.sql.gz

vim /tmp/lc_bak.sql #在备份的sql文件中有以下的语句来确定binlog的恢复点

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=107;

9.6、mysqlduamp的关键参数说明:

1、-B :指定多个库,增加建库语句和use连接库的语句;

2、--compact:去掉注释,适合调试输出,生产不用;

3、-A :备份所有的库;

4、-F: 刷新binlog日志;

5、--master-data=1:增加binlog日志文件名及对应的位置点;

#master-data=1或2使用的场合主要用于mysql的主从复制,使用'1'代表的是标记的位置点

#不会被注释掉,在slave上导入数据时就会执,使用'2'时代表标记的位置点会被注释掉;

#此参数在mysql的InnoDB引擎上使用

6、-x :--lock-all-tables,锁所有的表;

适用于myisam引擎,所有的用户都不能对表进行操作;

7、-l:--lock-tables,只读锁表,默认;

8、-t :只备份表的数据;

9、-d:只备份表的结构;

10、--single-transaction:适合innode事物数据库备份,导出的过程不能执行ddl语句,自动关闭默认锁--lock-tables;

--single-transaction参数的作用,设置事务的隔离级别为可重复读,即REPEATABLE READ,这样能保证在一个事务中

所有相同的查询读取到同样的数据,也就大概保证了在dump期间,如果其他innodb引擎的线程修改了表的数据并提交,对

该dump线程的数据并无影响,在这期间不会锁表;

11、-R:备份转存储的函数;

12、-E:--events:导出调度事件;

9.7、企业生产场景不同引擎备份命令:

1、myisam引擎备份:

mysqldump -uroot -p123456 -A -B -F -x -R --master-data=1 --events | gzip >/tmp/mysql_bak.sql.gz

2、innodb引擎备份:

mysqldump -uroot -p123456 -A -B -F --single-transaction -R --master-data=1 --events | gzip >/tmp/mysql_bak.sql.gz

3、如果是混合引擎备份:

推荐使用myisam的备份方式;

4、专职dba的备份:

9.8、数据库的恢复:

还原的时候如果表存在会自动drop table存在的表,不存在会自动创建;

有-B参数的备份库还原时无需指定库和建库操作(指定了库或指定的库错误也不影响),如果库存在则不创建;

没有-B参数备份的库需要指定库,如果没有库需要手动进行创建;

1、source命令恢复(需要登录数据库):

mysql -uroot -p123456

mysql> drop database lc;

mysql> source /tmp/lc_bak.sql;

2、普通恢复的命令:

1)解压数据:

gzip -d /tmp/lc_bak.sql.gz

2)备份库时指定了-B参数:

mysql -uroot -p123456 </tmp/lc_bak.sql

3)备份库时没有指定-B参数:

mysql -uroot -p123456 lc </tmp/lc_bak.sql

4)批量还原的方法:

[root@db01 tmp]# gzip -d *

[root@db01 tmp]# ls *.sql | sed -n "s#_bak.sql##gp"

mysql

for dbname in `ls *.sql | sed -n "s#_bak.sql##gp"`; do

mysql -uroot -p123456 <${dbname}_bak.sql

done

5)参数混用的方法:

mysql -uroot -p123456 -d -B lc lc1 | gzip >/tmp/table_lc

9.9、总结:

库到表到数据
还原数据需要库和表
还原表需要库
库必须要存在,表始终会被覆盖,数据不会被覆盖;

正常的企业环境备份是,对整个库进行备份,然后在对库的单表进行备份;

9、mysql的备份与恢复的更多相关文章

  1. MySQL的备份与恢复

    Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...

  2. MySQL增量备份与恢复实例【转】

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...

  3. Mysql 数据备份与恢复,用户创建,授权

    Mysql 数据备份与恢复,用户创建,授权 1. Mysqldump >outfile.sql 2. Mysql –uxxx –pxxx < backfile.sql 3. Create  ...

  4. 2020重新出发,MySql基础,MySql数据库备份与恢复

    @ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...

  5. MySQL的备份与恢复理解与备份策略

    MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...

  6. MySQL的备份与恢复具体解释

    MySQL数据备份 在mySQL里面,有逻辑备份和物理备份.逻辑备份最大长处是对于各种存储引擎,都能够使用相同的方法来备份. 而物理备份则不同.不同的存储引擎有着不同的备份方法. 逻辑备份与恢复 备份 ...

  7. MYSQL的备份与恢复--逻辑备份mysqldump

    目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...

  8. MYSQL的备份与恢复--物理备份xrabackup

    目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...

  9. Mysql—数据备份与恢复

    数据备份 # 备份单个数据库 [root@localhost ~]# mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql [root@localhos ...

  10. Centos下mysql数据库备份与恢复的方法

    一.mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于InnoDB的热备份.但由于是逻辑备份,所以速度不是很快,适合备份 ...

随机推荐

  1. 使用CSS设置边框和背景

    一.设置边框 1.边框样式 属性 说明 border-width 设置边框的宽度 boder-style 设置边框的样式 border-color 设置边框的颜色 a.border-width属性 自 ...

  2. Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时

    概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...

  3. 05丨实验:安装MongoDB

    https://docs.mongodb.com/manual/tutorial/install-mongodb-on-red-hat/ 源码安装 export PATH=$PATH:/data/mo ...

  4. 3.21-22 od、tee

    3.21 od:按不同进制显示文件       od命令用于输出文件的八进制.十六进制或者其他格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符.   -A 地址进制    按指定的进制 ...

  5. 利用redis未授权访问漏洞(windows版)

    0x00 原理   首先需要知道的是,redis是一种非关系型数据库.它在默认情况下,绑定在0.0.0.0:6379 ,若不采取相关策略,比如添加防火墙限制非信任IP访问,会使得redis服务暴露到公 ...

  6. GO汇编-函数

    GO汇编-函数 终于到函数了!因为Go汇编语言中,可以也建议通过Go语言来定义全局变量,那么剩下的也就是函数了.只有掌握了汇编函数的基本用法,才能真正算是Go汇编语言入门.本章将简单讨论Go汇编中函数 ...

  7. IP子网如何划分?so easy!

    IP地址与子网掩码 1. IP地址划分 1.1 IP地址 1.2 由两部分组成 1.3 IP地址的分类 1.4 IP地址的规划原则 2.子网掩码划分 2.1 32个二进制位 2.2IP地址和子网掩码作 ...

  8. Python+Selenium+Appium+API学习使用过的命令

    adb devices 查看连接电脑的手机设备 weditor 启动uiautomatorviewer2元素定位工具 以下2个命令作用一样 adb shell dumpsys activity | f ...

  9. CVPR2019论文看点:自学习Anchor原理

    CVPR2019论文看点:自学习Anchor原理 原论文链接:https://arxiv.org/pdf/1901.03278.pdf CVPR2019的一篇对anchor进行优化的论文,主要将原来需 ...

  10. 视觉SLAM的主要功能模块分析

    视觉SLAM的主要功能模块分析 一.基本概念 SLAM (simultaneous localization and mapping),也称为CML (Concurrent Mapping and L ...