请选择 进入手机版 | 继续访问电脑版

 找回密码
 立即注册
搜索
查看: 182|回复: 0

Linux 系统 MySQL 数据库自动备份

[复制链接]

264

主题

0

回帖

1049

积分

管理员

积分
1049
发表于 2024-2-22 22:34:31 | 显示全部楼层 |阅读模式

备份 MySQL 要用到 mysqldump。mysqldump 是 MySQL 自带的逻辑备份工具,它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的 insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。

mysqldump 的基本用法

mysqldump [OPTIONS] database [tables]
  • 如果你不给定任何表,整个数据库将被导出。
  • 通过执行 mysqldump --help,你能得到你 mysqldump 的版本支持的选项表。

此外,mysqldump 还支持很多其他选项,例如:

  • --all-databases, -A:备份所有数据库。
  • --databases, -B:用于备份多个数据库。如果没有该选项,mysqldump 把第一个名字参数作为数据库名,后面的作为表名。使用该选项,mysqldump 把每个名字都当作为数据库名。
  • --force, -f:即使发现 sql 错误,也忽略错误继续备份。
  • --host=host_name, -h host_name:备份指定主机上的数据库。
  • --no-data, -d:只导出表结构,不导出数据。
  • --password[=password], -p[password]:连接数据库使用的密码。
  • --port=port_num, -P port_num:指定连接数据库的端口号。

在使用 mysqldump 时,你需要根据你的需求选择合适的选项。同时,你也需要确保你有足够的权限来访问和备份数据库。

请注意,mysqldump 生成的备份文件是 SQL 脚本,你可以使用任何文本编辑器打开和查看。当你需要恢复数据时,你可以使用 mysql 命令来执行这个 SQL 脚本,将数据恢复到数据库中。

在使用 mysqldump 进行备份和恢复时,请务必小心操作,避免数据丢失或损坏。建议在正式操作前,先在一个测试环境中进行验证,确保操作的正确性和安全性。

手动备份

$ mysqldump -u root -p 数据库名 > 数据库名.sql
Enter password:

直接生成压缩文件:

$ mysqldump -u root -p 数据库名 | gzip > 数据库名.sql.gz
Enter password:

如何才能做到不输入密码?毕竟要做到定时自动备份总不能到备份时间后人工敲密码吧。

使用 ~/.my.cnf 配置文件:

  1. 在 MySQL 用户的家目录下创建一个名为 .my.cnf 的配置文件。例如,如果 MySQL 用户是 root,则文件路径为  /root/.my.cnf

  2. 在该文件中添加以下内容:

    [mysqldump]  
    user=your_mysql_username
    password=your_mysql_password

    your_mysql_usernameyour_mysql_password 替换为您的 MySQL 用户名和密码。

  3. 设置文件的权限,确保只有文件所有者可以读取它:

    chmod 600 ~/.my.cnf
  4. 现在,当您以该用户身份运行 mysqldump 命令时(不要带 -p 参数),它将自动从 .my.cnf 文件中读取用户名和密码,而无需手动输入。

定时自动播放

创建备份脚本:

#!/bin/sh

dbname='数据库名'

mysqldump -u root $dbname | gzip > /data/backup/db/$dbname-`date +"%Y%m%d"`.sql.gz

设置文件的执行权限:

chmod 755 db_backup.sh

配置定时任务:

$ crontab -e

0 1 * * * "/绝对路径/db_backup.sh"

这样就可以每天在凌晨 1 点钟执行备份任务了。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|深圳市棱讯科技有限公司 ( 粤ICP备2024228160号-2|粤公网安备44030002003510号 )

GMT+8, 2024-5-29 04:37 , Processed in 0.018016 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表