首页 > 数据库 >Linux-MySQL 数据备份

Linux-MySQL 数据备份

时间:2023-03-07 13:22:56浏览次数:51  
标签:备份 Linux DB 数据备份 sql MySQL backup 数据库 DIR

MySQL 数据备份是一个非常重要的工作,保证数据的安全性和可靠性。

常用方法:

一、使用 mysqldump 工具来备份 MySQL 数据库。

  该工具可以生成 SQL 脚本文件,包含数据库中所有表和数据的语句。在终端中运行以下命令将 SQL 脚本文件导出到当前目录下:

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

  [username] 是 MySQL 用户名

  [database_name] 是需要备份的数据库名称

  [backup_file].sql 是备份的文件名

  如果需要恢复之前备份的数据,可以运行以下命令将备份文件中的 SQL 语句执行,从而将数据恢复到指定的数据库中:

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

  [username] 是 MySQL 用户名

  [database_name] 是需要恢复的数据库名称

  [backup_file].sql 是备份的文件名

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

操作实例:

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

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

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

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

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

  或者

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

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

全备份和增量备份

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

增量备份是指只备份上次全备份或增量备份后发生变化的数据,需要开启 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_20230307.sql

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

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

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

 

二、使用Shell脚本,定期备份MySQL数据库,并将备份文件压缩并上传到指定的远程服务器上。

*DB_USER:用户名
*DB_PASS:密码
*DB_NAME:库名
*BACKUP_DIR:备份目录
*REMOTE_SERVER:远程服务器
*REMOTE_DIR:远程目录
# 定义变量
DB_USER="root"
DB_PASS="password"
DB_NAME="database_name"
BACKUP_DIR="/backup/mysql"
REMOTE_SERVER="remote_server_address"
REMOTE_DIR="/backup/mysql"

# 创建备份目录
if [ ! -d $BACKUP_DIR ]; then
  mkdir -p $BACKUP_DIR
fi

# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_DIR/$DB_NAME-$(date +%Y%m%d).sql

# 压缩备份文件
tar -czvf $BACKUP_DIR/$DB_NAME-$(date +%Y%m%d).tar.gz $BACKUP_DIR/$DB_NAME-$(date +%Y%m%d).sql

# 上传备份文件到远程服务器
scp $BACKUP_DIR/$DB_NAME-$(date +%Y%m%d).tar.gz $REMOTE_SERVER:$REMOTE_DIR

# 删除过期备份文件
find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +7 -delete

  

标签:备份,Linux,DB,数据备份,sql,MySQL,backup,数据库,DIR
From: https://www.cnblogs.com/Williamls/p/17187789.html

相关文章

  • xilinx zynmp linux 开机自启动脚本添加
    下面以linx5.4.0-xilinx-v2020.1为例说明如何添加自启动脚本。linux系统内核启动完成后会加载第一个进程init,关于init进程的介绍参考博客https://zhuanlan.zhihu.com/p/......
  • Linux备份与恢复使用技巧
    在日常的Linux系统运维中,备份和恢复是非常重要的操作,能够有效避免数据丢失和系统故障导致的影响。本文将介绍一些关于Linux系统备份和恢复的实用技巧,帮助管理员更好地管理......
  • VMware创建Linux虚拟机
    本篇记录用VMware创建Linux虚拟机,安装的是Centos7一、VMware安装:自行百度 二、Centos7镜像下载:链接:https://pan.baidu.com/s/1D-Y4H17tcgWz5cSB5MSMOg?pwd=q8jt提......
  • linux系统忘记root密码
     centOS:1、开机过程按上下箭头键,让系统不要进入到引导程序中,2、按'e'进入到编辑模式3、找到linux16开始的首行,在末尾加入'rwinit=/bin/sh'(会出现修改......
  • 熟悉Linux的操作界面及切换方法
    熟悉Linux的操作界面及切换方法TTY终端在linux默认的登录模式中,主要分为两种,一种是仅有纯文本界面(命令行界面)的登录环境,另外一种则是图形桌面的登录环境。Linux默认情况下......
  • Mysql 主从复制和 GTID 复制
    1、安装主Mysql优化命令创建数据和日志存储目录1)安装Mysql​root@centos05~]#tarzxfmysql-8.0.32-el7-x86_64.tar.gz-C/usr/src/[root@centos05~]#mv/usr/src/m......
  • Linux/Centos Mondo 一键部署、镜像恢复,快速部署
    一.环境准备 (1) 镜像机要能上网,因为需要从网上装所需的包,没有网络的话,需要的软件包也早下载好了,可以离线安装,离线安装比较费事,尽量有网比较好 (2) 镜像机磁盘不要用......
  • 【黄啊码】Linux搭建SVN总是失败?看完这篇你就知道重点在哪了
    系统环境:Centos6.5第一步:通过yum命令安装svnserve,命令如下:>yum-yinstallsubversion此命令会全自动安装svn服务器相关服务和依赖,安装完成会自动停止命令运行若需查看svn......
  • MySQL 安装过程中踩过的坑
    1、用 grep'temporarypassword'/var/log/mysqld.log生成的初始密码老提示密码错误,只能直接发大招:       A、vi/etc/my.cnf在文件的[mysqld]内增加一行 ......
  • mysql 0点 弹窗 取消
         ......