仔细阅读过官方手册的同学,一定留意到了对于提升大事务回滚效率,官方提供了两种方法:一是增加 innodb_buffer_pool_size 参数大小,二是合理利用 innodb_force_recovery=3 参数,跳过事务回滚过程。第一种方式比较温和,innodb_buffer_pool_size 参数是可以动态调整的,可行性也较高。第二种方式相较之下较暴力,但效果较好。
两种方式各有自己的优点,第一种方式对线上业务系统影响较小,不会中断在线业务。第二种方式效果更显著,会短暂影响业务连续,回滚所有没有提交的事务。
简单的来说,我给你举两个例子:1、对数据库做了ddl的 *** 作,但是没有进行提交 *** 作,此时就会提示受影响行数,如果最后没有进行提交 *** 作,数据就会回滚。
2、对数据进行 *** 作时,如果数据报错,如批量插入数据,其中有一条无法插入,那么此次的 *** 作就会被视为无效,数据库就会回滚,以保证数据的完整性。
3、在程序开发时,是以事务为原子性 *** 作的,此时可能因为一个业务 *** 作会对数据库的多个表进行增删改,如果中间出现问题,那么对已 *** 作部分的数据怎么办呢?
数据库的回滚就可以解决。
目前可采取两种方式:第一种方式,直接对RDS实例进行库备份回滚 *** 作
第二种方式,针对备份点生成的临时实例,对临时实例进行库备份,回滚到RDS实例
第一种方式:直接对RDS实例进行库备份回滚
第一步:在云服务器(linux系统)上安装MySQL客户端工具
1)下载mysql客户端工具
执行: wget http //dev mysql com/get/archives/mysql-5.6/MySQL-client-5.6.15-1.linux_glibc2.5.x86_64.rpm
2)安装mysql客户端工具
执行:rpm -ivh MySQL-client-5.6.15-1.linux_glibc2.5.x86_64.rpm
或者您可以直接在系统内使用yum install mysql进行安装MySQL客户端。
第二步:对RDS实例执行库备份 *** 作
执行命令完成库备份:mysqldump -h xxx.mysql.aliyun.com -u xxx -P 3306 -p --opt --default-character-set=utf8 --triggers --hex-blob db_name >/tmp/db_name.sql
(点击查看全图)
输入密码后,mysqldump将进行备份 *** 作并自动完成。
检测备份生成sql文件,执行 ll xx.sql
第三步:针对RDS实例执行回滚 *** 作
根据备份文件,执行以下命令进行RDS实例回滚 *** 作
mysql -h xxxxxx.mysql.rds.aliyuncs.com -u user_name -P 3306 -p database_name
(点击查看全图)
输入密码后,将完成回滚 *** 作
第二种方式:针对备份点生成的临时实例,对临时实例进行库备份,回滚到RDS实例
第一步:在云服务器(linux系统)上安装mysql客户端工具
1)下载mysql客户端工具
执行: wget http://cdn.mysql.com/Downloads/MySQL-5.5/MySQL-client-5.5.32-2.linux2.6.x86_64.rpm
2)安装mysql客户端工具
执行:rpm -ivh MySQL-client-5.5.32-2.linux2.6.x86_64.rpm
第二步:在阿里云RDS控制台中创建临时实例
点击RDS控制台“备份恢复”页面,选择一个备份集创建临时实例,如下图
(点击查看全图)
每个RDS实例可以创建一个临时实例,临时实例有只读权限,并且继承备份点的帐号和密码以及内外网状态,创建成功后48个小时内有效
创建临时实例成功后,在临时实例列表中可以查看临时实例信息,如:临时实例连接字符串,端口号,访问临时实例的帐号名(创建备份点时RDS实例中存在的帐号),网络类型等等。
(点击查看全图)
第三步:针对子实例进行mysql按库备份 *** 作
执行以下命令对子实例进行库备份 *** 作
mysqldump -h xxx.mysql.aliyun.com -u xxx -P 3306 -p --opt --default-character-set=utf8 --triggers --hex-blob db_name >/tmp/db_name.sql
(点击查看全图)
输入密码后,完成子实例的备份 *** 作。
注:上图红色圈内应输入子实例的连接地址,用户名以及数据库名
第四步:针对RDS实例进行回滚 *** 作
执行以下命令对RDS实例进行回滚 *** 作
mysql-h xxxxxx.mysql.rds.aliyuncs.com -u xxxx -P 3306 -p database_name
(点击查看全图)
输入密码后,完成RDS实例的回滚 *** 作
注:上图红色圈内应输入RDS实例连接地址,用户名以及数据库名
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)