1、获取binlog文件
? ? ? ? 1.1 如果是本地数据库 可以从本地(Windows中生成的binlog位于data目录 例如:D:\ProgramData\MySQL\MySQL Server 5.1\data\mysql-bin.000024;linux中生成的binlog位于如:/var/lib/mysql/mysql-bin.000024)获取binlog文件。
? ? ? ? 1.2 如果非本地数据库需要从远程机器获取binlog文件(如果用了云平台的产品可以从页面直接下载即可)
2、转换binlog文件为sql文件
? ? ? ? 2.1 Windows系统进入到mysql的安装路径(例如:D:\ProgramData\MySQL\MySQL Server 5.1\data) 执行文件转换命令:mysqlbinlog mysql-bin.000024 -d mytestdb > mytestdb.sql (注意:mytestdb是数据库名称),下面这个是导出某一时间段的命令(mysqlbinlog --start-datetime="2020-01-17 14:40:00" --stop-datetime="2020-01-17 15:40:00" mysql-bin.000024 -d mytestdb > mytestdb.sql)
? ? ? ? 2.2 Linux系统执行转换命令(mysqlbinlog /Users/local/Downloads/mysql-bin.004246 -d mytestdb > /Users/local/Downloads/mytestdb.sql),执行命令可能会报错(-bash: mysqlbinlog: command not found),要想解决此问题,我们需要做的就是映射一个链接到/usr/local/bin目录下,相当于建立一个链接文件,类似给mysqlbinlog添加一个环境变量一样。
? ? ? ? ? ? ? ? 2.2.1?首先我们可以用which命令查看是不是这个原因(which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。)
? ? ? ? ? ? ? ? 2.2.2 执行命令:1. cd /usr/local/bin(进入到要映射命令的文件夹)? ?2. ln -s /www/server/mysql/bin/mysqlbinlog mysqlbinlog (把mysqlbinlog安装目录/www/server/mysql/bin/mysqlbinlog 映射到/usr/local/bin目录下,/www/server/mysql/bin/mysqlbinlog 这个路径一定要是你自己的mysqlbinlog安装路径哦,不要直接复制)
3、执行生成的sql文件
mysql > use labg1604; -- 进入操作的数据库
mysql> source C:/......./Desktop/mytestdb.sql;? -- 这里表示导出sql的存放位置,进行这一段时间数据库sql恢复。
binlog使用场景: ?? ?mysql主从复制、mysql数据恢复、数据同步(基于Cannal投递Mysql Binlog到kafka、elasticsearch)
|