zoukankan      html  css  js  c++  java
  • mysql完整备份与恢复

    1、备份单个数据库

    mysql数据库自带了一个很好用的备份命令,就是mysqldump,他的基本使用如下:
    语法:mysqldump -u 用户名 -p 数据库名 > 备份的文件名

         备份一
    	1、备份:mysqldump -uroot -p'*****' test >/opt/test_bak.sql
    	2、查看备份数据的内容    egrep -v "#|*|--|^$" /opt/test_bak.sql
    	3、为了方便测试可以考虑将原来的表删除:mysql -uroot -p'*****' -e "use test;dorp table test;"
    	4、恢复:mysql -uroot -p'*****' test </opt/test_bak.sql
    	5、查看恢复的数据 mysql -uroot -p'*****' -e "select * from test;"
    	
    	备份二
    	1、备份:mysqldump -uroot -p'*****' -B test >/opt/test_bak.sql    加了-B之后作用,增加了创建数据库和连接数据库的命令,加了比较好,-B可以指定多个库备份
    	2、恢复:mysql -uroot -p'*****' </opt/test_bak.sql
    
    	备份三
    	1、备份:mysqldump -uroot -p'*****' -B test|gzip >/opt/test_bak.sql.gz  压缩备份
    
    	备份四
    	1、备份:mysqldump -uroot -p'*****' -B test1 test2 |gzip >/opt/test_bak.sql    备份多个库
    

    分库备份:

    有时一个企业的数据库里会有多个库,但是出问题的时候很可能是某一个库,如果在备份时把所有的库都备份成了一个数据文件的话,恢复某一个库的数据时就比较麻烦了,所有-B是备份到一个数据文件里面的。

    2、备份表

    语法:mysqldump -u用户名 -p密码 数据库名 表名1 表2>备份的文件名 后面可以加若干个表

         分表备份:
    	每个表单独备份,而不是所有统一备份
    	
    	备份表结构:
    	mysqldump -u用户名 -p密码 -d 数据库 表 >备份文件
    	
    	备份数据:
    	mysqldump -u用户名 -p密码 -t 数据库 表 >备份文件
    

      

    备份整个数据库,所有的东西
      mysqldump -u用户名 -p密码 -A -B --events|gzip >文件    -A是所有的东西 
    

    3、插曲

    启用bin-log时,需要在配置文件里面开启
    	-F刷新bin-log,切割bin-log,不恢复老数据,恢复新数据
    	
    	--master-data=1  找到bin-log的位置,与-F的功能是一样的   =2的时候会加上注释
    	
    	#锁表
    	-x 锁表
    	-l 只读锁表
    	--single-transaction  适合innodb事务数据库备份,通常用它来保证备份的一致性,实际上它的工作原理是设定本次会话的隔离级别为:repeatable read,以确保本次会话dump时,不会看到其他会话已经提交了的数据
    	
    

    4、一个完整的备份过程

    myisam引擎:mysqldump -uroot -p123 -A -B --master-data=2 -F -x --events|gzip >/opt/test.sql.gz
    	
    innodb:mysqldump -uroot -p123 -A -B --master-data=2 -F --single-transaction --events|gzip >/opt/test.sql.gz
    	如果是混合引擎就以myisam为主
    

    5、恢复

    1、source 恢复
       进入mysql
      source /opt/13123.sql
    	 
       2、标准的恢复命令mysql
         mysql -uroot -p123 oldboy < /opt/13123.sql
    	 压缩了的需要先解压
    	 gzip -d mysql.sql.gz -d就是将文件保存为当前的名字,去掉gz
    

      

  • 相关阅读:
    linux学习笔记--文件
    linux学习笔记——基础命令
    nginx实现动静分离
    keepalived+nginx高可用负载均衡环境搭建
    keepalived衡环境搭建
    redis配置文件redis.conf说明
    基于sentinel 的redis集群环境搭建
    jdk动态代理
    spring的事物实现
    Linux用户配置
  • 原文地址:https://www.cnblogs.com/bill2014/p/7224990.html
Copyright © 2011-2022 走看看