使用mysqldump命令
mysqldump -u [用户名] -p[密码] [数据库名] > [备份文件名].sql # 备份指定数据库
mysqldump -u root -p --all-databases > all_backup.sql # 备份所有数据库
可选压缩:gzip [备份文件名].sql。
自动化备份(可选)
通过crontab -e设置定时任务,例如每天凌晨备份:
0 1 * * * mysqldump -u root -p mydb > /path/backup_$(date +\%F).sql。
使用备份文件恢复
sudo systemctl stop mysql # 停止服务
mysql -u [用户名] -p[密码] [数据库名] < [备份文件名].sql # 导入数据
sudo systemctl start mysql # 启动服务
若文件压缩,需先解压:gunzip < backup.sql.gz | mysql -u root -p db_name。
使用二进制日志恢复(精确到某时间点)
# 确认binlog开启:SHOW VARIABLES LIKE 'log_bin';
mysqlbinlog /var/lib/mysql/mysql-bin.000001 > recovery.sql # 解析日志
mysql -u root -p [数据库名] < recovery.sql # 执行恢复
```。
--single-transaction参数(仅适用于InnoDB)。