我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql备份、恢复之mysqldump

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql备份、恢复之mysqldump

  mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等

 mysqldump 语法 : 

  默认配置读取路径:  /etc/mysql/my.cnf     /etc/my.cnf    ~/.my.cnf  

   Usage: mysqldump [OPTIONS] database [tables] 

   OR   mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] 

   OR   mysqldump [OPTIONS] --all-databases [OPTIONS]

常用参数 :  
    -u, --user=name         指定用户 
    -h, --host=name         指定主机 
    -p, --password[=name]      指定密码 
    -A, --all-databases       指定所有库,-A与--all-databases不同时使用 
    -B, --databases         只指定--databases表示备份单个数据库;多数据库之间使用空格隔开;
                     如果不指定--databases表示备份整个数据库;只指定dbname表示备份单张表;多表之间使用空格隔开
    --master-data[=#]         0 表示关闭,默认值为 0 
                     1 表示开头打印CHANGE MASTER命令信息,在复制场景中有用 
                     2 表示添加注释信息,记录当前所处二进制日志及所处位置 
    --single-transaction       如果全部为 InnoDB引擎表,则不需要使用 --lock-all-tables;
                     基于此选项能实现热备InnoDB表;会启动单个大事务,对全局服务影响可能是持久的
    --lock-all-tables         执行备份前请求锁定表,一般只锁定当前要备份的数据库及表 
    --add-drop-database        在恢复之前先删除已经存在的对应数据库 
    --add-drop-table         在恢复之前先删除已经存在的对应表 
    -C, --compress          将数据先压缩后通过网络传输 
    -E, --events           备份数据同时,备份事件调度器代码 
    -R, --routines          备份数据同时,备份存储过程和存储函数 
    -d, --no-data          表示只备份表结构不备份数据,复制表结构、空库至其它服务器时有用.其它任何时候不可用  
    --opt               同时启动各种高级选项

 备份方式 : 

    全量+增量+二进制日志 

      前提需要在配置中添加参数 : 

        default-storage-engine = InnoDB       设置默认存储引擎为InnoDB 

        innodb_file_per_table=1            设置每表单个表空间 

        log-bin=mysql-bin                启用二进制功能

备份过程 : 
    全量备份 : 
      使用InnoDB引擎,备份使用--single-transaction选项不需要锁定表即实现热备;使用非InnoDB引擎,备份需要使用--lock-all-tables选项进行请求锁定所有表后开始备份
 
      mysqldump -uroot -pmypass --single-transaction --all-databases --master-data=2 > /backup/mysql_fullbak.sql
 
    增量备份 : 
      mysql>SHOW MASTER STATUS;              查看当前处于哪个日志文件及位置 
         less  /backup/mysql_fullbak.sql     查看从哪个位置开始 
      mysqlbinlog --start-position=4579 --stop-position=4868 mysql-bin.000015 > /backup/increment.sql  指定开始及结束位置导出成增量备份
      
    二进制日志备份: 
      mysql>INSERT INTO test (Name,Age) VALUES ('tom',18);       增量备份后,插入一条数据
      mysql>DROP DATABASE hello;                                 此时删除数据库
      mysql>SHOW MASTER STATUS;                           查看当前处于哪个日志文件及位置
      mysqlbinlog --start-position=4868 mysql-bin.000015  查看数据库崩溃前二进制日志开始位置,结束位置必须是数据库删除之前位置
      mysqlbinlog --start-position=4868 --stop-position=5062 mysql-bin.000015 > /tmp/hello.sql 将二进制日志启动时位置至崩溃前位置数据导出
恢复过程 : 
    前提 : 清空数据目录下所有文件,重新初始化数据库 
      mysql>SET GLOBAL sql_log_bin=0;      恢复时需要临时关闭二进制日志,如不关闭,恢复数据将记录进二进制日志增加日志管理难度
      mysql>FLUSH LOGS;                    手动对二进制日志进行一次滚动
      mysql < /backup/mysql_fullbak.sql    恢复全量备份
      mysql < /backup/increment.sql        恢复增量备份
      mysql < /tmp/hello.sql               恢复崩溃前导出二进制数据
      mysql>SET GLOBAL sql_log_bin=1;      恢复完成开启二进制日志

  恢复后需要使用 mysqlcheck -uroot -pmypass -c -all-databases 检查所有表是否存在问题,所有恢复完成后请记得对数据库做一次全量备份


  至此,使用mysqldump备份恢复完成,如有错误请大家指教!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysql备份、恢复之mysqldump

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Mysql逻辑备份恢复-mysqldump使用

备份单个数据库:mysqldump -u 用户名 -p 数据库名 >filename.sql     --no-data(-d)  只备份表结构     -t         只备份表数据    --databases  指定主机上要备份的数据库     -A
Mysql逻辑备份恢复-mysqldump使用
2014-05-10

mysql数据备份与恢复之mysqldump和source命令

导入到数据库use databasesource dbname.sql导出数据1 导出一个数据库的结构mysqldump -d dbname -uroot -p > dbname.sql2 导出多个数据库的结构mysqldump -d -B dbname1 d
mysql数据备份与恢复之mysqldump和source命令
2019-06-22

MySQL5.7 mysqldump备份与恢复的实现

MySQL 备份 冷备份: 停止服务进行备份,即停止数据库的写入 热备份: 不停止服务进行备份(在线) mysql 的 MyIsam 引擎只支持冷备份,InnoDB 支持热备份,原因: InnoDB引擎是事务性存储引擎,每一条语句都会写日志
2022-05-15

MySQL热备之PXB备份与恢复

?????? 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验 一位上进心十足的【大数据领域博主】!??? 中国DBA联盟(ACDU)成员,目前从事DBA及程序编程 擅长主流数据Ora
2023-08-16

MySQL之xtrabackup备份恢复的实现

目录1、安装xtrabackup2、备份2.1、做一次全备2.2、进入my编程客栈sql添加数据2.3、做一次增备2.4、删除数据库(千万不要在生产库执行!!!)3、恢复3.1、准备阶段3.2、模仿数据库丢失,停掉服务3.3、恢复阶段3.4
2023-02-03

编程热搜

目录