Linux系统备份mysql数据库
手动备份
mysqldump -u root -p --all-databases > /path/to/backupfile.sql
自动备份
crontab -e
0 23 * * * mysqldump -h localhost -u root -pXXXXXXX dmp_XXXXX_db > /home/XXXX/XXXXX/bakmysql/dmp_XXXXX_db_$(date +%Y%m%d).bak
0 23 * * * mysqldump -h localhost -u root -pXXXXXXXX dmp_XXXXXXX_db > /home/XXXX/XXXX/bakmysql/dmp_XXXXXXX_db_$(date +%Y%m%d).bak
window系统备份数据库
手动操作
打开命令提示符窗口(Windows 上也称作命令行窗口)。
进入 MySQL 安装目录的 bin 目录,比如:
cd C:\Program Files\MySQL\MySQL Server 8.0\bin
使用 MySQL 客户端工具登录到 MySQL 服务器上。例如,登录名为 root,密码为 password:
mysql -u root -p password
创建要还原数据的数据库。
例如,创建名为 mydatabase 的数据库:
CREATE DATABASE mydatabase;
退出 MySQL 客户端工具:
exit;
手动还原操作
使用 MySQL 客户端工具还原备份文件。例如,将备份文件 mydatabase.bak 还原到 mydatabase 数据库中:
mysql -u root -p password mydatabase < D:\backup\mydatabase.bak
该命令将会将备份文件 mydatabase.bak 中的数据还原到 mydatabase 数据库中。
需要注意的是,在还原备份文件之前,需要先创建要还原数据的数据库。此外,在 Windows 系统上,备份文件的后缀名为 .bak,需要在还原命令中使用正确的文件名和路径。如果备份文件经过压缩,需要先解压缩到指定的文件路径再执行还原命令。
自动操作
@echo off
set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"
D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysqldump -hlocalhost -uroot -P3306 -p123456 -A > D:/mysql-8.0.25-winx64/bak/db_%Ymd%.bak
C:/Windows/System32/forfiles /p "D:\mysql-8.0.25-winx64\bak" /s /m *.bak /d -14 /c "cmd /c del @path"
@echo on
这段代码是 Windows 批处理文件(.bat)的代码,用于备份 MySQL 数据库并删除 14 天前的备份文件。
该代码的主要功能包括:
使用 set 命令定义变量 Ymd,用于表示当前日期,格式为 YYYYMMDD。
使用 mysqldump 命令备份 MySQL 数据库,并将备份文件保存在指定的路径中。该命令会备份所有数据库,因为参数 -A 表示备份所有数据库。
使用 forfiles 命令删除指定路径下 14 天前的 .bak 文件。
此外,该代码中的备份方式是覆盖式备份,即每次备份都会覆盖之前的备份文件。如果需要保留历史备份,可以将备份文件名中加入日期或时间等信息。例如,将备份文件名改为 db_%Ymd%_%time:0,2%%time:3,2%%time:~6,2%.bak,可以在备份文件名中加入当前时间信息。
自动操作还原方法
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 db1 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 test22 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 db3 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
C:\Users\lixia>D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 db2 < D:/mysql-8.0.25-winx64/bak/db0510.bak
mysql: [Warning] Using a password on the command line interface can be insecure.
-A 全量备份 只还原某个库
需要提前创建db1
–one-database db1
D:/mysql-8.0.25-winx64/mysql-8.0.25-winx64/bin/mysql -hlocalhost -uroot -P3306 -p123456 --one-database db1 < D:/mysql-8.0.25-winx64/bak/db0510.bak