Mysql数据库备份及恢复


mysqldump -uroot -p******** test > test.sql备份test数据库到当前目录
mysqldump -uroot -pAbc123*** -t test > test1.sql也就是备份test数据库中的插入数据,如图所示:

这样的备份不能在新的数据库中恢复,只能在原库恢复.
mysqldump -uroot -pAbc123*** -d test > test3.sql也就是备份test数据库中的表结构
mysqldump -uroot -pAbc123*** -T /var/lib/mysql-files/ test tb_user备份表结构和txt数据文件.其中/var/lib/mysql-files目录是mysql指定的目录,通过show VARIABLES like '%secure_file_priv%'查看.
mysqldump -uroot -pAbc123*** -n test > test3.sql表示取消显示CREATE DATABASE。。。IF EXISTS语句,默认不加-n也已经取消显示CREATE DATABASE。。。IF EXISTS语句

  • 恢复txt数据文件
    mysqlimport -uroot -pAbc123*** test /var/lib/mysql-files/tb_user.txt
    总结:


2024年9月14日,备份+binlog日志恢复

  1. 如果误删除了数据,首先停止数据库
  2. 先恢复之前的完整备份,比如之前的备份mysqldump -uroot -p --single-transaction hello_mp t1 --source-data=2 > /tmp/t1.sql,
    备份的是hello_mp数据库中的t1表
    --single-transaction 选项是专门用于 InnoDB 存储引擎的表的。当你使用这个选项时,mysqldump 会启动一个事务来转储数据,这保证了在转储过程中,数据库的一致性视图被捕获。这个选项对于在不锁定表的情况下备份 InnoDB 表非常有用,因为它允许其他用户或进程在备份过程中继续对表进行读写操作。
  3. --source-data=1和2,实际测试区别不大,作为--master-data=2的替代者,因为--master-data=2已经不推荐使用了.
  4. 首先登陆数据库恢复之前的完整备份
    mysql> source /tmp/t1.sql
  5. 查看t1.sql备份文件,确定备份文件时的binlog位置

    目前的是binlog.000044 ,MASTER_LOG_POS=5365
  6. binlog.000044无法直接使用cat或vim查看,使用mysqlbinlog binlog.000044 -vv >/tmp/t1.binlog,也就是通过mysqlbinlog -vv重建伪SQL语句查看
  7. vim查看t1.binlog,查到5365位置

    查看到删除之前的数据:

    COMMIT结束位置是5863
    继续往下看,确认并发现了误删的命令

mysqlbinlog /var/lib/mysql/binlog.000044 --start-position=5365 --stop-position=5863 -vv >/tmp/new.binlog
9. mysql> source /tmp/new.binlog

在添加4、5、6之后误操作,将表全部删除,最后恢复误删的1、2、3、4、5、6

posted @ 2024-05-05 01:09  文采杰出  阅读(7)  评论(0编辑  收藏  举报