MySQL二进制日志恢复:数据恢复与备份还原语句详解

创始人
2024-12-17 01:32:05
0 次浏览
0 评论

mysql数据库怎样用日志恢复数据sql语句

要从二进制日志恢复数据,您需要知道当前二进制日志文件的路径和文件名。
通常可以从首选项文件(即my.cnformy.ini,具体取决于您的系统)中找到该路径。
如果选项文件中没有,则在服务器启动时可能会在命令行上将其作为选项给出。
启用二进制日志记录的选项是--log-bin。
要确定当前二进制日志文件的文件名,请输入以下MySQL语句:SHOWBINLOGEVENTS/G您还可以从命令行输入以下内容:mysql--user=root-pmy_pwd-e'SHOWBINLOGEVENTS/G'将密码更改为my_pwd替换为服务器的root密码。
1.指定恢复时间对于MySQL4.1.4,您可以通过命令mysqlbinlog中的--start-date和--stop-date选项以DATETIME格式指定开始和结束时间。
例如,假设今天早上10点(今天是2006年4月20日),执行了一条SQL语句来删除一个大表。
要恢复表和数据,可以恢复前一天晚上的备份并输入:mysqlbinlog--stop-date="2005-04-209:59:59"/var/log/mysql/bin123456/mysql-uroot-pmypwd。
该命令将根据--stop-date选项中给出的DATETIME格式的日期和时间恢复所有数据。
如果几个小时后您没有检测到输入了错误的SQL语句,您可能需要继续此后发生的活动。
基于这些,您可以使用日期和时间再次运行mysqlbinlog:mysqlbinlog--start-date="2005-04-2010:01:00"/var/log/mysql/bin.123456/mysql-uroot-pmypwd/在此行中,将运行自上午10:01以来记录的SQL语句。
结合执行前一天晚上的转储文件和mysqlbinlog中的两行数据可以将所有数据恢复到上午10:00之前的一秒。
您应该检查日志以确保时间正确。

mysql中备份和还原数据库的语句什么啊

