MySQL 必知必会
朱晓峰
前摩根大通银行技术部副总裁、系统架构师
17746 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 36 讲
MySQL 必知必会
15
15
1.0x
00:00/00:00
登录|注册

21 | 数据备份:异常情况下,如何确保数据安全?

你好,我是朱晓峰。今天,我来和你聊一聊数据备份。
数据备份,对咱们技术人员来说十分重要。当成千上万的用户,每天使用我们开发的应用做着他们的日常工作的时候,数据的安全性就不光是你一个人的事了。要是有一天,突然发生了某种意想不到的情况,导致数据库服务器上的数据全部丢失,所有使用这个应用的人都会受到严重影响。
所以,我们必须“未雨绸缪”,及时把数据备份到安全的地方。这样,当突发的异常来临时,我们就能把数据及时恢复回来,就不会造成太大损失。
MySQL 的数据备份有 2 种,一种是物理备份,通过把数据文件复制出来,达到备份的目的;另外一种是逻辑备份,通过把描述数据库结构和内容的信息保存起来,达到备份的目的。逻辑备份这种方式是免费的,广泛得到使用;而物理备份的方式需要收费,用得比较少。所以,这节课我重点和你聊聊逻辑备份。
我还会给你介绍一下 MySQL 中的数据备份工具 mysqldump、数据恢复的命令行客户端工具 mysql,以及数据表中数据导出到文件和从文件导入的 SQL 语句,帮助你提高你所开发的应用中的数据安全性。

如何进行数据备份?

首先,我们来学习下用于数据备份的工具 mysqldump。它总共有三种模式:
备份数据库中的表;
备份整个数据库;
备份整个数据库服务器。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文详细介绍了MySQL中的数据备份工具mysqldump的使用方法,包括备份数据库中的表、整个数据库以及整个数据库服务器的具体步骤。通过mysqldump工具,读者可以轻松备份数据库中的表,同时保留表的结构信息和全部数据信息。此外,文章还介绍了逻辑备份和物理备份两种方式,以及数据恢复的命令行客户端工具mysql的使用方法。另外,文章还介绍了如何导出和导入表里的数据,以及使用“SELECT … INTO OUTFILE”语句导出数据表的方法。通过本文的总结,读者可以快速了解数据备份的重要性以及如何使用mysqldump工具进行数据备份,从而提高应用中的数据安全性。文章还介绍了数据导出语句“SELECT … INTO OUTFILE”和导入的语句“LOAD DATA”,并强调了它们在数据备份中的重要性。同时,作者提出了思考题,引发读者思考和讨论。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 必知必会》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • 朱晓峰
    置顶
    你好,我是朱晓峰,下面我就来公布一下上节课思考题的答案: 上节课,我们学习了日志(下)。下面是思考题的答案: 这段二进制日志包括了2个SQL操作,第一个是从数据表demo.goodsmaster中删除一条记录,第二个是向数据表demo.goodsmaster中插入一条记录。起始位置:627,截止位置:1125
    2021-05-20
  • SharpBB
    1.三种模式的数据备份 备份数据库中的表 mysqldump -h 服务器 -u 用户 -p 数据库名称 表1,表2 > 备份文件名称 备份数据库 mysqldump -h 服务器 -u 用户 -p --databases 数据库名称 > 备份文件名 其实就是将里面的库表都创建了 备份整个数据库服务器 mysqldump -h 服务器 -u 用户 -p --all-databases > 备份文件名 一般来讲没有必要 2.数据恢复 使用mysql命令 mysql -u root -p demo < test.sql 如果备份的是数据库 那么就不需要加demo 使用source命令 SOURCE /home/demo.sql 后面跟的是linux下的备份文件地址 如果是恢复数据表 则先用 use demo; 3.数据导出导入 导出 select * into outfile '/home/user.txt' fields terminated by ',' lines terminated by '\n' from demo.user; 先查找linux下my.cnf文件位置 mysql --help | grep 'my.cnf' 配置文件里设置 secure-file-priv='/home' 再将home的权限设置为 chomd 777 否则权限会受阻 导入 load data infile '/home/user.txt' into table user fields terminated by ',' lines terminated by '\n'; 注意要加绝对路径 load data是效率非常高 推荐使用!

    作者回复: 好的

    2022-02-14
    3
  • lesserror
    敲黑板了,几百万数据使用 LOAD DATA 命令回复只需几分钟,可以说是属于黑科技了,长见识了。 课程中讲到的命令,公司运维经常使用。今天跟着敲了一遍,加深了印象。 无论什么规模的项目,一定要学会数据的及时、准确的备份,数据就是公司最重要的财产。

    作者回复: 是的

    2021-04-27
    2
  • 小明针不戳
    可以修改my.ini 文件的secure-file-priv参数,指定为H盘,之后重启数据库

    作者回复: 请参考思考题答案

    2021-04-27
    1
  • SharpBB
    老师 问一个问题 我用root账户登录 在用docker创建mysql 进入容器内操作mysql 导出文件 但是发现没有权限 随即将权限改成777就可以了 但是这个权限是跟什么有关的呢 为什么不是最高权限?

    作者回复: 不建议用docker创建MySQL

    2022-02-14
  • Hale
    ERROR 1 (HY000) at line 1: Can't create/write to file '/root/a.txt' (Errcode: 13 - Permission denied) 在linux下试了,a.txt增加了可执行权限,还是报错

    作者回复: 还是权限问题,你可以先查看一下MySQL中的系统变量设定,比如: mysql> show variables like '%secure%'; +--------------------------+-----------------------+ | Variable_name | Value | +--------------------------+-----------------------+ | require_secure_transport | OFF | | secure_file_priv | /var/lib/mysql-files/ | +--------------------------+-----------------------+ 2 rows in set (0.00 sec) 这样就知道secure_file_priv的目标文件夹是/var/lib/mysql-files/,然后把导出文件写到这个文件夹中,应该可以执行成功: mysql> select * into outfile '/var/lib/mysql-files/a.txt' from demo.goodsmaster; Query OK, 2 rows affected (0.00 sec) 查看一下: # cat /var/lib/mysql-files/a.txt 1 铅笔 2 橡皮

    2021-06-02
  • giteebravo
    本节需要掌握两点: 1. 备份和恢复整个数据库服务器、数据库和数据库中的表的方法。 2. MySQL 数据导出和导入的方法。 思考题: 如果还是想把导出文件保存到 H:\ 目录下,有没有办法实现呢? ------------ 答:直接修改 “secure-file-priv” 设定的目录。

    作者回复: 请参考思考题答案

    2021-04-27
    3
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部