我们需要明白,越是在最忙的时候,越需要空出一些时间来应对一些意想不到的事

对于企业,任何数据库的数据都是核心的,如何进行数据的备份,确保数据的安全显得尤为重要。

如今,mysql数据库使用越来约广泛,如何进行mysql数据库的备份也是dba的一个基本技能​。本文将详细介绍mysql中的mysqldump命令的​使用。

1,命令格式

mysqldump -u root -p dbname > dbname.sql

2,查看备份结果

egrep -v "#|\*|--|^$" dbname.sql

3,参数

--compact:

让输出内容更简洁,适合调试,不是很建议使用

-B:

用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数作为      数据库名,后面的作为表名

压缩:

 
mysqldump -u root -p dbname|gzip > dbname.sql

--all-databases, -A:

备份所有数据库

--databases, -B:

用于备份多个数据库,如果没有该选项,mysqldump把第一个名字参数        作为数据库名,后面的作为表名。使用该选项,mysqldum把每个名字都      当作为数据库名。

--force, -f:

即使发现sql错误,仍然继续备份

--host=host_name, -h host_name:

备份主机名,默认为localhost

--no-data, -d:

只导出表结构

--password[=password], -p[password]:

密码

--port=port_num, -P port_num:

制定TCP/IP连接时的端口号

--quick, -q:

快速导出

--master-data:

可以输出日志所在位置(binlog)

-x:--lock-all-tables

-F:

切换binlog

-l: --lock-tables

--single-transaction:

适合innodb事务数据库备份

--routines:

来备份存储过程和函数,触发器默认会备份

4,shell命令生成备份脚本

mysql -u root -p '123456' -e "show databases;" | grep -Evi "database|infor|perfor"|sed -r 's#^([a-z].*$)#mysqldump -u root -p '123456' --events -B \1|gzip >/opt/\1.sql.gz#g'

脚本​编写:

vi dbbak.shfor dbname in `mysql -uroot -p'123456' -e "show databases;"|grep -Evi "database|infor|perfor"`do mysqldump -uroot -p'123456' --events -B $dbname|gzip > /opt/bak/${dbname}_bak.sql.gzdone

innodb:

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --databases db1 db2 db3 > alldb.sql;

5,生产备份

myisam:

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

innodb:

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

6,搭建slave环境

一般有两种方法,对于规模不大的库,可以采用mysqldump来搭建;对        于规模很大的库,最好采用xtrabackup来搭建,速度要快很多。

6.1,​说明:

首先 分别在master和slave上设置不同的server_id=1/101,启用master 上的log-bin=1,启用slave上的relog-log=relay-bin; 在master上设置:

binlog_format=row;二进制日志的格式。maser上最好还设置 sync_binlog=1 和 innodb_flush_log_at_trx_commit=1防止发生服务器崩溃时

导致复制破坏。在slave上最好还配置:read-only=1 和 skip-slave-start=1 前者可以防止没有super权限的用户在slave上进行写,后者防止在启动

slave数据库时,自动启动复制线程。以后需要手动start slave来启动复制线程。注意slave没有必要启用 log-bin=1,除非需要搭建二级slave。

因为slave的搭建需要一致性的备份,所以需要启用 --lock-all-tables(master-data=1/2会自动启用--lock-all-tables)或者--single-transaction;

另外还需要知道该一致性备份的数据,对应的master上的binary log的文件名,以及在该文件中的position,所以必须启用 master-data选项。

因为--master-data会启用--lock-all-tables 所以数据才是一致性的;但是导致了全局锁,不能进行任何修改操作;下面我们使用--single-transaction进行优化

6.2​,流程:

1)全备:

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --databases db1 db2 db3 > alldb.sql;​mysqldump -uxxx -p --flush-privileges --databases mysql > mysql.sql;

如果要备份​mysql库:

mysqldump -uxxx -p --single-transaction --master-data=2 --routines --flush-logs --flush-privileges --all-databases > alldb.sql;

有时,还需要加入:--default-character-set=utf8/utf8mb4 ,该选项一般也可以配置在/etc/my.cnf中。

增量备份:flush logs; 然后将binary log存储起来即可。

2)搭建slave时的最佳选项:

 

   mysqldump -uxxx -p --single-transaction --master-data=2 --routines --databases db1 db2 db3 > alldb.sql;

