概述
MySQLdump工具是按照一致性快照读的原理设计的因此跟着此原理做了如下实验
1、mysql数据库修改参数
mysql> set global log_output = 'table';
mysql>set global general_log = on;
2、使用mysqldump命令备份库
/usr/local/mysql/bin/mysqldump -uroot -p -S/tmp/mysql.sock3388 --all-databases --single-transaction --master-data =2 > alldatabase.sql
3、查看general_log分析结果
select * from general_log;
开始备份
FLUSH /*!40101 LOCAL */ TABLES
FLUSH TABLES WITH READ LOCK #拿一把全局读锁
SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ
--mysql会在session级别设置一个事物隔离级别为RR
START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */
--开启一个一致性快照
SHOW MASTER STATUS
unlock tables
SELECT LOGFILE_GROUP_NAME, FILE_NAME, TOTAL_EXTENTS, INITIAL_SIZE, ENGINE, EXTRA FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'UNDO LOG' AND FILE_NAME IS NOT NULL AND LOGFILE_GROUP_NAME IS NOT NULL GROUP BY LOGFILE_GROUP_NAME, FILE_NAME, ENGINE, TOTAL_EXTENTS, INITIAL_SIZE ORDER BY LOGFILE_GROUP_NAME
--查询undo文件名
SELECT DISTINCT TABLESPACE_NAME, FILE_NAME, LOGFILE_GROUP_NAME, EXTENT_SIZE, INITIAL_SIZE, ENGINE FROM INFORMATION_SCHEMA.FILES WHERE FILE_TYPE = 'DATAFILE' ORDER BY TABLESPACE_NAME, LOGFILE_GROUP_NAME
--查询datafile
上述两步我在数据库里面都没有查出数据还没理解用处
mysql为了防止备份过程中,由于数据库的数据量很大备份时间长,从而导致undo被覆盖的情况,设计了以下这个步骤
SAVEPOINT sp #设置检查点
依次对数据库以及数据库下的表做备份 dump,dump表的过程中有一些表肯定会有数据持续写入,mysqldump不错处理当dump完成时直接ROLLBACK TO SAVEPOINT sp 回滚到savepoint点,一直到所有的表都dump完成
释放检查点 RELEASE SAVEPOINT sp
从此数据备份完成。
最后
以上就是还单身战斗机为你收集整理的mysql 一致性备份_MYSQL 备份工具mysqldump之一致性快照分析的全部内容,希望文章能够帮你解决mysql 一致性备份_MYSQL 备份工具mysqldump之一致性快照分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复