zoukankan      html  css  js  c++  java
  • mysql数据备份

    MySQL数据备份

    #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境(
    如数据文件、控制文件、归档日志文件等)。
    但不能恢复到异构系统中如Windows。 
    
    #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。
    #3. 导出表: 将表导入到文本文件中。

    使用Navicat工具

     点击转储SQL

    使用MysqlWorkbench工具

     

    使用mysqldump实现逻辑备份

    #语法:
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
    当你是本地登录的时候这个-h可以不写,当其他用户登录时,就得写上-h 服务器
    
    1.单库中所有表和数据备份
    mysqldump -uroot -pmysql123 testmysql > testmysqlbak.sql
    
    2.单库中部分表和数据备份
    mysqldump -uroot -pmysql123 testmysql test1 test2 > tablebak1.sql
    
    3.多库备份
    mysqldump -uroot -pmysql123 --databases testmysql scrapy_study > mysqlbak.sql
    4.备份所有库
    mysqldump -uroot -pmysql123 --all-databases > mysqlallbak.sql
    5.备份存储过程、触发器、函数
    mysqldump -R -ndt testmysql -uroot -pmysql123 > proc.sql
    6.不导出触发器(触发器是默认导出的–triggers,使用–skip-triggers屏蔽导出触发器)
    mysqldump --skip-triggers dbname1 -u root -p > xxx.sql
    
       
    总结一下:
    
    -d 结构(--no-data:不导出任何数据,只导出数据库表结构)
    
    -t 数据(--no-create-info:只导出数据,而不添加CREATE TABLE 语句)
    
    -n (--no-create-db:只导出数据,而不添加CREATE DATABASE 语句)
    
    -R (--routines:导出存储过程以及自定义函数)
    
    -E (--events:导出事件)
    
    --triggers (默认导出触发器,使用--skip-triggers屏蔽导出)
    
    -B (--databases:导出数据库列表,单个库时可省略)
    
    --tables 表列表(单个表时可省略)
    ①同时导出结构以及数据时可同时省略-d和-t
    ②同时 不 导出结构和数据可使用-ntd
    ③只导出存储过程和函数可使用-R -ntd
    ④导出所有(结构&数据&存储过程&函数&事件&触发器)使用-R -E(相当于①,省略了-d -t;触发器默认导出)
    ⑤只导出结构&函数&事件&触发器使用 -R -E -d 

    恢复数据库

    方法1.在没有登录进去之前恢复
    C:UsersAdministrator>mysql -uroot -p123456 test < dbbak.sql
    方法2.mysql登录进去后恢复
    mysql> use testmysql;
    Database changed
    mysql> source proc.sql
    

      

    导入导出数据

    导出

    # 导出
    
    select *
    into outfile '/home/mysql/table1_data.csv'
    fields terminated by ',' optionally enclosed by '"' escaped by '"'
    lines terminated by '
    '
    from user;
    
    Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
    
    # 解决
    mysql> show variables like '%secure%';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | secure_auth      | OFF   |
    | secure_file_priv | /     |
    +------------------+-------+
    
    #修改配置my.cnf
    secure_file_priv=''      -- 不对mysqld导入导出做限制
    
    #参数解释
    secure_file_prive=null   -- 限制mysqld不允许导入导出
    secure_file_priv=/tmp/   -- 限制mysqld导入导出只能发生在/tmp/目录下
    secure_file_priv=''      -- 不对mysqld导入导出做限制
    
    
    #修改后,重启mysql
    service mysqld restart
    
    #导出csv
    mysql> select *
        -> into outfile '/home/mysql/table1_data.csv'
        -> fields terminated by ',' optionally enclosed by '"' escaped by '"'
        -> lines terminated by '
    '
        -> from user;
    Query OK, 3 rows affected (0.00 sec)
    
    #导出txt
    mysql> select *
    -> into outfile '/home/mysql/table1_data.txt'
    -> fields terminated by '|' 
    -> from user;
    Query OK, 3 rows affected (0.00 sec)
    

      

    导入

    load data infile '/home/mysql/table1_data.csv'
    into table user 
    fields terminated by ',' optionally enclosed by '"' escaped by '"' 
    lines terminated by '
    ';
    
    load data infile '/home/mysql/table1_data.txt' 
    into table user
    fields terminated by '|'
    
    
    
    mysql> delete from user;
    Query OK, 3 rows affected (0.02 sec)
    
    mysql> select * from user;
    Empty set (0.00 sec)
    
    mysql> load data infile '/home/mysql/table1_data.csv'
        -> into table user 
        -> fields terminated by ',' optionally enclosed by '"' escaped by '"' 
        -> lines terminated by '
    ';
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
    
    mysql> select * from user;
    +----+------+--------+
    | id | name | dep_id |
    +----+------+--------+
    |  4 | egon |      1 |
    |  5 | alex |      2 |
    |  6 | jing |      3 |
    +----+------+--------+
    3 rows in set (0.00 sec)
    
    mysql> truncate table user;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> load data infile '/home/mysql/table1_data.txt' 
        -> into table user
        -> fields terminated by '|';
    Query OK, 3 rows affected (0.00 sec)
    Records: 3  Deleted: 0  Skipped: 0  Warnings: 0
    
    mysql> select * from user;
    +----+------+--------+
    | id | name | dep_id |
    +----+------+--------+
    |  4 | egon |      1 |
    |  5 | alex |      2 |
    |  6 | jing |      3 |
    +----+------+--------+
    3 rows in set (0.00 sec)
    

      

      

      

  • 相关阅读:
    python 生成随机数、生成 uuid
    python django 之 django自带的分页
    python django 之 django自定制分页
    禁止用户使用 sudo su 命令进入root 模式
    MySQL学习之路 一 : MySQL 5.7.19 源码安装
    Ubuntu 16.04 apt 国内源
    Python开发(三):字符编码,文件操作,函数
    如何装双系统详细步骤:以win10+centos为例
    中缀表达式转换成后缀表达式
    getch()、getche()和getchar()函数
  • 原文地址:https://www.cnblogs.com/xiao-apple36/p/9621063.html
Copyright © 2011-2022 走看看