一、备份方式
如何选择
100G数据以内,逻辑备份没问题,服务器配置要跟上
100G 以上,建议物理备份
二、逻辑备份
把数据库、表,以SQL语句的形式,输出为文件的备份过程,这种方式称之为逻辑备份。
但是这种方式效率并不高,以SQL导出,在海量数据下,例如几十G的场景,备份、恢复的时间都会过长。
1.mysqldump备份
mysqldump是mysql自带的备份工具,可以实现本地备份,远程备份。
mysqldump备份语法:
mysqldump -u用户名 -p密码 -h指定主机地址 -P 指定mysql端口 参数 数据库名 > 数据备份文件.sql
全量备份
--all--database,-A 转储所有数据库中的所有表。
# mysqldump -u用户名 -p'密码' -A > /mysql_backup/all_db.sql
指定数据库备份
---database,-B 可以转储指定几个数据库。
-B可以跟上多个数据库名,同时备份多个库
指定备份库,以及所有数据
# mysqldump -u用户名 -p'密码' -B 库名 > /mysql_backup/文件名.sql
备份单个数据表
单独指定备份某个表
# mysqldump -u用户名 -p'密码' 库名 表名 > /mysql_backup/文件名.sql
备份多个数据表
# mysqldump -u用户名 -p'密码' 库名 表1 表2 > /mysql_backup/文件名.sql
备份数据库的指定表和特定数据
mysqldump -u用户名 -p密码 库名 表名 --where="限制条件" > /mysql_backup/文件名.sql
mysqldump -h 172.21.61.5 -P 4000 -u root -p'T36AP#%mvj_7' ls_slfh_fireproofing_test ffp_basis_obstacles --where="1 =1 limit 100" > /mysql_backup/ffp_basis_obstacles.sql
只要备份结构,不备份数据
有些情况下会只需要表结构,不要数据,命令如下
--no-data,-d 不写表的任何行信息。
# 备份world库下,所有的表结构
mysqldump -u用户名 -p'密码' -d 库名 > /mysql_backup/文件名.sql
# 单独备份某个表的结构
mysqldump -u用户名 -p'密码' -d 库名 表名 > /mysql_backup/文件名.sql
只要备份表数据,不备份结构
--no-create-info,-t 不写重新创建每个转储表的CREATE TABLE语句。
# 只要表的数据
mysqldump -u用户名 -p'密码' -t 库名 表名 > /mysql_backup/文件名.sql
备份且压缩数据
对于数据库有大量数据表,以及信息,导出的备份文件,最好是压缩后的,节省磁盘。
mysqldump -u用户名 -p'密码' 库名 表名 | gzip > /mysql_backup/文件名.sql.gz
恢复数据库
mysql -h ip -u用户名 -p'密码' 库名 < /mysql_backup/文件名.sql;
使用source导入:use 数据库名; source /sql文件路径