HCRM博客

如何在CentOS系统中备份MySQL数据库?

CentOS 备份 MySQL 数据库

背景介绍

如何在CentOS系统中备份MySQL数据库?-图1
(图片来源网络,侵权删除)

在现代数据管理中,数据库的备份是不可或缺的一部分,尤其是对于像 MySQL 这样的流行数据库系统,无论是出于安全考虑还是数据恢复的需要,定期备份数据库至关重要,本文将详细介绍如何在 CentOS 上备份 MySQL 数据库,以及相关的代码示例。

备份类型及方法

物理备份与逻辑备份

物理备份:直接复制数据库文件,适用于数据库关闭时。

逻辑备份:使用 mysqldump 工具导出 SQL 脚本,适用于数据库运行时。

完全备份、差异备份和增量备份

完全备份:每次都备份完整的数据库。

差异备份:只备份上一次完全备份之后的更新数据。

如何在CentOS系统中备份MySQL数据库?-图2
(图片来源网络,侵权删除)

增量备份:每次备份只备份上一次完全备份或增量备份之后的更新数据。

备份策略

选择合适的备份策略可以确保数据的安全性和完整性,常见的备份策略包括:

每日完全备份:适用于数据量较小的情况下。

每周完全备份 + 每日增量备份:适用于数据量大且变化频繁的情况。

备份工具

如何在CentOS系统中备份MySQL数据库?-图3
(图片来源网络,侵权删除)

mysqldump

mysqldump 是 MySQL 提供的命令行工具,适用于导出数据库,它支持多种选项,可以根据需要选择不同的备份方式。

安装 MySQL

确保已经在 CentOS 上安装了 MySQL,如果没有,可以使用以下命令进行安装:

sudo yum install mysqlserver
sudo systemctl start mysqld
sudo systemctl enable mysqld

使用mysqldump 进行备份

完整备份一个或者多个完整的数据库(包含其中的表)

mysqldump u root p[密码] databases 库名1 [库名2] … > /备份路径/备份文件名.sql
mysqldump u root ppassword databases exam_system > /usr/local/src/mysqlbackup/exam_system.sql

遇到的问题:mysqldump: [Warning] Using a password on the command line interface can be insecure

解决办法:在my.cnf中添加

[mysqldump]
user=root
password=password

然后不需要使用账号密码即可进行备份:

mysqldump databases exam_system > /usr/local/src/mysqlbackup/exam_system.sql

如果不加databases,只备份库中的表,不会备份库:

mysqldump u root p[密码] 库名 > /备份路径/备份文件名.sql

备份整个数据库

mysqldump u root p[密码] alldatabases > /备份路径/备份文件名.sql
mysqldump alldatabases > /usr/local/src/mysqlbackup/all.sql

备份指定库中的部分表

mysqldump u root p[密码] 库名 [表名1] [表名2] … > /备份路径/备份文件名.sql
mysqldump exam_system answer question > /usr/local/src/mysqlbackup/answerAndquestion.sql

XtraBackup

Percona XtraBackup 是一个开源的热备份工具,适用于大规模的数据库备份,它支持热备份和增量备份,业务影响小,停机时间短。

恢复备份

通过 `source` 命令恢复

登录备份主机的 MySQL,执行以下命令:

mysql uroot p
mysql> source /usr/local/src/mysql/exam_system.sql;

通过 `mysql` 命令恢复

mysql u 用户名 p[密码] < 库备份脚本的路径
mysql uroot ppassword < /usr/local/src/mysql/exam_system.sql

当备份的 SQL 中只包含表的备份,而不是库的备份时,恢复的时候需要指定数据库,并且目标库必须存在

mysql uroot ppassword exam_system < /usr/local/src/mysqlbackup/answerAndquestion.sql

增量备份与恢复(使用二进制日志)

开启二进制日志功能

编辑my.cnf 文件:

[mysqld]
logbin=mysqlbin
binlog_format = MIXED    # 可选,指定二进制日志(binlog)的记录格式为 MIXED
serverid = 1            # 确保服务器 ID 唯一

重启 MySQL 服务:

sudo systemctl restart mysqld

刷新二进制日志文件实现增量备份

mysqladmin flushlogs

查看二进制文件内容:

mysqlbinlog nodefaults base64output=decoderows v /var/lib/mysql/binlog.000001

进行增量备份操作

1、对数据库exam_system 中的answer 表做完全备份:

   mysqldump exam_system answer > /usr/local/src/mysqlbackup/answer.sql

2、在answer 中添加新数据。

3、再次刷新二进制日志文件:

   mysqladmin flushlogs

4、新增数据后,再次刷新二进制日志文件。

5、进行备份,备份的是倒数第二个二进制日志文件,不是最新的那个:

   mv f /var/lib/mysql/binlog.000012 /usr/local/src/mysqlbackup/binlog.000012_backup

6、将其拷贝到目的主机上:

   scp /usr/local/src/mysqlbackup/binlog.000012_backup user@192.168.222.213:/path/to/destination/

在 CentOS 上备份 MySQL 数据库是一个非常重要的操作,能为您的数据安全提供保障,通过本文的讲解,我们探讨了备份的必要性、使用mysqldump 备份数据库的基本步骤、备份的恢复方法及备份的多种类型,定期备份数据库,不仅有助于防止数据丢失,还能提高整个系统的稳定性与可靠性,希望您能将这些方法付诸实践,确保您数据库的安全性,无论是个人使用还是企业环境,掌握正确的备份策略都是非常有必要的。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/16182.html

分享:
扫描分享到社交APP
上一篇
下一篇