如何创建MySQL的物理备份

虽然mysqldump工具是数据库系统的首选备份方法,但它仅在数据库服务器可运行时才有效。如果无法启动数据库或无法访问主机系统,我建议直接复制数据库。

如果你对服务器系统可以正常访问,您可以参考使用mysqldump备份MySQL或MariaDB这篇文章。

注意 本教程需要一台已经设置好可以使用sudo命令的非root账号的服务器,并且已开启防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后在购买服务器

创建备份

首先,请停止mysql服务:

systemctl stop mysql

找到您的数据库目录。在大多数系统上它应该是/var/lib/mysql/,但如果该目录不存在,请检查/etc/mysql/my.cnf数据目录的路径。

创建用于存储备份的目录。本教程将使用/opt/backups,但您可以根据自己的需要进行更改:

mkdir /opt/db-backups

将MySQL的数据目录复制到存储位置。cp命令,rsync或其它方法将正常工作,但我们将使用tar递归复制并在同一时间gzip压缩的备份。根据需要更改数据库目录,备份文件名和目标目录; -$(date +%F)命令将插入一个时间戳到文件名。

tar cfvz /opt/db-backups/db-$(date +%F).tar.gz /var/lib/mysql/*

重启MySQL服务:

systemctl restart mysql

还原备份

  • 将您的工作目录更改为可以提取上面创建的tarball的位置。在此示例中使用当前用户的主目录:
cd
  • 停止mysql服务:
systemctl stop mysql
  • 将tarball解压缩到工作目录。将命令中的tarball文件名更改为要还原到日期的文件名。
tar zxvf /opt/db-backups/db-archive.tar.gz -C .
  • 如果您想保留它们,请将/ var / lib / mysql的当前内容移动到另一个位置,或者完全删除它们。 创建一个新的空mysql文件夹以恢复备份的DMBS。
mv /var/lib/mysql /var/lib/mysql-old
mkdir /var/lib/mysql
  • 将备份的数据库系统复制到空文件夹:
mv ~/var/lib/mysql/* /var/lib/mysql
  • 为刚恢复的文件设置适当的权限:
chown -R mysql:mysql /var/lib/mysql
  • 重启MySQL服务:
systemctl restart mysql

更多信息

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

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


参考文献:《Create Physical Backups of your MariaDB or MySQL Databases》

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

修改Cacti中的rrd文件大小

Cacti进行服务器监控时,5分钟的高精度数据默认只保留2天的数据记录,也就是说,两天以外的流量,我们就看不到5分钟的数据了。这对于我们现有的业务需求有所冲突,...

1113
来自专栏Java后端生活

JDBC(九)数据库连接池

①、普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(...

914
来自专栏xingoo, 一个梦想做发明家的程序员

【java开发系列】—— JDK安装

前言   作为一个java开发者,安装JDK是不可避免的,但是配置路径却总是记不住,百度也有很多参考例子。这里仅仅当做以后参考的笔记记录。   说到JD...

19910

CentOS上的FirewallD简介

FirewallD是防火墙用于实现持久化网络流量规则的前端控制器。它提供命令行和图形界面,可在大多数Linux发行版中使用。与直接控制iptables相比,使用...

1346
来自专栏小尘哥的专栏

闹心的Broken pipe

6553
来自专栏岑玉海

批量设置ssh无密码登陆脚本

最近要给集群设置ssh无密码登陆,如果需要手动设置这个无密码登陆,所以在网上找了几个脚本,亲测下面这个好使,并且设置比较简单。 需要用root账户执行,我也是要...

5145
来自专栏信安之路

一步一步带你体验 openvas

openvas 是 nessus 项目的一个开源分支,用于对目标系统进行漏洞评估和管理,openvas 的配置使用相较于 nessus 更加复杂,扫描速度也不如...

1470
来自专栏IT 指南者专栏

Maven 项目管理工具基础系列(一)

? 一、Maven 简介 Maven 中文意为 “ 内行、专家 ”,是 Apache 下的一个开源项目,属于纯 Java 开发,并且只是用来管理 Java项目...

39315
来自专栏idealclover的填坑日常

Linux 下尝试自建Anki服务器

关于Anki是什么,具体怎么用,也许以后会在公众号中做进一步的介绍。总的来说,Anki是一个很好用的,在电脑端手机端均可用的,开源的记忆应用。可以帮助自己记住包...

7502
来自专栏空帆船w

如何快速上传开源项目至 Jcenter

前几天上传了个项目至 Jcenter,看了网上很多教程,基本都是以 gradle-bintray-plugin 这个插件做上传,教程看着都好费劲,对于新手来说真...

1672

扫码关注云+社区

领取腾讯云代金券