mysql数据的备份和恢复

听歌 沛公 第一个欧,听的是沛公,唱的岂不是你我

备份

全量备份

备份全部数据

增量备份

基于上一次的备份之后的备份

差异备份

基于上一次全量之后的备份

mysql备份

下面备份的都是sql语句

备份所有数据库

# 下面是在对应服务器的终端执行  我用的是Linux系统
mysqldump -u'用户名' -p'密码' -A
# 执行上面后,可将备份的sql语句输出到控制台,需要重定向输入到sql文件中
mysqldump -u'用户名' -p'密码' -A > all_db.sql

-A # 表示所有的数据库  
--all-databases   # 跟上面等价值

备份制定的数据库

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysqldump -u'用户名' -p'密码' -B 库1 库2
# 执行上面后,可将备份的sql语句输出到控制台,需要重定向输入到sql文件中
mysqldump -u'用户名' -p'密码' -B 库1 库2 > db.sql

-B # 后面可跟制定的数据库,多个用空格隔开
--databases   # 跟上面等价值

备份多张表

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysqldump -u'用户名' -p'密码' 库名 表1 表2 
# 执行上面后,可将备份的sql语句输出到控制台,需要重定向输入到sql文件中
mysqldump -u'用户名' -p'密码' 库名 表1 表2  > ta.sql

# 后面可以直接跟库名 表名,多张表需要空格分开

备份表结构

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysqldump -u'用户名' -p'密码' -d 库名 表1 表2 
# 执行上面后,可将备份的表结构sql语句输出到控制台,需要重定向输入到sql文件中
mysqldump -u'用户名' -p'密码' -d 库名 表1 表2  > ta.sql

# 后面可以直接跟库名 表名,多张表需要空格分开

备份表数据

# 备份表数据需要在mysql客户端进行操作
mysql -u'用户名' -p'密码'
# 先查看数据库支持不
mysql> show variables like 'secure%';
+------------------+-----------------------+
| Variable_name    | Value                 |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)
# 上面指定了备份表数据存放地址 mysql5.7的话上面查询有两条数据,mysql8的话只有上面的一条
mysql> select * from mysql.user into outfile '/var/lib/mysql-files/data.xls';
# 在此目录下有一个 data.xls 的文件

# 也可以修改此默认的目录
vim /etc/my.cnf
# 在下面添加一个配置
secure_file_priv='存放的目录'
# 添加完配置后要重启mysql的呢

恢复

恢复所有数据 对应上面的第一个和第二个

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysql -u'用户名' -p'密码' < sql文件

恢复表

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysql -u'用户名' -p'密码' 库名 < sql文件
# 在mysql中恢复
mysql -u'用户名' -p'密码'
mysql> use 库名
mysql> source sql文件

恢复表结构

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysql -u'用户名' -p'密码' -D 库名 < sql文件

恢复表数据

# 下面是在对应服务器的终端执行 我用的是Linux系统
mysql -u'用户名' -p'密码'
mysql> use 库名
mysql> load data infile 'sql文件' into table 表名

国庆happy呀!