数据库管理(备份与恢复)

数据库的备份与恢复

数据库备份的目的:防止数据被误删或设备损害导致数据的丢失。

1,数据备份的分类:物体热备和逻辑备份

  • 数据备份的策略:
        -完全备份:备份所有数据(一张表的所有数据  一个库的所有数据  一台数据库   的所有数据
       
        -差异备份:备份自完全备份后,所有新产生的数据

        -备份自上次备份后,所有新产生的数据

  • 物体备份:指定备份库和表对应的文件,仅支持myisam储存引擎,只适合小型数据的储存
  • 物体备份步骤:
        -[root@host51 ~]#mkdir /databak   //创建一个备份目录
       
        -[root@host51 ~]#cp -r /var/lib/mysql/mysql /databak/mysql.bak //把要备
份的数据库拷贝到新文件并改名
 

        - 也可以使用压缩包备份
   
       -[root@host51 ~]#tar -zcvf /databak/mysql.bak.tar.gz /var/lib/mysql/mysql

        -[root@host51 ~]#rm -rf /var/lib/mysql/mysql //把数据库删除
  • 数据库的恢复
        -[root@host51 ~]#cp -r /databak/mysql.bak /var/lib/mysql/mysql

        -[root@host51 ~]#chown -R mysql:mysql /var/lib/mysql/mysql //修改所有  者和所属组
           
        -[root@host51 ~]#systemctl stop mysqld //停服务
   
        -[root@host51 ~]#systemctl start mysqld //再启服务

        -[root@host51 ~]#ls /var/lib/mysql/mysql  //查看数据的恢复

  • 逻辑备份( 在执行备份命令时,根据备份的库表及数据生成对应的sql命令,把sql存储到指定的文件里。当数据丢失时 可以执行保存sql命令的文件 把数据重新写回数据库里)
        -    语法格式:mysqldump 源库名 > 路径 /xxx.sql

        -    mysqldump -u用户名 -p密码 --all-databases 或 -A //备份一台服务器上的                 
              所有库

        -    恢复操作:mysql 目标库名 < 路径 /xxx.sq

        -    完全备份数据

        -    [root@host51 ~]#mkdir  -p /mydatabak

        -    [root@host51 ~]#mysqldump -u用户名 -p密码  源库名 > /mydatabak

              /源库名.sql

        -    [root@host51 ~]#  mysqldump -u用户名 -p密码  源库名 源表名 >

              /mydatabak/源库名-源表名.sql

        -    完全恢复数据:

       -    [root@host51 ~]#mysql -u用户名 -p密码  源库名 < /mydatabak/源库                  
                名.sql

        -     使用source 命令恢复数据库(需要先建立数据库)

        -     mysql> create database  bbsdb;

        -     mysql> use bbsdb;

        -     mysql> source  /mydatabak/studb.sql

  • 例:要求每周一晚上18:00备份studb库的所有数据到本机的/dbbak目录下,备份文件名称要求如下  日期_库名.sql
        -    [root@host51 ~]#vim /root/bakstudb.sh

        -    #!/bin/bash
              day=`date +%F`
              if [ ! -e /dbbak  ];then
              mkdir /dbbak
              fi
              mysqldump  -uroot  -p654321  studb  >  /dbbak/${day}_studb.sql

        -   [root@host51 ~]#crontab  -e

        -    00  18   *  *  1        /root/bakstudb.sh  &> /dev/null

        -    [root@host51 ~]#systemctl   restart  crond

        -    

猜你喜欢

转载自blog.csdn.net/woaini1314520_xhh/article/details/80501410