搭建slave,没有必要 --flush-logs。当然搭建slave的最佳方式是使用 xtrabackup,物理备份。

3)先还原数据库,然后应用增量日志和最新日志,binary log在应用之前需要使用mysqlbinlog命令来处理。

                                             欢迎大家关注以下公众号进行数据库方面知识探讨:

                                                                     

mysq命令mysqldump详解(实现备份)相关推荐

  1. php mysql source_Mysql数据库导入命令Source详解

    Mysql数据库导入命令Source详解 几个常用用例: 1.导出整个数据库 mysqldump -u 用户名 -p 数据库名 > 导出的文件名mysqldump -u root -p data ...

  2. linux dd命令使用详解

    linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名, ...

  3. Linux Shell脚本入门--wget 命令用法详解

    Linux Shell脚本入门--wget 命令用法详解 wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上.它有以下功能 ...

  4. dos下的edit命令使用详解

    dos下的edit命令使用详解 来源:网络 作者:未知 edit命令是一个简单的编辑软件,我们经常用它来编辑一些程序和批处理文件. 比如,我想在c盘根目录下编辑一个简单的批处理文件,要求无论当前盘和当 ...

  5. Linux下Grub命令配置详解

    grub(Grand Unified Boot Loader)启动引导器 与grub相似软件比较 BM:安装多操作系统软件,必须把两个操作系统安装在主分区,硬盘最多可以分4个主分区. LILO:以前l ...

  6. chmod命令使用详解

    文件/目录权限设置命令 chmod 文件/目录权限设置命令:chmod 这是Linux系统管理员最常用到的命令之一,它用于改变文件或目录的访问权限.该命令有两种用法: 用包含字母和操作符表达式的文字设 ...

  7. linux ps命令使用详解

    PS是LINUX下最常用的也是非常强大的进程查看命令 1. ps简介 前面介绍的两个命令都是用于查看当前系统用户的情况,下面就来看看进程的情况,这也是本章的主题. 要对进程进行监测和控制,首先必须要了 ...

  8. install 命令用法详解

    install 命令用法详解 http://man.linuxde.net/install install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似 ...

  9. linux :Tar 命令参数详解

    linux Tar 命令参数详解 tar命令 1. 作用 tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户. 2. 格式 tar [主选项+辅 ...

最新文章

  1. 无法启动outlook “外出时的助理程序”
  2. for 循环迭代变量
  3. linux 怎么配置apache,在Linux下配置Apache Web服务
  4. java关闭io流_Java IO流关闭问题的深入研究
  5. webpack VS Node.js - 二者对 require 功能的实现区别
  6. 微信小程序实践_3点击版面图片获取新闻链接
  7. JS_单个或多个文件上传_不支持单独修改
  8. 回顾经典,Netflix的推荐系统架构
  9. zenmap nmap输出无显示_双路显示控制仪XME-H80-1616价格报价
  10. Linux模拟超级终端minicom
  11. 时间预定java,在预定的时间运行任务java,apache
  12. 快速构建Windows 8风格应用34-构建Toast通知
  13. 自制jQuery 复选框全选与反选插件
  14. iOS pdf矢量图代替多倍图
  15. c语言课程设计物业,C语言课程设计报告--物业管理系统.doc
  16. FYI | Neuro Workshop (Virtual)-Connectomics
  17. 跨境必看:跨境支付问题以及热门跨境支付方式的优劣势分析!
  18. 华夏ERP没有找到新增功能
  19. WPS如何将金额快速改为万元显示
  20. 显示控件——字符显示之艺术字

热门文章

  1. ffmpeg本地视频文件直播推流+web播放器无插件直播
  2. Leetcode面试热题(九)
  3. adb命令截屏和录屏
  4. 2023上半年软考系统分析师科目一整理-02
  5. 数据结构与算法-基础算法篇-排序(归并排序、快速排序)
  6. 如何快速开发软件?这篇文章说明白了
  7. think.class.php错误,thinkphp源码分析(四)—错误及异常处理篇
  8. 2022N1叉车司机考试题及在线模拟考试
  9. 使用动态规划和深度优先搜索解决TSP问题,python编写
  10. 【ARMv8 编程】A64 流控制指令