随笔录--你是怎么做 MySQL 数据备份的

官方解析

MySQL 数据备份是一个非常重要的工作,保证数据的安全性和可靠性。备份数据的方式有很多种,以下是其中一种基本的备份和恢复方式:

一、备份 MySQL 数据库

我们可以使用 mysqldump 工具来备份 MySQL 数据库,该工具可以生成 SQL 脚本文件,包含数据库中所有表和数据的语句。在终端中运行以下命令:

mysqldump -u [username] -p [database_name] > [backup_file].sql

其中,[username] 是 MySQL 用户名,[database_name] 是需要备份的数据库名称,[backup_file].sql 是备份的文件名。

该命令会将 SQL 脚本文件导出到当前目录下。

二、恢复 MySQL 数据库

如果需要恢复之前备份的数据,可以运行以下命令:

mysql -u [username] -p [database_name] < [backup_file].sql

其中,[username] 是 MySQL 用户名,[database_name] 是需要恢复的数据库名称,[backup_file].sql 是备份的文件名。

该命令会将备份文件中的 SQL 语句执行,从而将数据恢复到指定的数据库中。

如果需要恢复半个月前的数据,可以选择备份文件中的某个时间点之前的数据,并使用以上方法进行恢复。

此外,还有其他的备份方式,如使用 MySQL 自带的 mysqlbinlog 工具进行增量备份,或使用第三方备份软件进行备份。根据实际需求选择合适的备份方式,并将备份文件存放在可靠的位置。

鱼皮补充:mysql 备份操作是可以写在简历上的,推荐大家自己实践试试

 

MySQL 数据备份有多种方法,包括逻辑备份、物理备份、全备份和增量备份。你可以根据你的需求和环境选择合适的方式。如果你想要恢复半个月前的数据,你需要先确保你有半个月前的备份文件,然后使用相应的工具或命令进行还原。例如,如果你使用 mysqldump 命令进行了逻辑备份,那么你可以使用 source 指令或者 mysql 命令来导入备份文件。

逻辑备份

逻辑备份是使用 SQL 语句来导出和导入数据库的数据的方法。它的优点是简单易用,可以跨平台和存储引擎,可以部分备份和恢复。它的缺点是速度慢,占用空间大,可能影响数据库性能。

MySQL 提供了一个原生的逻辑备份工具叫做 mysqldump。你可以使用它来备份整个数据库实例、单个数据库或单张表。例如,如果你想要备份一个叫 ytt 的数据库,你可以在命令行窗口输入:

mysqldump -u 用户名 -p 密码 --database ytt > ytt.sql

这样就会生成一个包含 ytt 数据库所有数据的 SQL 文件。

如果你想要恢复这个文件到数据库中,你可以在命令行窗口输入:

mysql -u 用户名 -p 密码 < ytt.sql

或者

mysql -u 用户名 -p 密码 source ytt.sql

这样就会执行 SQL 文件中的语句,将数据还原到数据库中。

物理备份

物理备份是直接拷贝数据库的数据文件、配置文件和日志文件。它的优点是速度快,占用空间小,不影响数据库性能。它的缺点是恢复复杂,需要关闭数据库服务,可能导致数据不一致。

MySQL 有一个开源的物理热备工具叫做 Percona XtraBackup。它可以在不锁表的情况下备份 InnoDB、XtraDB 和 MyISAM 存储引擎的表,并且支持增量备份。你可以使用它来备份整个数据库实例或单个数据库。

例如,如果你想要全量备份一个叫 ytt 的数据库,你可以在命令行窗口输入:

innobackupex --user=用户名 --password=密码 --databases="ytt" /backup

这样就会在 /backup 目录下生成一个包含 ytt 数据库所有数据文件的目录。

如果你想要恢复这个目录到数据库中,你需要先准备好数据文件,然后拷贝到对应的数据目录中,并更改权限和所有者。具体步骤如下:

innobackupex --apply-log /backup/2023-02-27_00-00-00 cp -r /backup/2023-02-27_00-00-00/* /var/lib/mysql chown -R mysql:mysql /var/lib/mysql

请注意,在恢复之前,你需要停止 MySQL 服务,并确保数据目录为空。

全备份和增量备份

全备份是指备份数据库中的所有数据,不管数据是否有变化。它的优点是恢复简单,不需要其他文件。它的缺点是占用空间大,耗时长,影响数据库性能。

增量备份是指只备份上次全备份或增量备份后发生变化的数据,需要开启 binlog 日志功能. 它的优点是占用空间小,耗时短,不影响数据库性能,它的缺点是恢复复杂,需要依赖 binlog 日志文件和全备份文件。

例如,如果你想要每天进行一次全备份和每小时进行一次增量备份,你可以使用 mysqldump 工具和 binlog 工具来实现。

首先,在 my.cnf 文件中开启 binlog 功能,并设置每天生成一个日志文件:

[mysqld] log-bin=/var/lib/mysql/mysql-bin expire-logs-days=7 max_binlog_size=100M

然后,在 crontab 中设置定时任务:

`# 每天凌晨 0 点进行一次全备份 0 0 * * * mysqldump -u root -p password --all-databases > /backup/full_$(date +%Y%m%d).sql

每小时进行一次增量备份

0 * * * * mysqlbinlog --read-from-remote-server --host=localhost --user=root --password=password --stop-never-slave-server-id=10 mysql-bin.000001 > /backup/incremental_$(date +%Y%m%d%H).sql`

这样就可以在 /backup 目录下生成全备份和增量备份文件。

如果你想要恢复这些文件到数据库中,你需要先停止 MySQL 服务,并确保数据目录为空。然后按照以下步骤操作:

`# 恢复最近一次的全备份文件 mysql -u root -p password < /backup/full_20230227.sql

恢复之后产生的所有增量备份文件

mysqlbinlog /backup/incremental_202302270*.sql | mysql -u root -p password`

请注意,在恢复之前,你需要确认 binlog 文件名和路径,并按照时间顺序恢复。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值