Mysql数据回滚和备份恢复方法

本文介绍了MySQL中事务处理的两种方法及如何通过修改配置支持InnoDB引擎来启用事务功能。此外,还详细讲解了MySQL数据库的备份和还原操作,包括在Windows和Linux环境下使用命令行工具进行数据库导出与导入的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL的事务处理主要有两种方法。
1、用begin,rollback,commit来实现
begin 开始一个事务
rollback 事务回滚
commit 事务确认
2、直接用set来改变mysql的自动提交模式
MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过
set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交
来实现事务的处理。
当你用 set autocommit=0 的时候,你以后所有的SQL都将做为事务处理,直到你用commit确认或rollback结束。
注意当你结束这个事务的同时也开启了个新的事务!按第一种方法只将当前的作为一个事务!
个人推荐使用第一种方法!
MYSQL中只有INNODB和BDB类型的数据表才能支持事务处理!其他的类型是不支持的!
***:一般MYSQL数据库默认的引擎是MyISAM,这种引擎不支持事务!如果要让MYSQL支持事务,可以自己手动修改:
方法如下:1.修改c:\appserv\mysql\my.ini文件,找到skip-InnoDB,在前面加上#,后保存文件。
2.在运行中输入:services.msc,重启mysql服务。
3.到phpmyadmin中,mysql->show engines;(或执行mysql->show variables like 'have_%'; ),查看InnoDB为YES,即表示数据库支持InnoDB了。
也就说明支持事务transaction了。
4.在创建表时,就可以为Storage Engine选择InnoDB引擎了。如果是以前创建的表,可以使用mysql->alter table table_name type=InnoDB;

或 mysql->alter table table_name engine=InnoDB;来改变数据表的引擎以支持事务。



MySQL命令行导出数据库

MySQL命令行导出数据库:
1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录
如我输入的命令行:cd C:\Program Files\MySQL\MySQL Server 4.1\bin
(或者直接将windows的环境变量path中添加该目录)


2,导出数据库:mysqldump -u 用户名 -p 数据库名 > 导出的文件名 
如我输入的命令行:mysqldump -u root -p news > news.sql   (输入后会让你输入进入MySQL的密码)
(如果导出单张表的话在数据库名后面输入表名即可)

3、会看到文件news.sql自动生成到bin文件下  
命令行导入数据库:


1,将要导入的.sql文件移至bin文件下,这样的路径比较方便
2,同上面导出的第1步
3,进入MySQL:mysql -u 用户名 -p
如我输入的命令行:mysql -u root -p   (输入同样后会让你输入MySQL的密码)
4,在MySQL-Front中新建你要建的数据库,这时是空数据库,如新建一个名为news的目标数据库
5,输入:mysql>use 目标数据库名
如我输入的命令行:mysql>use news;
6,导入文件:mysql>source 导入的文件名; 
如我输入的命令行:mysql>source news.sql; 

MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成的。 
1.Win32下MySQL的备份与还原 
1.1 备份 
开始菜单 | 运行 | cmd |利用“cd \Program Files\MySQL\MySQL Server 5.0\bin”命令进入bin文件夹 | 利用“mysqldump  -u 用户名 -p databasename >exportfilename”导出数据库到文件,如mysqldump -u root -p voice>voice.sql,然后输入密码即可开始导出。 
  
1.2 还原 
进入MySQL Command Line Client,输入密码,进入到“mysql>”,输入命令"show databases;",回车,看看有些什么数据库;建立你要还原的数据库,输入"create database voice;",回车;切换到刚建立的数据库,输入"use voice;",回车;导入数据,输入"source voice.sql;",回车,开始导入,再次出现"mysql>"并且没有提示错误即还原成功。 
  
2.Linux下MySQL的备份与还原 
2.1 备份 
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) 
[root@localhost mysql]# mysqldump -u root -p voice>voice.sql,输入密码即可。
2.2 还原
法一:
[root@localhost ~]# mysql -u root -p 回车,输入密码,进入MySQL的控制台"mysql>",同1.2还原。
法二:
[root@localhost ~]# cd /var/lib/mysql (进入到MySQL库目录,根据自己的MySQL的安装情况调整目录) 
[root@localhost mysql]# mysql -u root -p voice<voice.sql,输入密码即可。


### 如何在 MySQL 中执行事务回滚 #### 使用 `ROLLBACK` 语句 当需要撤销当前事务的所有更改时,可以使用 `ROLLBACK` 语句。这会取消自上次调用 `START TRANSACTION` 或者上一次成功提交以来所做的任何修改。 ```sql -- 开始一个新的事务 START TRANSACTION; -- 执行一些数据库更新操作... UPDATE table_name SET column='value' WHERE condition; INSERT INTO another_table (column1, column2) VALUES ('val1', 'val2'); -- 如果决定放弃这些变更,则执行回滚命令 ROLLBACK; ``` 此段代码展示了如何启动一个新事务并最终选择性地撤消其中的操作[^1]。 #### 部分回滚至保存点 对于更细粒度的控制,在事务内部设置保存点允许仅回退到指定位置而不影响整个事务的状态。利用 `SAVEPOINT` `ROLLBACK TO SAVEPOINT` 可达成这一目的。 ```sql -- 同样先开始一个事务 START TRANSACTION; -- 创建第一个保存点 SAVEPOINT sp_01; -- 进行某些可能想要单独处理的操作 DELETE FROM some_table WHERE id=789; -- 建立第二个保存点以便进一步划分逻辑单元 SAVEPOINT sp_02; -- 更多后续动作... -- 若只希望重做最后一步而非全部工作,则只需回到最近的一个savepoint处即可 ROLLBACK TO SAVEPOINT sp_01; -- 将删除操作恢复 -- 继续正常流程直至完成或再次遇到错误情况需考虑整体失败的情况 COMMIT; ``` 上述脚本说明了怎样定义多个保存点以及如何针对性地实施局部性的回滚措施[^2]。 #### 设置合适的隔离级别 为了确保数据的一致性准确性,适当调整事务隔离等级也是十分重要的。不同的应用场景下选用恰当级别的隔离机制有助于减少并发冲突带来的负面影响的同时提高性能表现。 ```sql SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; ``` 默认情况下,MySQL 的 InnoDB 存储引擎采用的是可重复读(`REPEATABLE READ`)模式,它能够防止脏读不可重复读现象的发生,但在面对幻象问题时仍可能存在风险;因此根据具体需求合理配置此项参数至关重要[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值