mysqldump备份恢复和mysqldump导入导出语句详解mysqldump备份:mysqldump-u用户名-p密码-h主机数据库a-w"sql条件"--lock-all-tables>路径case:mysqldump-uroot-p1234-hlocalhostdb1a-w"idin(selectidfromb)"--lock-all-tables>c:\aa.txtmysqldump恢复:mysqldump-u用户名-p密码-h主机数据库<路径情况:mysql-uroot-p1234db1路径mysqldump-uroot-p1234dbnamea--where"tag='88'"--no-create-info>c:\a.sqlmmysqldump导入方式:mysqldump-u用户名-p密码-h主机数据库<路径case:mysql-uroot-p1234db1值可以是ansi、mysql323、mysql40、postgresql、oracle、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等。
要使用多个值,请用逗号分隔。
当然,它不保证完全兼容,但确实尽力兼容。
--complete-insert,-c使用包含字段名的完整INSERT方法导出数据,即将所有值写在一行上。
这样做可以提高插入效率,但可能会受到max_allowed_pa​​cket参数的影响,导致插入失败。
因此,这个参数需要谨慎使用,至少我不推荐使用。
--default-character-set=charset指定导出数据时使用哪个字符集。
如果数据表不使用默认的latin1字符集,那么导出时必须指定该选项,否则再次导入数据后会出现乱码。
--disable-keys告诉mysqldump添加/*!40000ALTERTABLEtableDISABLEKEYS*/;和/*!40000ALTERTABLEtableENABLEKEYS*/;INSERT语句的开头和结尾的语句。
这可以大大提高插入语句的速度,因为它是在所有数据都已插入之后进行的。
只需重建索引即可。
该选项仅适用于MyISAM表。
--extended-insert=true|false默认情况下,mysqldump开启--complete-insert模式,因此如果您不想使用它,只需使用此选项并将其值设置为false即可。
--hex-blob使用十六进制格式导出二进制字符串字段。
如果存在二进制数据,则必须使用此选项。
受影响的字段类型为BINARY、VARBINARY和BLOB。
--lock-all-tables,-x在开始导出之前,提交请求锁定所有数据库中的所有表,以确保数据一致性。
这是全局读锁,并且--single-transaction和--lock-tables选项会自动关闭。
--lock-tables与--lock-all-tables类似,但它锁定当前导出的数据表,而不是一次性锁定数据库中的所有表。
该选项仅适用于MyISAM表。
如果是Innodb表,可以使用--single-transaction选项。
--no-create-info,-t只导出数据,不添加CREATETABLE语句。
--no-data,-d不导出任何数据,只导出数据库表结构。
--opt这只是一个快速选项,相当于添加--add-drop-tables--add-locking--create-option--disable-keys--extended-insert--lock-tables--quick--同时设置-charset选项。
该选项可以让mysqldump快速导出数据,并且导出的数据可以快速导回。
该选项默认启用,但可以使用--skip-opt禁用。
请注意,如果运行mysqldump时未指定--quick或--opt选项,则整个结果集将放置在内存中。
如果导出大型数据库,可能会出现问题。
--quick,-q该选项在导出大型表时很有用。
它强制mysqldump从服务器查询记录并直接输出,而不是获取所有记录并将它们缓存在内存中。
--routines,-R导出存储过程和自定义函数。
--single-transaction此选项在导出数据之前提交BEGINSQL语句。
BEGIN不会阻塞任何应用程序,并且可以保证导出过程中数据库状态的一致。
它仅适用于事务表,例如InnoDB和BDB。
该选项和--lock-tables选项是互斥的,因为LOCKTABLES将导致的任何hangTransactions被隐式提交。
要导出大表,应结合使用--quick选项。
--triggers还导出触发器。
该选项默认启用,使用--skip-triggers禁用它。
其他参数详细请参考说明书。
我通常使用以下SQL来备份MyISAM表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr"--default-character-set=utf8--opt--extended-insert=false"--triggers-R--hex-blob-xdb_name>db_name.sql使用以下SQL备份Innodb表:/usr/local/mysql/bin/mysqldump-uyejr-pyejr"--default-character-set=utf8--opt--extended-insert=false"--触发器-R--hex-blob--single-transactiondb_name>db_name.sql另外,如果想实现在线备份,还可以使用--master-data参数,如下:/usr/local/mysql/bin/mysqldump-uyejr-pyejr"--default-character-set=utf8--opt--master-data=1"--single-transaction--flush-logsdb_name>db_name.sql它只在开头请求锁表,然后刷新binlog,然后在导出的文件中添加CHANGEMASTER语句指定当前备份的binlog位置,如果想恢复这个文件到奴隶,你可以用这个方法。
1.2恢复用mysqldump备份的文件是一个SQL脚本,可以直接倒。
有两种导入数据的方法。
直接使用mysql客户端,例如:/usr/local/mysql/bin/mysql-uyejr-pyejrdb_name
热门文章
1
Redisson分布式锁深度解析:Red... Redis实现分布式锁+Redisson源码解析在某些场景下,多个进程需要以互斥...

2
深度解析Docker:容器技术提升应用部... docker是什么Docker是一种强大的开源容器技术,它将应用程序及其所有依赖...

3
Docker dockercp命令:容器... Dockercp命令详解:在Docker容器和主机之间复制文件&#47;...

4
Redis KEY模糊查询优化策略及SC... RedisKEY*模糊查询导致交互速度慢、阻塞其他Redis操作在Redis中使...

5
Redisson深度解析:分布式锁实战与... Redis:redis分布式锁实战之redisson在分布式环境中;个体锁不能再...

6
Python float()函数:Web... Pythonfloat(input())的用法,web中的应用float(inp...

7
Java单例模式深入解析及实例代码分享 单例模式单例模式实例在Java中,单例模式确保类只存在一个实例。该模式的主要作用...

8
Docker核心原理解析:深入理解Nam... DOCKER总结Docker是一个开源应用程序容器引擎,允许开发人员将其应用程序...

9
C语言字符串输出技巧:指针与数组首地址的... C语言字符串输出Chara[]="aaaaa";printf...

10
200本Java开发精选书籍免费分享!附... Java开发书籍推荐(200多本)我整理了一份Java开发的邮件资源,一共大概2...