美文网首页
mysqldump备份数据

mysqldump备份数据

作者: ahcj_11 | 来源:发表于2017-08-27 23:29 被阅读13次

    标签(空格分隔): mysql


    1 导出数据库

    1.1 导出所有数据库

    mysqldump -uroot -p  --all-databases > all.sql;
    
    

    1.2 导出单个数据库

    mysqldump -uroot -p  db1 > db1.sql;
    
    

    1.3 导出多个数据库

    mysqldump -uroot -p  --databases db1 db2 > db1-db2.sql
    
    

    1.4 只备份表结构

    mysqldump -uroot -p  --no-data  db1 > db1.structure.sql;
    
    

    2 导出表

    导出指定表只能针对一个数据库进行导出,且导出的内容中和导出数据库也不一样,导出指定表的导出文本中没有创建数据库的判断语句,只有删除表-创建表-导入数据

    2.1 导出单个表

    mysqldump -uroot -p  db1  tb1 > db1.tb1.sql;
    
    

    2.2 导出多个个表

    mysqldump -uroot -p  --databases db1 --tables tb1 tb2   > db1.tb1-tb2.sql;
    
    

    2.3 只备份表结构

    mysqldump -uroot -p  --no-data  db1  tb1 > db1.tb1.structure.sql;
    
    

    3 恢复数据

    shell> mysql db_name <  db1.sql
    

    或者

    shell> mysql -e "source /path-to-backup/db1.sql"  db_name
    

    4 跨主机备份

    mysqldump --host=host1 -uroot -ppwd1   sourceDb | mysql --host=host2 -uroot -ppwd2 -C targetDb
    
    

    -C指示主机间的数据传输使用数据压缩

    5 定时备份

    新建 shell 脚本

    #vi /backup/backup.sh
    
    #!bin/bash
    cd /backup
    
    mv backup* /oldbackup
    echo "Old dbs are moved to oldbackup folder"
    now=$(date +%Y-%m-%d-%H-%m)
    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
    

    6 条件备份

    mysqldump -uroot -p  --databases db1 --tables tb1 --where='id=1'  >/tmp/db1.tb1.sql
    

    7 导出存储过程和自定义函数

    mysqldump  -uroot -p --host=localhost --all-databases --routines
    

    参考
    mysqldump — A Database Backup Program

    相关文章

      网友评论

          本文标题: mysqldump备份数据

          本文链接:https://www.haomeiwen.com/subject/xrtwdxtx.html