作为一个刚接触MySQL的人,在执行数据库导出的上下文中,是否有与Oracle的用于MySql的flashback_time参数等效的参数?我发现最接近的是“lock-tables”命令,但不完全相同,因为它阻止数据在使用时被更改,从而使用户无法使用数据库应用程序。而“Oracle flashback_time”参数允许数据库可用,同时仍然生成其数据与单个时间点一致的导出
2ic8powd1#
MySQL没有允许导出过去任意时间戳的数据的功能。您可以通过以下方式转储数据的 * 当前 * 状态而不锁定:
mysqldump --single-transaction
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_single-transaction此选项将事务隔离模式设置为REPEATABLE READ,并在转储数据之前向服务器发送START TRANSACTION SQL语句。它只对InnoDB这样的事务表有用,因为它会在发出START TRANSACTION时转储数据库的一致状态,而不会阻塞任何应用程序。(强调我的)InnoDB表是默认的,所以很可能你所有的表都已经是InnoDB了。您可能还想评估Percona XtraBackup,这是一个免费的开源MySQL热备份工具。
1条答案
按热度按时间2ic8powd1#
MySQL没有允许导出过去任意时间戳的数据的功能。
您可以通过以下方式转储数据的 * 当前 * 状态而不锁定:
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html#option_mysqldump_single-transaction
此选项将事务隔离模式设置为REPEATABLE READ,并在转储数据之前向服务器发送START TRANSACTION SQL语句。它只对InnoDB这样的事务表有用,因为它会在发出START TRANSACTION时转储数据库的一致状态,而不会阻塞任何应用程序。
(强调我的)
InnoDB表是默认的,所以很可能你所有的表都已经是InnoDB了。
您可能还想评估Percona XtraBackup,这是一个免费的开源MySQL热备份工具。