数据库备份还原

MYISAM:  --lock-all-tables

INNODB: --single-transaction

#单个数据库备份及压缩
mysqldump -uroot -pmysql --opt --databases --routines --events --flush-logs --single-transaction --master-data=2 --default-character-set=utf8 test | gzip > /opt/testdb_back.sql.gzmysqldump -uroot -pmysql --opt -B -R -E -F --single-transaction --master-data=2 --default-character-set=utf8 test | gzip > /opt/testdb_back.sql.gz#所有数据库备份及压缩
mysqldump -uroot -pmysql --opt --databases --routines --events --flush-logs --all-databases --flush-privileges --single-transaction --master-data=2 --default-character-set=utf8 | gzip > /opt/alldb_back.sql.gzmysqldump -uroot -pmysql --opt -B -R -E -F -A --flush-privileges --single-transaction --master-data=2 --default-character-set=utf8 | gzip > /opt/alldb_back.sql.gz

单个用户数据库备份还原

#备份单个数据库
shell> mysqldump -uroot -pmysql --opt -B -R -E -F --single-transaction --master-data=2 --default-character-set=utf8 test > /root/test/backtest.sql#此时删除数据库 "test"
mysql> drop database test ;#还原数据库(方法一)
mysql> source /root/test/backtest.sql#还原数据库(方法二)
shell> mysql -uroot -pmysql < /root/test/backtest.sql---------------------------------------------------#查看完整备份位置
shell> cat /root/test/backtest.sql | grep "MASTER_LOG_POS"
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000018', MASTER_LOG_POS=154;#查看(数据库 test)事务日志内容,日志太大不建议这么查看
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v---------------------------------------------------#确定日志起始时间
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v | grep "end_log_pos 154"#获取某个数据库时间范围内的事务日志
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --start-datetime="2017-07-08 21:22:35" --stop-datetime="2017-07-08 22:12:23" > /root/test/backtestlog.sql#执行日志脚本(SQL 操作,将再次记录到事务日志中)
shell> mysql -uroot -pmysql < /root/test/backtestlog.sql---------------------------------------------------
#或者:
#因同一时间可能有多个操作,用时间还原不精确,也可以查看时间附近确定 position
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --base64-output=decode-rows -v | grep -10 "170708 22:12:23"#获取某个数据库位置点间的事务日志
shell> mysqlbinlog --no-defaults -d test mysql-bin.000018 --start-position=154 --stop-position=10556 > /root/test/backtestlog.sql#执行日志脚本(SQL 操作,将再次记录到事务日志中)
shell> mysql -uroot -pmysql < /root/test/backtestlog.sql

还原为一个新的数据库

因为备份时添加了选项"-B",则"create database ……" 及 "use <dbname>" 会记录在备份中。如果打算还原为一个新的数据库,则必须把备份文件的相关信息更改。如果还原在同一个实例,视图、存储过程、函数、触发器、事件等有调用原数据库表的,注意更改!尤其触发器,如果创建时限定了数据库(如 CREATE TRIGGER dbname.tr_test ……),则还原会提示已存在,如使用触发器,最好不要把数据库名写上。

本测试中,备份的是数据库 test,现在还原为一个新的数据库 testdb 。

#备份时不加参数"-B",还原时指定数据库即可。若备份有参数"-B",把脚本中的数据库替换。
shell> cp /root/test/backtest.sql /root/test/backtest_b.sql
shell> sed -i 's/CREATE DATABASE \/\*!32312 IF NOT EXISTS\*\/ `test`/CREATE DATABASE \/\*!32312 IF NOT EXISTS\*\/ `testdb`/g' /root/test/backtest_b.sql
shell> sed -i 's/USE `test`;/USE `testdb`;/g' /root/test/backtest_b.sql#还原数据库(方法一)
mysql> source /root/test/backtest_b.sql#还原数据库(方法二)
shell> mysql -uroot -pmysql < /root/test/backtest_b.sql


在 Windows 中使用命令行 cmd 备份数据库并压缩文件:(需安装 winrar)

set bkdb=mydb
set bkuser=root
set bkpw=mysql
set bkhost=localhost
set bkpath=D:\mysql_backup\set dt=%date:~,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set bkfile="%bkpath%%bkdb%_full_%dt%.sql"
set rarfile="%bkpath%%bkdb%_full_.rar"mysqldump -u%bkuser% -p%bkpw% --opt -B -R -E -F --single-transaction --default-character-set=utf8 %bkdb% > %bkfile%
"%ProgramFiles(x86)%\WinRAR\Rar.exe" a -ep1 -ag -df -m5 -ibck -y %rarfile% %bkfile%a: 添加压缩
-ag :默认生成的压缩文件添加时间,格式为:YYYYMMDDHHMMSS (可自定义)
-ep1:压缩文件不含输入的路径
-df :压缩后删彻底除源文件
-dr :压缩后删除源文件到回收站
-m5 :使用 RAR 5.0 压缩格式
-ibck :后台运行
-y:对所有询问均回应为"是"RAR 更多参数说明,参考安装目录中的文档:C:\Program Files (x86)\WinRAR\WinRAR.chm

window bat 导出 MySQL 授权脚本(此处只导出 grant 脚本)

