一、基于二进制文件的恢复***
1、算好要恢复数据的时间段,重定向输入到bin.sql文件中
[root@ren7 mysql]# mysqlbinlog --start-datetime="2019-09-07 20:07:32" --stop-datetime="2019-09-07 20:12:00" mysql-bin.000001 > bin.sql [root@ren7 mysql]# chown mysql.mysql bin.sql
执行bin.sql文件还原(sql语句下)
MariaDB [ren]> source /var/lib/mysql/bin.sql
2、根据最后所处的位置恢复
MariaDB [ren]> delete from test where id is null; Query OK, 1 row affected (0.00 sec) MariaDB [ren]> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 690 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) [root@ren7 mysql]# mysqlbinlog /var/lib/mysql/mysql-bin.000002 --stop-position=518 | mysql -uroot -proot
二、基于备份工具mariabackup进行备份***
三、基于mysqldump工具进行备份(逻辑备份工具)***
#备份testdb数据库(-l代表备份单个数据库时锁定该库的所有表;-x当对所有数据库备份时锁定所有数据库的所有表) mysqldump -uroot -proot -l --databases testdb > testdb.sql #备份所有数据库 mysqldump -uroot -proot --all-databases > all_databases.sql #备份testdb数据库下的students表 mysqldump -uroot -proot testdb students > students.sql #备份testdb数据库下的students表和classes表 mysqldump -uroot -proot testdb students classes > both_tables.sql #还原数据(sql命令行下) source testdb.sql
其它常用选项: --master-data: 0:表示在使用mysqldump进行备份时,不记录对应二进制日志文件位置,将此值显式的设置为0与不使用此选项的效果相同 1:表示在使用mysqldump进行备份时,记录对应二进制日志文件位置,此值为默认值 2: --flush-logs: --routines: 表示备份时,存储过程和存储函数也会被备份 --triggers: 表示备份时,触发器会被备份 --events: 表示备份时,事件表会被备份
四、基于lvm2的备份