zoukankan      html  css  js  c++  java
  • MySQL数据库学习【第十一篇】IDE工具介绍及数据备份

    一、IDE工具介绍

    生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具navicat

    二、MySQL数据备份

    #1. 物理备份: 直接复制数据库文件,适用于大型数据库环境(
    如数据文件、控制文件、归档日志文件等)。
    但不能恢复到异构系统中如Windows。

    #2. 逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。
    #3. 导出表: 将表导入到文本文件中。

    也可以用IDE工具来实现备份,点击转储SQL..,那我们重点来研究一下MySQLdump实现的逻辑备份

    1.使用mysqldump实现逻辑备份 

    #语法:
    # mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql
    当你是本地登录的时候这个-h可以不写,当其他用户登录时,就得写上-h 服务器

    #示例:
    1.单库备份
    mysqldump -uroot -p123456 day47 > E:\day47.sql
    mysqldump -uroot -p123456 test class employee department > E:\test-c-e.sql
    2.多库备份
    mysqldump -uroot -p123456 --databases test db2 zuoye > E:\dbzzz.sql
    3.备份所有库
    mysqldump -uroot -p123456 --all-databases > E://all.sql

    2.恢复逻辑备份

    方法1.在没有登录进去之前恢复
    C:UsersAdministrator>mysql -uroot -p123456 test < day47.sql
    drop database day47;
    drop database test;
    create database day47;
    create database test;
    mysql -uroot -p123456 day47 < day47.sql
    mysql -uroot -p123456 test < day47.sql  #也可以在自己新建的空数据库里添加你备份的库
    方法2.mysql登录进去后恢复
    mysql> use db1;
    mysql> SET SQL_LOG_BIN=0;  #设置日志,如果写日志就等于1,不写就等于0。一般不用设置
    mysql> source E:\day47.sql;
    
    3.注:如果备份/恢复单个库时,可以修改sql文件
    DROP database if exists school;
    create database school;
    use school;

    在没有登录之前恢复是,如果你想看恢复了没有的时候是不是每次都要登录进去看看啊,那么我们可以这样做,就不用登录直接查看 了。

    不用再登录进去执行sql语句了
    mysql -uroot -e "use test;show tables;" #注意是双引号 mysql -uroot -e "show databases;" #注意分号在双引号里面
    注意事项:
    1. 完全恢复到一个干净的环境(例如新的数据库或删除原有的数据库)
    2. 恢复期间所有SQL语句不应该记录到binlog中

    3.表的导出与导入

    一、表的导出
    use day47
    select * from userinfo;
    select * from userinfo into outfile 'E:\userinfo.txt'  fields terminated
    by ',' lines terminated by '
    ';  #将字段之间按逗号分开,行之间用'
    '分开
    
    这样写的话报错了。新版本不支持你这样直接指定路径写,为了保证数据的安全。
    如果一旦有黑客拿到sql权限的时候,就把你的数据就给拿走了。你的数据就不安全了
    那么怎么解决这个错误呢?
    show variables like '%secure%';
    解决方法:更改配置文件
    [mysqld]
    secure_file_priv='E:\'

    二、表的导入
    use bak;
    show tables;
    create table user(id int primary key auto_increment,name char(20),age int,depart_id int);
    desc user;
    load data infile 'E:\userinfo.txt' into table user fields terminated by ',' 
    lines terminated by ' ';#导入表

    4.数据库迁移

    务必保证在相同版本之间迁移
    # mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456
     
  • 相关阅读:
    Ubuntu开机自动挂载Windows分区
    Ubuntu 修改hosts
    线程安全
    可重入
    java.lang.NoSuchMethodException: org.apache.catalina.deploy.WebXml addServlet问题
    两数相加
    2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)
    Anniversary party
    k倍区间
    算法训练 素因子去重
  • 原文地址:https://www.cnblogs.com/xiaohema/p/8454990.html
Copyright © 2011-2022 走看看