当前位置:
首页
文章
数据库
详情

MySql备份·完全备份mysqldump

一、备份相关概念:

  • 备份分为:完全备份、增量备份、差异备份
  • 完全备份策略:可以备份一台数据库服务器上的所有数据、也可以备份一个数据库下所有数据、还可以备份一张表里的所有数据。
  • 工作中一般的备份策略:完全备份+增量备份、完全备份+差异备份
  • 实现方式:一般会通过计划任务进行实现备份功能

二、完全备份说明:

  • 有二种方式进行完全备份分别是:物理方式(冷备)、逻辑方式(热备)
  • 物理方式(冷备):需要断开数据库服务,适合线下数据库服务器
  • 逻辑方式(热备):1不需要断开数据库服务,适合线上数据库服务器,但缺点是:在备份数据和恢复数据的时候会锁表、备份恢复时,只能把数据恢复到备份时刻的数据。

三、语法格式:

mysqldump 备份数据格式

mysqldump -uroot -p密码 备份语句 > /目录名/备份文件名.sql

  • 备份语句格式:
    库名 表名:备份一张的所有数据
    库名 表名1 表名2:备份多张表的所有数据
    -B 库名:备份1个库的所数据
    -B 库名1 库名2:备份多个库的所数据
    -A 或 --all-databases:备份服务器的所有数据

mysql 恢复数据格式

mysql -uroot -p密码 [库名] < /目录名/备份文件名.sql
说明:使用表的备份文件恢复数据时必须写库名

四、完全备份示例:

物理方式备份:

  • 备份数据
# 必须先停止mysql服务器
[root@host50 ~]# systemctl  stop   mysqld 
# 创建备份文件夹
[root@host50 ~]# mkdir  /bakdir

# 备份数据方式一:拷贝数据库目录
[root@host50 ~]# cp -rp /var/lib/mysql  /bakdir/mysql.bak
# 备份数据方式二:打包压缩数据库目录下文件
[root@host50 ~]# cd /var/lib/mysql
[root@host50 ~]# tar -zcf  /bakdir/mysql.tar.gz ./*   
  • 查看备份文件,并模拟数据丢失
[root@host50 ~]# ls /bakdir/
mysql.bak    mysql.tar.gz
# 模拟数据丢失
[root@host50 ~]# rm -rf /var/lib/mysql/*
  • 恢复数据方式一:
# 文件拷贝回数据库目录
[root@host50 ~]# cp -r /bakdir/mysql.bak/* /var/lib/mysql/
# 修改属主属组为mysql
[root@host50 ~]# chown -R mysql:mysql /var/lib/mysql
# 重新启动mysql服务
[root@host50 ~]# systemctl  start mysqld
# 登录mysql验证
[root@host50 ~]# mysql -uroot -p123qqq...A
mysql&gt; show  databases;   
  • 恢复数据方式二:
# 解压数据至mysql目录下
[root@host50 ~]#tar -zxf /bakdir/mysql.tar.gz  
-C /var/lib/mysql
# 重新启动mysql服务
[root@host50 ~]#systemctl  start mysqld
# 登录mysql验证
[root@host50 ~]# mysql -uroot -p123qqq...A
mysql&gt; show  databases;   

逻辑方式备份:

  • 备份数据
# 备份tarena库salary表的所有数据
[root@host50 ~]# mysqldump -uroot -p密码  tarena salary &gt; /bakdir/tarena_salary.sql
# 备份tarena库所有数据
[root@host50 ~]# mysqldump -uroot -p密码  -B  tarena &gt; /bakdir/tarena.sql
# 备份tarena库和 db1库的所有数据
[root@host50 ~]# mysqldump -uroot -p密码  -B db1 tarena &gt; /bakdir/twodb.sql
# 备份所有数据
[root@host50 ~]# mysqldump -uroot -p密码  -A &gt; /bakdir/allbak.sql
  • 查看备份文件
[root@host50 ~]# ls /bakdir/
allbak.sql  tarena.sql  tarena_salary.sql    
mysql.bak  mysql.tar.gz  twodb.sql
  • 恢复表数据
# 模拟数据丢失,删除表数据
mysql&gt; delete from  tarena.salary;
mysql&gt; exit

# 导入备份恢复数据
[root@host50 ~]# mysql -uroot -p密码 tarena &lt; /bakdir/ tarena_salary.sql
# 查看表记录
[root@host50 ~]# mysql -uroot -p密码
Mysql&gt; select count(*)  from  tarena.salary;
...
  • 恢复库数据
# 使用库的备份文件恢复数据
mysql&gt; drop database tarena;
mysql&gt; exit;

# 使用库的备份文件恢复数据 不需要写库名
[root@host50 ~]# mysql -uroot -p密码  &lt; /bakdir/tarena.sql    

# 管理员登陆查看数据
[root@host50 ~]# mysql -uroot -p密码 
mysql&gt; show  databases;
...
mysql&gt; use  tarena;
...
mysql&gt; show tables;
...

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。