MySQL自带备份命令->mysqldump

一 语法格式及命令参数

mysqldump -u 用户名-p 数据库名> 备份的文件名字

例子:mysqldump-uroot -p123456 hadoop > /opt/data/mysql_hadoop_

bak.sql

备份过程:它会将将老数据删掉,然后插入或者删除才释放锁他会将将老数据删掉,然后插入或者删除才释放锁

-A或者--all-databases:备份所有数据库

mysqldump-uroot -p123456 -A -B -E|gzip > /opt/bak/all.sql.gz

-B:导出脚本会创建库并加上use 数据库的过程;并且-B 还可以指定多个库

默认是不会use 你要导出的数据库,否则我们在恢复的时候还需要手动创建库,而且还不了解以前参数

mysqldump-uroot -p123456 -B hadoop > /opt/data/mysql_hadoop_bak.sql

备份多个数据库:

mysqldump-uroot -p123456 -B hadoop nicky|gzip > /opt/data/hadoop_nicky_gzip_bak.sql

--compact:可以优化输出内容,让容量更少,只是适合调试

mysqldump-uroot -p123456 --compact -B hadoop >

/opt/data/mysql_hadoop_bak.sql

-Y:备份所有表

-y:不备份表空间

-E--events:dumpevents

-F或者--flush-logs :dump之前刷新bin log

mysqldump-uroot -p123456 -A -B -E -F|gzip > /opt/bak/all.sql.gz

--flush-privileges:dump之后刷新权限表

-h: 主机名

-P:port

-p:密码

-R:dump存储过程

-S指定socket

-t:指示导出数据

--ignore-table=name不dump指定的表

-x,--lock-all-tables

-d:只是dump结构,不dump数据

--master-data=1可以保证不刷新binlog,就是全备的那个点,自动找到,自动找到bin log位置

mysqldump-uroot -p123456 --master-data=1 -B hadoop >/opt/data/hadoop_master_date_bak.sql

--default-charactor-set:指定字符集的mysqldump

mysqldump-uroot -p123456 --default-charactor-set=utf-8 hadoop >

/opt/data/mysql_hadoop_bak.sql

--single-transaction:适合innodb事务数据库备份

InnoDB表在备份的时候,经常启用选项:--single-transaction保证备份的一致性,实际上他的工作原理是设定本次会话隔离级别为

REPEATABLEREAD(可重复读),以确保本次会话不会看到其他会话已经提交了的数据

Linuxegrep命令用于在文件内查找指定的字符串。

数据库名|压缩格式:支持压缩

mysqldump-uroot -p123456 -B hadoop|gzip > /opt/data/mysql_hadoop_bak_gzip.sql.gz

此时sql就是一个二进制文件

恢复:

先删掉表student

mysql-uroot -p123456 -e "use hadoop;drop table student;"

恢复必须指定库

>>结论:

1导出数据最好使用-B参数

2可以对备份数据进行gzip压缩

二 mysqldump 的工作原理

我们利用mysql命令备份数据库的过程,实际上就是把数据从mysql库里以逻辑的sql语句形式直接输出或者生成备份文件的过程

恢复就是把备份是sql语句在mysql重新执行一次的过程

三 如何做分库备份

分库备份:执行一个备份语句备份一个库,入锅数据库有多个库,就执行多条相同的备份的单个库备份语句

查看所有数据库:

mysql-uroot -p123456 -e "show databases;"|grep -Evi"database|info|test|perf"

grep

-E:支持使用扩展的正则

-e:支持使用标准的正则

-i:忽略大小写

-v:选中非匹配的行

-c:统计行数

字符串结果交给bash运行

echo"ls -al /opt/data"|bash

mysql-uroot -p123456 -e "show databases;"|grep -Evi"database|info|perf|mysql"

hadoop

nicky

test

然后开始循环

#!/bin/bash

DB_PATH=/opt/bak

MYSQL_USER=root

MYSQL_PASSWD=123456

SOCKET=/data/3306/mysql.sock

MYSQL_CMD="mysql-u$MYSQL_USER -p$MYSQL_PASSWD -S $SOCKET"

MYSQL_DUMP="mysqldump-u$MYSQL_USER -p$MYSQL_PASSWD -S $SOCKET -x -B -F -R"

