9、mysql的备份与恢复
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的备份与恢复的更多相关文章
- MySQL的备份与恢复
Linux下的mysql的备份与恢复 备份: 比如我们要备份mysql中已经存在的名为linux的数据库,要用到命令mysqldump 命令格式如下: [root@linuxsir01 root]# ...
- MySQL增量备份与恢复实例【转】
小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份.增量备份的原理就是使用了mysql的binlog日志.本次操作的 ...
- Mysql 数据备份与恢复,用户创建,授权
Mysql 数据备份与恢复,用户创建,授权 1. Mysqldump >outfile.sql 2. Mysql –uxxx –pxxx < backfile.sql 3. Create ...
- 2020重新出发,MySql基础,MySql数据库备份与恢复
@ 目录 MySQL数据库备份与恢复 数据库为什么需要备份 MySQL备份类型 MySQL热备份及恢复 逻辑备份 mysqldump SELECT INTO-OUTFILE mydumper 裸文件备 ...
- MySQL的备份与恢复理解与备份策略
MySQL的备份主要分为逻辑备份和物理备份 逻辑备份 在MySQL中逻辑备份的最大优点是对各种存储引擎都可以用同样的方法来备份.而物理备份则不同,不同的存储引擎有着不同的备份方法.Mysql中的逻辑备 ...
- MySQL的备份与恢复具体解释
MySQL数据备份 在mySQL里面,有逻辑备份和物理备份.逻辑备份最大长处是对于各种存储引擎,都能够使用相同的方法来备份. 而物理备份则不同.不同的存储引擎有着不同的备份方法. 逻辑备份与恢复 备份 ...
- MYSQL的备份与恢复--逻辑备份mysqldump
目录 0.备份与恢复概述 1.逻辑备份-完整备份与恢复 2.逻辑备份-增量备份与恢复 (1)环境准备 (2)恢复全量数据 (3)恢复增量备份 3.新来的开发妹子删了库! (1)模拟环境准备 (2)全备 ...
- MYSQL的备份与恢复--物理备份xrabackup
目录 1.数据库完整备份与恢复 (1)环境准备 (2)完全备份恢复流程 2.数据库增量备份与恢复 (1)增量和差异概述 (2)增量备份和恢复 3.数据库差异备份与恢复 4.简单命令进行物理备份 5.实 ...
- Mysql—数据备份与恢复
数据备份 # 备份单个数据库 [root@localhost ~]# mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sql [root@localhos ...
- Centos下mysql数据库备份与恢复的方法
一.mysqldump工具备份 mysqldump由于是mysql自带的备份工具,所以也是最常用的mysql数据库的备份工具.支持基于InnoDB的热备份.但由于是逻辑备份,所以速度不是很快,适合备份 ...
随机推荐
- [bug] MySQL: The user specified as a definer ('root'@'%') does not exist
错误1 gciantispider.getchildlst does not exist 原因 getchildlst创建失败 解决 在mysql中设置mysqld中加上log_bin_trust_f ...
- linux下dmidecode命令获取硬件信息
linux下dmidecode命令获取硬件信息 2 A+ 所属分类:Linux 运维工具 dmidecode在 Linux 系统下获取有关硬件方面的信息.dmidecode 遵循 SMBIOS/DMI ...
- C++课程设计 通讯录管理系统 原码及解析
设计题目:通信录管理系统 用C++设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理. (一)功能要求 查看功能:选择此功能时,列出下列三类选择. A 办公类B 个人类C 商务类,当选中某类时 ...
- 使用nmcli命令配置网络
!!!前言 nmcli是redhat7或者centos7之后的命令该命令可以完成网卡上所有的配置工作,并且可以写入配置文件,永久生效 1.NetworkManager NetworkManager是管 ...
- python基础之常用模块一(sys、greenlet、pymysql、paramiko、pexpect、configparser)
一.sys模块(内置模块) 用于提供对解释器相关的操作 import syssys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) ...
- Linux进阶之环境变量文件/etc/profile、/etc/bashrc、/etc/environment
一.Centos 环境变量/etc/profile和/etc/profile.d 1.两个文件都是设置环境变量的文件. 2./etc/profile 是永久性的环境变量,是全局变量,/etc/prof ...
- Maven 阿里云镜像配置
1. 为什么要配置 Maven 阿里云镜像 安装 Maven 后默认是从国外 Maven 中央仓库下载内容,而下载速度简直可以用龟速来形容,不仅慢而且还经常出错,简直让人抓狂. 这时国内大厂阿里巴巴, ...
- 11.14 mii-tool:管理网络接口的状态
mii-tool命令用于查看.管理网络接口,默认情况下网卡的状态是自动协商的,但是有时也会出现不正常的情况,可以使用mii-tool进行调整. mii-tool [option] [interface ...
- 嵌入式Boa服务器上CGI开发-(转自Bryce.Xiao)
嵌入式WEB服务器常见的有lighttpd shttpd thttpdboa mathopd minihttpdappwebgoahead=============================== ...
- x轴滚动
#region 设置x轴滚动 XYDiagram diagram = (XYDiagram)chartRoomUserAnalysisHis.Diagram; diagram.Ax ...