目录
策略二:mysqldump备份数据库
- mysqldump 是采用SQL级别的备份机制,它将数据表导成 SQL 脚本文件,在不同的 MySQL版本之间升级时相对比较合适,兼容性比较高,是最常用的备份方法。
- 可以配合bin_log,可以实现日志的增量备份。
-
(完全备份 + 增量备份,速度相对较慢,适合中小型数据库) (MyISAM 是温备份, InnoDB 是热备份)
环境
两台基于Centos 系统的MySQL-7.5.14 服务器
ip分别为136和140
备份策略:
- 第一次完全备份,每天一次增量备份,每周再做一次完全备份,如此一直重复。
- 为了实现在线备份,并且能增量备份,最好的办法就是采用主从复制机制(replication),在slave机器上做备份。
示例一:备份恢复单个数据库
步骤:1.备份
-
136服务器上备份
[root@localhost ~]# mkdir /backup/mysql -p
语法:mysqldump -u用户 -p密码 -B > 备份路径/备份文件名
[root@localhost ~]# mysqldump -uroot -pSirius123! -B test0118 > /backup/mysql/cl2sl1_1.sql
- -B作用:含有创建数据库和切换数据库的语句,恢复时不用创建数据库和删表。备份多个库,-B 数据库1 数据库2 ...
如果数据库过大,可以进行压缩:
语法:mysqldump -u用户 -p密码 数据库名 > gzip 路径+备份文件压缩包
[root@localhost ~]# mysqldump -uroot -pSirius123! -B test0118 | gzip > /backup/mysql/cl2sl1_2.sql.gz
2.恢复
方法一:MySQL中用source命令(需解压)
语法:gzip -d 备份文件压缩包
[root@localhost mysql]# gzip -d cl2sl1_2.sql.gz //解压
语法:source 路径+备份文件名
mysql> source /backup/mysql/cl2sl1_2.sql //进入sql界面使用source命令恢复
方法二:mysql命令恢复
语法:zcat 备份数据库压缩包 > mysql -u用户 -p密码
[root@localhost mysql]# zcat cl2sl1_2.sql.gz | mysql -uroot -pSirius123!
示例二:备份恢复多个或全部数据库
步骤:1.备份
语法:mysqldump -u用户 -p密码 -A/--database -B > 备份文件名
[root@localhost mysql]# mysqldump -uroot -pSirius123! -A -B > cl2sl2_1.sql //备份全部数据库,-A=--database
语法:mysqldump -u用户 -p密码 -B 数据库1 数据库2 ... > 备份文件名
[root@localhost ~]# mysqldump -uroot -pSirius123! -B test0118 test0119 > /backup/mysql/cl2sl2_1.sql //备份多个数据库
2.恢复
语法:cat 备份文件名 | mysql -u用户名 -p密码
[root@localhost mysql]# cat cl2sl2_1.sql | mysql -uroot -pSirius123!
//用zcat查看内容,加一个管道,把上一条的输出作为下一个命令的标准输入
示例三:备份数据结构
- -d只备份库结构,不包含数据内容
语法:mysqldump -u用户 -p密码 -B 数据库名 -d > 备份文件名
[root@localhost mysql]# mysqldump -uroot -pSirius123! -B nodata -d > db1_nodata.sql
示例四:备份恢复单个表
语法:mysqldump -u用户 -p密码 数据库名 表名 > 备份文件名
[root@localhost mysql]# mysqldump -uroot -pSirius123! test0119 authors > cl2sl4_1.sql
[root@localhost mysql]# mysqldump -uroot -p school Books > /tmp/Books.$(date +%F).sql //加上当前日期,方便区分备份时间
备份多个表&#x