zoukankan      html  css  js  c++  java
  • MySQL数据库入门——备份数据库

    mysqldump可以针对单个表、多个表、单个数据库、多个数据库、所有数据库进行导出的操作

    mysqldump常用选项
    -h, --host=name:服务器IP
    -u, --user=name:登录名
    -p, --password[=name]:登录密码
    -A, --all-databases:导出所有数据库
    -B, --databases:导出指定的数据库,多个数据库名使用空格分割
    --tables:导出指定表
    -d, --no-data:仅导出表结构,不导出数据
    -t, --no-create-info:不导出表创建语句
    -n, --no-create-db:不导出CREATE DATABASE IF EXISTS语句
    -e, --extended-insert:将多条记录合并成一条INSERT语句来提高插入效率
    --add-drop-table:在创建表之前加入DROP TABLE语句
    --hex-blob :将二进制的数据以16进制导出
    -R, --routines:导出存储过程和存储函数
    --triggers:导出触发器

    单库备份

    mysqldump -uroot -p test >/download/testbak_$(date +%F).sql
    
    Enter password: 
    
    ll /download/

    -B  恢复时会自动创建库

    -B参数的作用,就是当我们的数据库丢失时,可以直接用此备份文件进行恢复,无需再重新建库、建表,然后再进行数据恢复的操作

    mysqldump -uroot -p -B test >/download/testbak_$(date +%F)_b.sql

    压缩备份

    mysqldump -uroot -p -B test|gzip >/download/testbak_$(date +%F).sql.gz

    单表备份

    mysqldump -uroot -p -B test test >/download/test_testbak_$(date +%F).sql      

    只备份表结构

    mysqldump --no-data --databases mydatabase1 mydatabase2 mydatabase3 > test.dump
    1.备份全部数据库的数据和结构
    
    mysqldump -uroot -p123456 -A >F:all.sql
    
    2.备份全部数据库的结构(加 -d 参数)
    
    mysqldump -uroot -p123456 -A-d>F:all_struct.sql
    
    3.备份全部数据库的数据(加 -t 参数)
    
    mysqldump -uroot -p123456 -A-t>F:all_data.sql
    
    4.备份单个数据库的数据和结构(,数据库名mydb)
    
    mysqldump -uroot-p123456 mydb>F:mydb.sql
    
    5.备份单个数据库的结构
    
    mysqldump -uroot -p123456 mydb-d>F:mydb.sql
    
    6.备份单个数据库的数据
    
    mysqldump -uroot -p123456 mydb-t>F:mydb.sql
    
    7.备份多个表的数据和结构(数据,结构的单独备份方法与上同)
    
    mysqldump -uroot -p123456 mydb t1 t2>f:multables.sql
    
    8.一次备份多个数据库
    
    mysqldump -uroot -p123456 --databases db1 db2>f:muldbs.sql

    不退出数据库,完成备份test数据库

    system mysqldump -uroot -ppassword -B test>/root/test_bak.sql

    简单的备份脚本

    bak.sh 

    #!/bin/sh
    
    
    ip=`grep 'IPADDR' /etc/sysconfig/network-scripts/ifcfg-eth0|awk -F "=" '{print $2}'`
    
    #定义服务器IP变量
    
    BAKDIR=/backup  
    
    #定义备份路径
    
    [ ! -d $BAKDIR/${ip} ] && mkdir -p $BAKDIR/${ip}
    
    #判断如果不存在这个路径就创建一个,为了服务器多的时候方便看
    
    DB_PWD="123456"
    
    DB_USER="root"
    
    MYSQL="/application/mysql/bin/mysql"
    
    MYSQL_DUMP="/application/mysql/bin/mysqldump"
    
    DATA=`date +%F`
    
    ####bak data of test's databses####
    
    DB_NAME=`$MYSQL -u$DB_USER -p$DB_PWD -e "show databases;"|sed '1,5d'`
    
    #定义数据库变量
    
    for name in $DB_NAME
    
    #for循环语句取库名
    
    do
    
      $MYSQL_DUMP -u$DB_USER -p$DB_PWD -B ${name} |gzip >$BAKDIR/${ip}/${name}_$DATA.sql.gz  
    
    #全库备份
    
      [ ! -d $BAKDIR/${ip}/${name} ] && mkdir -p  $BAKDIR/${ip}/${name}
    
    #判断这个路径,为了区别哪个库的备份文件
    
      for tablename in `$MYSQL -u$DB_USER -p$DB_PWD -e "show tables from ${name};"|sed '1d'`
    
    #for循环语句取表名
    
      do
    
       $MYSQL_DUMP -u$DB_USER -p$DB_PWD ${name} ${tablename} |gzip >$BAKDIR/${ip}/${name}/${tablename}_$DATA.sql.gz
    
    #分表备份
    
      done
    
    done

    backup.sh

    #vi /backup/backup.sh
    
    #!bin/bash
    cd /backup
    echo "You are in backup dir"mv backup* /oldbackup
    echo "Old dbs are moved to oldbackup folder"
    File = backup-$Now.sql
    mysqldump -u user -p password database-name > $File
    echo "Your database backup successfully completed"
     
    上面脚本文件保存为backup.sh,并且系统中已经创建两个目录/olcbackup和/backup。每次执行backup.sh时都会先将/backup目录下所有名称为backup开头的文件移到/oldbackup目录。
          为上述脚本制定执行计划如下:
    #crontab -e
    30 1 * * * /backup.sh
    结合Linux的cron命令实现定时备份
    比如需要在每天凌晨1:30备份某个主机上的所有数据库并压缩dump文件为gz格式,那么可在/etc/crontab配置文件中加入下面代码行:
    30 1 * * * root mysqldump -u root -pPASSWORD --all-databases | gzip > /mnt/disk2/database_`date '+%m-%d-%Y'`.sql.gz

    还原

    还原部分分(1)mysql命令行source方法 和 (2)系统命令行方法
    
    1.还原全部数据库:
    
    (1) mysql命令行:mysql>source f:all.sql
    
    (2) 系统命令行: mysql -uroot -p123456 <f:all.sql
    
    2.还原单个数据库(需指定数据库)
    
    (1) mysql>use mydb
    
        mysql>source f:mydb.sql
    
    (2) mysql -uroot -p123456 mydb <f:mydb.sql
    
    3.还原单个数据库的多个表(需指定数据库)
    
    (1) mysql>use mydb
    
        mysql>source f:multables.sql
    
    (2) mysql -uroot -p123456 mydb<f:multables.sql
    
    4.还原多个数据库,(一个备份文件里有多个数据库的备份,此时不需要指定数据库)
    
    (1) mysql命令行:mysql>source f:muldbs.sql
    
    (2) 系统命令行: mysql -uroot -p123456<f:muldbs.sql
  • 相关阅读:
    unity打包iOS上线归纳
    unity update优化
    3dmax 法线重置
    unity2017分离动作
    unity5 manifest
    Unity5 AssetBundle资源管理架构设计
    ue4 tags 与 cast
    3dmax tcb控制器
    ue4 创建简易动画
    即时战略游戏中实用的寻路算法都有哪些,比较如何?
  • 原文地址:https://www.cnblogs.com/alter888/p/11130403.html
Copyright © 2011-2022 走看看