DB_LIST=`$MYSQL_CMD-e "show databases;"|grep -Evi "database|info|perf|mysql"`

[! -d $DB_PATH ] && mkdir -p $DB_PATH

fordbname in $DB_LIST

do

$MYSQL_DUMP $dbname|gzip >$DB_PATH/${dbname}_$(date +%F).sql.gz

done

>>备份单个表

mysqldump-uroot -p123456 数据库 表名1 >/opt/bak/hadoop_student.sql

>>备份多个表

mysqldump-uroot -p123456 数据库 表名1 表名2...> /opt/bak/tables.sql

一般备份方案:

myisam:

mysqldump-uroot -p123456 -A -B --master-data=1 -x -R |gzip > /opt/all.sql.gz

mysqldump-uroot -p123456 -A --flush-privileges --lock-all-tables \

--master-data=1-F --triggers -R -E --hex-blob > /opt/bak/all.sql

innodb:

mysqldump-uroot -p123456 -A -B --master-data=1 --single-transaction -R |gzip >/opt/all.sql.gz

mysqldump-uroot -p123456 -A --flush-privileges --single-transaction \

--master-data=1-F --triggers -R -E --hex-blob > /opt/bak/all.sql

如果两者都有,以myisam为准

四 利用source恢复MySQL数据

在mysql 执行 sourcedump文件路径

如果时gzip格式的,我们需要先解压文件

'gzip-d /opt/data/mysql_hadoop_bak.sql.gz'

mysql>source /opt/data/mysql_hadoop_bak.sql

五 查看当前数据库有哪些进程正在连接mysql

mysql-uroot -p123456 -e "show processlist"

mysql-uroot -p123456 -e "show full processlist"

如果连续两次show,还有那个进程在哪带着,可能是慢查询

六 查看当前数据库参数信息showvariables

mysql-uroot -p123456 -e "show variables;"

$mysql -uroot -p123456 -e "show variables;"|grep log_bin

log_bin     OFF

log_bin_trust_function_creators     OFF

sql_log_bin    ON

七 查看整个数据库状态showglobal status

>>查看当前会话数据库状态showglobal status,很重要,并要做好监控

八 修改数据库参数不重启就生效

key_buffer:myisam引擎存放索引的缓冲区,内存空间大了,就减少了去磁盘查找index

setkey_buffer_size=1024*1024*32;

然后配置文件修改

这样无论重启与否,都生效

九 mysqlbinlog 解析mysqlbin log日志的

作用:

用来记录mysql内部增删改等对mysql所有数据库有更新的内容的记录,只查不改的不会记录

命令:

==>查看binlog日志

如果我们想以可视化的形式查看日志,需要使用mysqlbinlog来查看,否则你看到的式二进制文件

mysqlbinlog/usr/local/mysql/data/mysql-bin.000001

现在有一个问题,如果全备份已经分库了,但是使用mysqlbinlog恢复数据的时候,binlog记录的时所有库的所有表数据

别的库没有问题,然后你在插入数据,别的库就会报错。

所以我们需要针对binlog拆库

==>mysqlbinlog拆库: -d 指定数据库名字

我只想恢复 hadoop库 的bin log

mysqlbinlog-d hadoop mysql-bin.000001 > /opt/bak/hadoop.sql

==>指定时间和位置点恢复 -r 重定向

mysqlbinlog/usr/local/mysql/data/mysql-bin.000001 --start-position=177 --stop-position=286-r /opt/bak/hadoop_bin.sql

mysqlbinlog/usr/local/mysql/data/mysql-bin.000001 --start-datetime='2016-11-29 11:11:11' \

--stop-datetime='2016-11-2911:11:13' -r /opt/bak/hadoop_bin.sql

比如假设某一个数据库在早上9点全备份,mysqldump,这时候bin log会记录一个位置

然后12点数据库不小心删掉了,那么先回复全备份,然后9-12点的恢复就靠这期间的

binlog文件

mysql-uroot -p123456 hadoop < /opt/data/mysql_hadoop_bak.sql

#查找当前目录下包含字符串“Linux”的文件

egrepLinux *

