HCRM博客

如何有效地备份CentOS上的MySQL数据库?

CentOS MySQL 备份

在CentOS上备份MySQL数据库是一个非常重要的任务,以确保数据的安全性和可恢复性,本文将详细介绍如何在CentOS上使用不同工具进行MySQL数据库的备份与恢复,包括逻辑备份和物理备份的方法。

如何有效地备份CentOS上的MySQL数据库?-图1
(图片来源网络,侵权删除)

准备工作

1、准备环境:确保两台centos7虚拟机配置好IP地址和主机名,并同步系统时间,关闭防火墙和SELinux以避免干扰。

2、安装MySQL数据库:在两台机器上分别安装MySQL数据库,例如版本8.0.17。

3、创建测试数据库:在主节点(master)上创建一个名为test_db的数据库并添加一些数据。

逻辑备份与恢复

1、使用mysqldump工具

优点:支持热备份和增量备份,需要磁盘空间小。

缺点:业务影响大,停机时间长。

如何有效地备份CentOS上的MySQL数据库?-图2
(图片来源网络,侵权删除)

适用场景:当数据量较小且没有大量磁盘空间存储备份数据时。

2、全量备份:使用以下命令进行全量备份:

```bash

mysqldump uroot p test_db > /tmp/a.sql

```

将生成的SQL文件传输到备份节点(bak):

如何有效地备份CentOS上的MySQL数据库?-图3
(图片来源网络,侵权删除)

```bash

scp /tmp/a.sql root@192.168.29.138:/tmp/

```

3、恢复数据:在备份节点上创建相同的数据库并导入数据:

```sql

mysql> create database test_db;

mysql> use test_db;

mysql> source /tmp/a.sql

```

检查恢复情况:

```sql

mysql> select * from test;

```

物理备份与恢复

1、使用xtrabackup工具

优点:支持热备份和增量备份,业务影响小,停机时间短。

缺点:所需磁盘空间大。

适用场景:当数据量大且对业务影响要尽量小时。

2、安装xtrabackup:在主节点上安装xtrabackup工具:

```bash

yum install epel y

yum install xtrabackup y

```

3、全量备份:执行以下命令进行全量备份:

```bash

xtrabackup backup user='root' password='your_password' targetdir=/backup/full

```

将备份目录传输到备份节点:

```bash

scp r /backup/full/ root@192.168.29.138:/tmp/

```

4、恢复数据:在备份节点上清理datadir并恢复数据:

```bash

rm rf /var/lib/mysql/

xtrabackup copyback targetdir=/tmp/full/ datadir=/var/lib/mysql/

chown R mysql.mysql /var/lib/mysql

systemctl restart mysqld

```

检查恢复结果:

```sql

mysql> select * from test_db.test;

```

5、增量备份:在主节点上添加一些数据后,执行增量备份:

```bash

xtrabackup backup user='root' password='your_password' targetdir=/backup/inc1/ incrementalbasedir=/backup/full/

```

将增量备份目录传输到备份节点:

```bash

scp r /backup/inc1/ root@192.168.29.138:/tmp/

```

6、恢复增量备份:在备份节点上清理datadir并恢复全量备份:

```bash

xtrabackup prepare applylogonly targetdir=/tmp/full/

xtrabackup prepare targetdir=/tmp/full/ incrementaldir=/tmp/inc1/

xtrabackup copyback targetdir=/tmp/full/ datadir=/var/lib/mysql/

chown R mysql.mysql /var/lib/mysql

systemctl restart mysqld

```

检查恢复结果:

```sql

mysql> select * from test_db.test;

```

自动备份脚本编写

1、创建脚本:编写一个shell脚本来实现每日自动备份,创建一个名为backup.sh的脚本:

```bash

#!/bin/bash

mkdir p /usr/local/mysqlDataBackup

MYSQL_USER="root"

MYSQL_PWD="your_password"

DATA="date +%F"

DBname="test_db"

MYSQL_CMD="/usr/bin/mysqldump"

rm rf /usr/local/mysqlDataBackup/*_${DATA}.sql.gz

${MYSQL_CMD} u${MYSQL_USER} p${MYSQL_PWD} compact B ${DBname} | gzip > /usr/local/mysqlDataBackup/${DBname}_${DATA}.sql.gz

```

2、设置crontab:编辑crontab文件以每天凌晨1点执行备份脚本:

```bash

crontab e

0 1 * * * /path/to/backup.sh

```

3、验证脚本:确保脚本有执行权限并能够成功运行:

```bash

chmod +x /path/to/backup.sh

sh /path/to/backup.sh

ls /usr/local/mysqlDataBackup/

```

常见问题解答(FAQs)

问题1:如何选择合适的备份策略?

答:选择备份策略时应考虑数据量大小、业务停机时间和可用磁盘空间,如果数据量大且业务停机时间要求较短,建议使用xtrabackup进行物理备份;如果数据量小且磁盘空间有限,可以选择使用mysqldump进行逻辑备份。

问题2:如何确保备份数据的完整性和一致性?

答:为确保备份数据的完整性和一致性,可以定期进行全量备份和增量备份,开启二进制日志功能并进行实时监控,确保每次备份的数据都是最新的,对于重要数据,可以在备份后进行数据校验,以确保数据未被损坏或篡改。

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

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