MySql数据库逻辑备份与还原(恢复)

一、mysql基本操作:
登录:

mysql -hlocalhost -uroot -p #然后输入密码

 常规操作:

show databases;
use demo;
show tables;

// TODO DML语句 CRUD
insert into table_name(...) values (...);
update table_name set ... where ...
delete from table_name where ...

quit;


二、重启mysql:

systemctl restart(stop/start) mysqld.service
(service mysqld start/stop/restart )


三、备份:

shell:mysqldump -uroot -p database_name > bak_file_name;
shell:mysqldump -uroot -p -l -F database_name > bak_file_name;

-l 表示给所有表加读锁(也就是当存在其他用户对数据进行修改,但未提交时,等待其事务提交。)
-F 表示备份后,创建新的日志文件(binlog日志文件序列增1,这样有助于进行恢复时,进行重做日志恢复,以进行完全的数据库恢复。即:从备份文件恢复+备份之后所有的操作记录重做 = 故障时的数据库状态。) 该功能需要启用二进制增量日志,参考本文第五章

四、还原:

shell:mysql -uroot -p database_name < bak_file_name;    

# 这是基于文件的还原,注意使用的命令是mysql。

shell:mysqlbinlog [mysql-bin].000007 | mysql -u root -p database_name # 然后输入密码。

# [mysql-bin]是自定义的日志文件名称,
# 000007如果是-F产生的新日志,则可以作为文件还原后的后续操作日志恢复。参考第三章-F的说明。

shell:mysqlbinlog --stop-datetime="2019-07-05 01:00:00" /[path]/mysql-bin.000007 | mysql -uroot -p  

# 然后输入密码,该操作是基于时间点的恢复。
# 也就是从mysql-bin.000007日志的开头,执行重做至 2019-07-05 01:00:00 为止。
# 如果是 start-datetime 则是指定时间开始 至文件末尾。
# 同时指定start和stop ,则进行区间重做。

shell:mysqlbinlog [--start-datetime="2019-07-05 01:00:00" --stop-datetime="2019-07-05 02:00:00"]mysql-bin.000007 > /[path]/mysql_restore.sql   

# 创建文本文件, 用于查找错误语句的位置

shell:mysqlbinlog --stop-position="123789" /[path]/mysql-bin.000007 | mysql -uroot -p  

# 基于位置的恢复,与时间同理,只是参数使用,使得恢复更加具体。

注意1:备份用mysqldump工具命令, 还原用mysql命令。
注意2:bak_file_name 可以是 .sql .dmp拓展名类型的文件。

参考:深入浅出MySQL(第二版) P436-440

五、增量日志(备份)配置文件配置:
my.cnf文件[mysqld]添加:
server-id=1
log-bin=/var/lib/mysql/mysql-bin
#配置后需要对数据库进行重启,参考第二章。

Oracle备份与恢复:https://blog.csdn.net/Bof_jangle/article/details/51366563

Oracle日志文件说明(重做日志的作用,mysql与其是类似的,可以参考):https://blog.csdn.net/Bof_jangle/article/details/51220563

发布了129 篇原创文章 · 获赞 20 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Bof_jangle/article/details/94742140