使用mysqldump备份MySQL或MariaDB

在日常维护工作当中经常会需要对数据进行导出操作,而mysqldump是导出数据过程中使用非常频繁的一个工具。本文将简介MySQL如何使用mysqldump工具进行数据备份。

准备

  • 一台已经设置好可以使用sudo命令的非root账号的Ubuntu服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器
  • 您需要安装MySQL或MariaDB,以及运行备份的数据库用户。相关安装教程可以参考四步教你搭建保护MySQL服务器!这篇文章。

备份数据库

mysqldump命令的一般语法是:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump在启动备份过程之前会提示输入密码。
  • 根据数据库的大小,可能需要一段时间才能完成。
  • 将在运行该命令的目录中创建数据库备份。
  • -$(date +%F) 为文件名添加时间戳。

备份示例

  • 创建整个数据库管理系统(DBMS)的备份:
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
  • 备份特定数据库。替换db1为要备份的数据库的名称:
mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
  • 从任何数据库备份单个表。在下面的示例中,table1从数据库导出db1
mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql

以下是mysqldump上面使用的命令选项的细分:

  • --single-transaction:在从服务器转储数据之前发出BEGIN SQL语句。
  • --quick:逐行执行转储表。为具有少量RAM和/或大型数据库的系统增加了安全性,其中在内存中存储表可能会成为问题。
  • --lock-tables=false:不要锁定备份会话的表。

使用cron自动备份

可以添加条目/etc/crontab以定期计划数据库备份。

创建一个文件来保存将要执行备份的MySQL root用户的登录凭据。请注意,存储此文件的主目录的系统用户与MySQL用户无关。

1 [client]
2 user = root
3 password = MySQL root user's password

限制凭证文件的权限:

chmod 600 /home/example_user/.mylogin.cnf

创建cron作业文件。下面是每天凌晨1点备份整个数据库管理系统的示例cron作业:

10 1 * * * /usr/bin/mysqldump mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +%F).sql

还原备份

恢复命令的一般语法是:

mysql -u [username] -p [databaseName] < [filename].sql
  • 还原整个DBMS备份。系统将提示您输入MySQL root用户的密码:

这将覆盖MySQL数据库系统中的所有当前数据

mysql -u root -p < full-backup.sql
  • 还原单个数据库转储。必须已存在空的或旧的目标数据库才能将数据导入,并且您运行该命令的MySQL用户必须具有对该数据库的写访问权限:
mysql -u [username] -p db1 < db1-backup.sql
  • 恢复单个表,您必须准备好目标数据库以接收数据:
mysql -u dbadmin -p db1 < db1-table1.sql

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

自建服务器难免会遇到这样的问题,但是如果您在生产环境使用,我还是建议您直接使用云关系型数据库,云关系型数据库让您在云中轻松部署、管理和扩展的关系型数据库,提供安全可靠、伸缩灵活的按需云数据库服务。腾讯云关系型数据库提供 MySQL、SQL Server、MariaDB、PostgreSQL 数据库引擎,并针对数据库引擎的性能进行了优化。云关系型数据库是一种高度可用的托管服务,提供容灾、备份、恢复、监控、迁移等数据库运维全套解决方案,可将您从耗时的数据库管理任务中解放出来,让您有更多时间专注于您的应用和业务。更多Linux教程请前往腾讯云+社区学习更多知识。


参考文献:《Use mysqldump to Back Up MySQL or MariaDB》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术博文

linux创建目录mkdir命令(5)

linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。 1.命令格式: m...

4059
来自专栏Ryan Miao

redis学习之三配置文件redis.conf 的含义

摘自http://www.runoob.com/redis/redis-conf.html 安装redis之后的第一件事,我就开始配置密码,结果总是不生效,而我...

2755
来自专栏北京马哥教育

Linux自动化运维工具之ansible(一)

豌豆贴心提醒,本文阅读时间5分钟 运维自动化是运维发展的必然方向,同时也是一个运维工程师实现效率最大化的必然选择。 运维自动化的知识可以说是浩瀚如海,本文将...

4305
来自专栏小狼的世界

Tomcat 安装与配置

Tomcat 在官方网站中提供了两个 Windows 安装版本,一个是普通安装版,一个是解压版。普通安装版带了安装器,像我们安装其他Windows程序一样,可以...

2291
来自专栏大数据和云计算技术

MongoDB系列11:Munin监控MongoDB

Munin是一个网络资源监控工具,可以帮助分析资源趋势。默认提供了大量的分析图形。以下讲述如何设置MongoDB的Munin监控插件。

1963
来自专栏测试驿栈

Linux内存机制以及手动释放swap和内存

我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念...

4343
来自专栏行者常至

(二)Solr的安装配置及部署

3362
来自专栏北京马哥教育

原创投稿 | 使用zabbix自带的模板监控mysql

? 1.系统环境 软件及其版本 软件|版本 ----|---- OS|Centos6.8-2.6.32-642.el6.x86_64 zabbix|za...

34211
来自专栏菩提树下的杨过

mac系统上使用压缩包版的mysql(非安装版)

mac本换了块固态硬盘,一切重新装过,mysql嫌官网下载太慢,直接百度 "mysql mac",第一个就是: ? 不料下载完后,发现这是一个压缩包版,并没有...

2169
来自专栏上善若水

S005SELinux(SEAndroid)的实际文件组成无标题文章

SEAndroid 是将SELinux 移植到Android 上的产物,可以看成SELinux 辅以一套适用于Android 的策略。

2005

扫码关注云+社区

领取腾讯云代金券