离线备份:就是传统意义上的cold backup(冷备份):需要关闭MySQL服务,读写请求均不允许状态下进行,这种模式下数据损坏和不一致性风险最小。
半离线备份:也就是我们说的warm backup(温备份): MySQL服务不关闭,但只开放了Read操作,关闭了Write操作。
在线备份:也就是hot backup(热备份):在数据备份的同时,MySQL业务持续进行中,仅限于InnoDB引擎。
逻辑备份有如下优点:
逻辑备份的缺点:
物理备份的优点:
物理备份的缺点:
使用 select into outfile 方式实现数据的备份和还原
具体的操作步骤如下:
# 选择对应的数据库mysql> use attend; Database changed# 查询需要备份的数据mysql> select * from userinfo where id < 10000;+----+----------+------------------+---------+| id | usercode | username | usersex |+----+----------+------------------+---------+| 1 | 374532 | 翁智华_attend | 1 || 2 | 123456 | 小度 | 0 |+----+----------+------------------+---------+2 rows in set (0.01 sec)# 选择备份的数据(可以精确条件),应该有两条数据,注意备份的地址具备write权限mysql> select * from userinfo where id < 10000 into outfile '/Users/Brand/Downloads/tmp/userinfo.txt' ;# 检查文件是否存在brand@MacBook-Pro ~ % cd /Users/Brand/Downloads/tmp/# 因为它是文本模式,所以我们使用 load data infile 恢复,并且在恢复之前先删除掉要恢复的数据,做个测试mysql> delete from userinfo where id < 10000;mysql> load data infile '/Users/Brand/Downloads/tmp/userinfo.txt' into table userinfo;
可以使用类似 mysqldump工具 或者 mysqlhotcopy工具对数据进行备份和还原,也可以使用免费的热备份软件 Percona XtraBackup。
这边以 mysqldump 为例子演示温备的实现:
mysqldump -h主机 -P端口 -u用户名 -p密码 param1, param2, param3... > bak_filename.sql
这边对各个字段坐下说明:
–all-databases 或者 -A
mysqldump -uroot -p123456 --all-databases > /user/brand/db_bak/all.sqlmysqldump -uroot -p123456 -A > /user/brand/db_bak/all.sql
-databases [dbname,[dbname...]] --tables [tbname,[tbname...]] ,如果多个表where条件相同,也可以组合在一起使用:
mysqldump -uroot -p123456 --databases db1 --tables tb1 --where="id>1000" > /user/brand/db_bak/db1_tb1.sql
–add-drop-database 、 –add-drop-table
mysqldump -uroot -p123456 -A --add-drop-database --skip-add-drop-table > /user/brand/db_bak/all.sql
–add-locks:备份数据库表时锁定数据库表,默认就是打开的状态,可以使用–skip-add-locks取消
# 不佳参数选项的时候,默认是添加LOCK的mysqldump -uroot -p123456 -A > /user/brand/db_bak/all.sql# 取消LOCK的状态mysqldump -uroot -p123456 -A --skip-add-locks > /user/brand/db_bak/all_skip_lock.sql
–compact:压缩模式,去掉注释、头尾等结构信息,让输出更少
mysqldump -uroot -p123456 -A --compact > /user/brand/db_bak/all_compact.sql
使用mysql命令进行恢复,语法如下
mysql -u user -p pwd [dbname] < bak_filename.sql
注意箭头方向
# 删除数据库,模拟数据库损坏mysql> drop database db1;# 导入完全备份的文件mysql < /user/brand/db_bak/all_compact.sql
备份和恢复主要使用在以下几个方面:
为帮助开发者们提升面试技能、有机会入职BATJ等大厂公司,特别制作了这个专辑——这一次整体放出。
大致内容包括了: Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈!
欢迎大家关注公众号【Java烂猪皮】,回复【666】,获取以上最新Java后端架构VIP学习资料以及视频学习教程,然后一起学习,一文在手,面试我有。
每一个专栏都是大家非常关心,和非常有价值的话题,如果我的文章对你有所帮助,还请帮忙点赞、好评、转发一下,你的支持会激励我输出更高质量的文章,非常感谢!