@echo off
set "user=root"
set "pwd=mysql"
set "sqlfile=D:/MSSQLDATA/Backup/mysql_grant_sql.sql"echo.> %sqlfile%
mysql -u%user% -p%pwd% -B -N -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS grantsql FROM mysql.user;" | mysql -u%user% -p%pwd% -B -N | for /F "delims=" %%a in (' findstr /i "^grant"') do echo %%a; >> %sqlfile%

测试时注意:

#命令行执行
for /F "delims=" %a in (' findstr /i "^grant"') do echo %a;#脚本中执行
for /F "delims=" %%a in (' findstr /i "^grant"') do echo %%a;

为了数据库的高可用扩展,视图、存储过程、函数、触发器 等都不需要创建,数据库回归本质,只存储数据,所以上面的一些备份参数可以忽略。

MySQL 单个数据库备份还原相关推荐

  1. mysql administrator 备份 表_【转】如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库...

    如何使用 MySQL Administrator 管理/备份/还原 My SQL 数据库 MySQL Administrator 是什么软件? MySQL Administrator 是一个专门用于管 ...

  2. [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 2:备份.sql文件方式)

    本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库(利用.sql文件的方式). 关于MySQL数据库备份,本博客 ...

  3. 十一、MYSQL数据库备份还原

    十一.MYSQL数据库备份还原 数据库冷备份 mysqldump备份和还原数据库 备份 主从数据库备份 备份指定数据库 备份多个数据库 备份所有数据库 备份数据表 方法1: `mysqldump`备份 ...

  4. [ MySQL ] 使用Navicat进行MySQL数据库备份 / 还原(Part 1:备份.nb3文件方式)

    本文主要讲解如何用Navicat(Navicat Premium ,或者Navicat for mysql)进行MySQL备份和恢复数据库. 本文主要大纲为:使用Navicat备份工具方式进行备份和还 ...

  5. mysql超大数据库备份

    Xtrabackup工具是一个对InnoDB做数据的备份工具,支持全亮备份和增量备份.不支持MyISAM数据库的备份 但是Xtrabackup有一个工具innobackupex,它可以支持MyISAM ...

  6. mysql数据库压缩备份_MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份)...

    本文主要向大家介绍了MySQL数据库之mysql数据库备份命令分享(mysql压缩数据库备份) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 备份MySQL数据库的命令 复制代 ...

  7. php备份和恢复源码,PHP数据库备份还原类

    php代码<?php /** * 数据库备份还原类 * @author xialeistudio* @date 2014-03-17 * Class DatabaseTool */ class ...

  8. CC00073.bigdatajava——|JavaMySQL索引/存储过程/触发器.V14|——|MySQL.v14|数据库备份_SQL_Yog方式|

    一.数据库备份&还原 ### --- 数据库备份&还原--> 备份的应用场景 在服务器进行数据传输.数据存储和数据交换,就有可能产生数据故障. --> 比如发生意外停机或存 ...

  9. [整理] C#调用SQLDMO.DLL时间数据库备份 / 还原。 (香神无涯) // C#实现SQLSERVER2000数据库备份还原的两种方法 (带进度条)...

    /// <summary> /// 通过调用MSSQL的SQLDMO.DLL文件来实现备份数据库 /// 1.首先在在项目中引用SQLDMO.DLL文件. /// 2.在引用中的SQLDM ...

最新文章

  1. 车牌识别的分类器文件目录
  2. 把Redis当作队列来用,真的合适吗?
  3. 【数字信号处理】线性常系数差分方程 ( 根据 “ 线性常系数差分方程 “ 与 “ 边界条件 “ 确定系统是否是 “ 线性时不变系统 “ 案例二 | 修改边界条件 | 使用递推方法证明 )
  4. 1.5 成员方法的声明和调用,形参,实参
  5. android 6.0权限
  6. Spring 三种注入方式
  7. 【SMTP 补录 Apache服务】
  8. go语言在windows编译在linux上运行的可执行程序
  9. dw网页设计期末设计一个网页_Dreamweaver网页设计期末模拟试题(1)
  10. IIS Service Unavailable问题
  11. 监督学习和无监督学习_机器学习的要素是什么? 有监督学习和无监督学习两大类...
  12. POJ - 2069 Super Star HDU - 3007 Buried memory
  13. 【Java】Java 反射 object is not an instance of declaring class
  14. 中国最假的36句话(转自傲游论坛)
  15. JVM(4):Jvm调优-命令篇
  16. 海康威视多路播放开发步骤及参考代码
  17. 关于Mac系统输入法中文标点符号问题
  18. 基于Java毕业设计智友少儿编程学习平台源码+系统+mysql+lw文档+部署软件
  19. 支付宝内测商家版「朋友圈」
  20. Java 常用正则表达式与测试

热门文章

  1. 如何使用Redis实现电商系统的库存扣减
  2. 技术探讨之请教方舟编译器的十个问题
  3. 【小程序实现五星好评功能】
  4. JS字符串和数字相加结果是什么?
  5. spreadtrum 6600L 开机init流程
  6. (MATLAB)散点椭圆拟合与绘制代码
  7. RabbitMQ简介以及AMQP协议
  8. 387 stream中间操作:filter
  9. linux下的pmap命令
  10. Vi编辑器的常用命令3(其他操作)