MySQL增量备份及恢复相关推荐

  1. mysql增量备份及恢复解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 前言 操作系统崩溃.电源故障.文件系统崩溃和硬件故障等异常状况都可能导致我们正在使用的数据库出现故障而产生数据库中数据不一致的 ...

  2. innobackupex做MySQL增量备份及恢复

    http://www.cnblogs.com/paul8339/p/6731688.html 转载于:https://www.cnblogs.com/kgdxpr/p/7610348.html

  3. mysql 增量备份_MySQL增量备份与恢复(增量备份概述、特点,断点恢复实操)

    一. MySQL 增量备份与恢复 使用 mysqldump 进行完全备份,备份的数据中有重复数据,备份时间与恢复时间过长.而增量备份就是自上一次备份之后增加或改变的内容. 1.1 增量备份的特点 增量 ...

  4. mysql整备_【mysql】使用xtrabackup在线增量备份及恢复数据库

    一.Percona Xtrabackup 简介 1.Xtrabackup  bin目录文件 介绍 1)innobackupex innobackupex 是xtrabackup的一个符号链接 . in ...

  5. C 实现Mysql增量备份_window下mysql数据库增量备份实现教程

    mysql增量备份(mysql5.1 之后),linux下mysql增量备份 网上资料很多.这里只说明window下mysql增量备份. 定义: mysql数据库会以二进制的形式,自动把用户对mysq ...

  6. MySQL 的备份和恢复机制 MyISAM 和 Innodb

    转自:http://blog.csdn.net/sosoft_dzz/article/details/5299666 deven感觉这个文章还是比较靠谱的. 本文讨论 MySQL 的备份和恢复机制,以 ...

  7. MYSQL增量备份和全量备份脚本分享

    mysql的全量备份与增量备份 全量备份:可以使用mysqldump直接备份整个库或者是备份其中某一个库或者一个库中的某个表. 增量备份:增量备份是针对于数据库的bin-log日志进行备份的,需要开始 ...

  8. Mysql运维管理-Mysql增量备份及分库分表备份数据恢复实战12

    1. MySQL数据库的备份与恢复 1.1 Mysqldump的工作原理? 利用mysqldump命令备份的过程,实际上就是把数据从mysql库里以逻辑的sql语句的形式直接输出或者生成备份的文件的过 ...

  9. mysql增量备份xtrabackup(innobackupex)方式

    mysql增量备份xtrabackup(innobackupex)方式 1.首先对数据库进行全备份 当前数据库表数据 数据库全备份 innobackupex --user=admin --passwo ...

最新文章

  1. Linux软raid创建和维护
  2. zend studio输出中文乱码的问题
  3. 安卓个人信息界面_LOL手游上架,安卓+IOS安装教程
  4. python_fullstack基础(十一)-常用模块
  5. Maven配置、使用
  6. SaaS软件的应用弱化了不同规模企业的竞争差距
  7. java连接SqlServer2000
  8. oracle索引b 树,oracle btree索引概述
  9. PHP中MD5函数效率
  10. Rxjava2中Single的just操作符源码学习
  11. 利用JAVA的BFS爬虫爬出豆瓣读书的评论和标签
  12. Contest1479 - 2018-ZZNU-ACM集训队 夏季队内积分赛 (3)E 项目开发
  13. 论文解读(PairNorm)《PairNorm: Tackling Oversmoothing in GNNs》
  14. Latex常见符号对照表
  15. 中国空气质量指数(AQI)及其计算方式
  16. 数据结构课程设计-推箱子
  17. Mac搭建GO开发环境
  18. 红旗桌面4.0正式版最新使用方法和问题解答100例
  19. clearcase 怎么删除hyperlink
  20. java音频解析_实例解析使用Java实现基本的音频播放器的编写要点

热门文章

  1. Python机器学习:决策树003使用信息熵寻找最优划分
  2. vs code怎么编译C语言,Visual Studio Code 如何编写运行 C、C++ 程序?
  3. Java如何隐藏控制按键动画_Java动画短片当不移动鼠标光标时
  4. GP学习(九)—Working with geodatabases and the geoprocessor
  5. SpringBoot项目集成Mybatis Plus(三)分页插件
  6. Java 算法 摆动序列
  7. 解决Flink案例DataStream中使用keyBy(0),keyBy弃用的问题
  8. 解决IDEA运行Flink报错java.lang.NoClassDefFoundError: org/apache/flink/api/common/ExecutionConfig....
  9. 时间戳转datetime格式
  10. python实现字符串匹配算法BF,BF改,KMP