zoukankan      html  css  js  c++  java
  • MySql数据备份与恢复小结

    方法1

    备份

    1 SELECT * INTO OUTFILE "D:\1.sql" FROM 表名;

    恢复

    1 LOAD DATA INFILE "D:\1.sql" INTO TABLE 表名;
    补充几个设置
    1. FIELDS TERMINATED BY ',' #字段间隔符
    2. OPTIONALLY ENCLOSED BY '"' #字符串类型字段包围符
    3. LINES TERMINATED BY ' ' #换行符
    于是备份命令改为
    1 SELECT
    2     * INTO OUTFILE "D:\1.sql" FIELDS TERMINATED BY ','
    3     *  OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '
    '
    4 FROM
    5     表名;

    恢复数据改为
    1 LOAD DATA INFILE "D:\1.sql" 
    2   INTO TABLE 表名 
    3 FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '
    ';

    注意

    1. 要有文件目录的读写权限 特别是在linux下
    2. 不能备份表结构 善用SHOW CREATE TABLE 表名来获取结构并备份;

    方法2

    备份

    1 mysqldump -uroot -p密码 数据库名 -l -F > '/usr/data.sql'
    2 
    3 #在mysql5.6中失效原因是不能在命令行中出现密码   需要在etc下的my.cnf中写入
    4 [mysqldump]
    5 user=备份用户名
    6 password=备份用户密码
    7 #然后执行
    8 mysqldump 数据库名 -l -F > '/usr/data.sql'

     恢复的时候可能会因为数据过大造成失败 先运行

    set global wait_timeout=60000;
    set global max_allowed_packet = 64*1024*1024

    恢复

    1 mysql -uroot -p123456 数据库名 -v -f</usr/data.sql
    2 #-v 查看详细信息
    3 #-f 当中间遇到错误 可以跳过 忽略错误

    恢复binlog数据

    1 #恢复全部数据
    2 mysqlbinlog --no-defaults mysql.000001 |mysql -uroot -p123456 数据库名
    3 #恢复部分数据
    4 mysqlbinlog --no-defaults mysqlbinlog.00001 --start-position="193" --stop-position="280"  |mysql -uroot -p123456 数据库名
    5 #根据pos位置193到280之间 恢复数据

     

    方法3

    停掉mysql的服务,然后tar打包data目录下的数据文件即可,恢复数据时最好采用相同版本的数据库软件
     
  • 相关阅读:
    HTTP 常用 Header
    三大框架面试笔记-Hibernate
    三大框架面试笔记-Spring
    Bloom Filter概念和原理
    笔记:编写高质量代码 改善Java程序的151个建议
    笔记:Effective Java
    HTTP状态码
    JAVA8 十大新特性详解
    java7 新特性
    笔记:Hadoop权威指南 第10章 管理Hadoop
  • 原文地址:https://www.cnblogs.com/toumingbai/p/3778498.html
Copyright © 2011-2022 走看看