mysql基础之备份和恢复实操

一、基于二进制文件的恢复***

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的备份

 

猜你喜欢

转载自www.cnblogs.com/renyz/p/11483066.html