当前位置: 首页 > article >正文

Linux 上 MySQL 8.0 的备份与恢复实战指南

        在数据库运维过程中,备份与恢复是保障数据安全的重要手段。MySQL 8.0 在 Linux 环境中提供了多种备份和恢复方案,包括逻辑备份和物理备份。本文将介绍这些备份方式的操作步骤与逻辑实现,帮助您高效管理数据库。


一、备份与恢复的作用和意义
  • 数据安全:防止因误操作、硬件故障或恶意攻击导致的数据丢失。
  • 容灾恢复:在灾难发生后快速恢复业务功能,减少停机时间。
  • 数据迁移:支持数据库迁移至新环境或硬件。

二、备份方式概览

  1. 逻辑备份

    • 工具:mysqldump
    • 备份内容:表结构和数据,以 SQL 文件形式存储。
    • 优点:便于跨版本和跨平台恢复。
    • 缺点:速度较慢,文件体积较大。
  2. 物理备份

    • 工具:mysqlbackup(MySQL Enterprise Edition 提供)或直接复制数据文件。
    • 备份内容:数据库的物理文件(如 .ibd.frm 文件)。
    • 优点:备份速度快,适合大数据量环境。
    • 缺点:需确保备份和恢复环境的兼容性。

三、逻辑备份与恢复

1. 使用 mysqldump 进行逻辑备份

备份命令

mysqldump -u root -p --all-databases > /backup/mysql_backup.sql

参数说明

  • -u root: 指定数据库用户。
  • -p: 提示输入密码。
  • --all-databases: 备份所有数据库。
  • > /backup/mysql_backup.sql: 将输出重定向为 SQL 文件。

按单个数据库备份

mysqldump -u root -p my_database > /backup/my_database_backup.sql

按表备份

mysqldump -u root -p my_database my_table > /backup/my_table_backup.sql
2. 恢复逻辑备份

恢复全量备份

mysql -u root -p < /backup/mysql_backup.sql

恢复单个数据库

mysql -u root -p my_database < /backup/my_database_backup.sql

四、物理备份与恢复

1. 使用 mysqlbackup 进行物理备份(企业版)

备份命令

mysqlbackup --defaults-file=/etc/my.cnf --user=root --password=yourpassword \ --backup-dir=/backup/mysql_backup backup

参数说明

  • --defaults-file=/etc/my.cnf: 指定配置文件。
  • --backup-dir=/backup/mysql_backup: 指定备份目录。
  • backup: 启动备份操作。

恢复命令

mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/backup/mysql_backup \ --user=root --password=yourpassword apply-log mysqlbackup --defaults-file=/etc/my.cnf --backup-dir=/backup/mysql_backup \ --datadir=/var/lib/mysql copy-back
2. 使用文件复制方式备份(开源版)

操作逻辑

  1. 停止 MySQL 服务:
    systemctl stop mysqld
  2. 复制数据目录:
    cp -r /var/lib/mysql /backup/mysql_backup
  3. 启动 MySQL 服务:
    systemctl start mysqld

恢复数据

  1. 停止 MySQL 服务:
    systemctl stop mysqld
  2. 替换数据目录:
    rm -rf /var/lib/mysql/* cp -r /backup/mysql_backup/* /var/lib/mysql
  3. 赋予正确权限:
    chown -R mysql:mysql /var/lib/mysql
  4. 启动 MySQL 服务:
    systemctl start mysqld

五、增量与差异备份

增量备份(基于二进制日志)

启用二进制日志: 在 MySQL 配置文件 /etc/my.cnf 中启用以下内容:

[mysqld] log-bin=mysql-bin

备份二进制日志

mysqlbinlog --read-from-remote-server -u root -p --raw --stop-never mysql-bin.000001 > /backup/binlog_backup

恢复增量数据

mysqlbinlog /backup/binlog_backup | mysql -u root -p
差异备份(企业版)

通过 mysqlbackupincremental 选项实现:

mysqlbackup --defaults-file=/etc/my.cnf --user=root --password=yourpassword \ --backup-dir=/backup/mysql_incremental --incremental-base=dir:/backup/mysql_base backup

六、备份与恢复的建议

  1. 备份策略

    • 每周全量备份。
    • 每日增量备份或差异备份。
    • 定期测试备份的可用性。
  2. 存储位置

    • 本地存储 + 远程存储(如 NFS、S3)。
    • 不同存储位置保留多份备份。
  3. 自动化管理

    • 利用 crontab 定时执行备份。
    • 结合监控系统,实时检测备份任务状态。

示例定时任务

0 2 * * 1 mysqldump -u root -p --all-databases > /backup/mysql_backup_$(date +\%Y-\%m-\%d).sql

七、总结

MySQL 8.0 提供了灵活的备份和恢复方式,通过合理规划和自动化管理,可以大幅提高数据安全性和恢复效率。无论是逻辑备份还是物理备份,选择适合业务场景的方式至关重要。在实际操作中,建议多进行备份测试和恢复演练,以确保方案的可行性。


关键命令速览:

功能命令
逻辑备份mysqldump
物理备份mysqlbackup 或直接复制数据文件
恢复逻辑备份mysql < backup.sql
恢复物理备份mysqlbackup apply-log && copy-back

希望这篇指南能为您的数据库运维提供帮助!如有疑问,欢迎留言交流!


http://www.kler.cn/a/413276.html

相关文章:

  • 将table中行的赋值到其他模块去维护不显示,this.$forceUpdate()无效,刷新key 放到完整模块里不可行
  • C++11(下)
  • python-解决一元一次方程
  • Unity版本使用情况统计(更新至2024年11月)
  • linux模拟HID USB设备及wireshark USB抓包配置
  • 用Java爬虫“搜刮”工厂数据:一场数据的寻宝之旅
  • vi/vim文件管理命令练习
  • 基于Spring Boot的林业产品智能推荐平台
  • 【leetcode100】最大子数组和
  • Oracle-伪劣rowid和rownumber的用法
  • 设计模式学习之——责任链模式
  • Educator头歌:离散数学 - 图论
  • 【若依ruoyi Vue前端线上个人服务器部署】以及常见报错问题解决
  • 2024年11月27日Github流行趋势
  • 【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序
  • Day28 贪心算法 part02
  • CTF之密码学(费纳姆密码)
  • LLamafactory API部署与使用异步方式 API 调用优化大模型推理效率
  • 初识Linux(4):Linux基础环境工具(下)
  • YOLO的框架及版本迭代
  • Mac安装及合规无限使用Beyond Compare
  • Linux iptables 命令详解
  • 【设计模式】【结构型模式(Structural Patterns)】之享元模式(Flyweight Pattern)
  • 八、利用CSS制作导航栏菜单的习题
  • Easyui 实现订单拆分开票功能
  • 算法新篇章:AI如何在数学领域超越人类