zoukankan      html  css  js  c++  java
  • 使用mysqldump命令进行mysql数据库备份

    1、用法

    mysqldump -uroot -p --databases test > /home/test.sql
    mysqldump -uroot -h127.0.0.1 -p --databases test --single-transaction --set-gtid-purged=off --max_allowed_packet=512M > /home/test.sql

    2、参数说明

    -uroot:数据库用户名为root

    -h172.16.43.131:指定mysql数据库IP地址

    -p:密码

    --databases test:设置导出的数据库为test,可以同时导出多个库,库名用空格隔开,如--databases test1 test2,也可以导出所有库,使用--all-databases参数

    --single-transaction:设置事务隔离级别为可重复读,保证dump期间,其他线程对提交的数据不会影响本次数据,改期间也不会锁表

    --lock-all-tables:锁所有表,相对--single-transaction,dump期间,其他线程都不能提交数据(默认策略)

    --no-data:不备份数据,只备份数据库结构

    --set-gtid-purged=off:关闭全局事务 ID (GTID)

    --max_allowed_packet=512M:设置max_allowed_packet大小,值最好等于my.conf配置的大小,否则会出现Got packet bigger than 'max_allowed_packet' bytes when dumping table `xxx` at row: 3540错误

    更多参数说明可查看官网:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html,或者使用命令 mysqldump --help

    3、压缩备份

    mysqldump -uroot -p --databases test | gzip > /home/test.sql.zip

    注意:导出的备份文件中已 /*! 开头,以 */; 结尾的语句不是注释信息,mysql进行了扩展,该部分的语句是可以被执行的。

    4、还原数据库

    mysql -uroot -p              // 登陆数据库
    source /home/test.sql;       // 执行数据库脚本 

    小技巧:使用上面的办法还原库时库名和原始库名是一样,如想换一个名字,必须修改备份文件中的库名,如下图中的test

    但备份文件很大时,我们很难找到一个编辑器打开这个文件并进行修改,此时我们可以用到linux系统的sed命令,将字符进行替换

    sed -i '1,/DROP TABLE/s/`test`/`test_db`/g' test.sql

    出现的错误:

    1、mysqldump: Error 3024: Query execution was interrupted, maximum statement execution time exceeded when dumping table `base_uploadfileblob` at row: 5549

    max_execution_time设置过小。默认为0,表示不限制时间,可修改/etc/my.conf文件进行配置,单位为毫秒,如:max_execution_time=100000

  • 相关阅读:
    Cocos2D学习笔记(1)- 常用的类
    C++头文件的重复定义错误处理
    python3中的sort和sorted函数
    numpy提供的快速的元素级数组函数
    HDU 1180 诡异的楼梯(BFS)
    POJ 1020 Anniversary Cake(DFS)
    POJ 1564 Sum It Up(DFS)
    POJ 1190 生日蛋糕(DFS)
    HDU 1026 Ignatius and the Princess I(BFS+优先队列)
    HDU 1172 猜数字(DFS)
  • 原文地址:https://www.cnblogs.com/zhi-leaf/p/11691522.html
Copyright © 2011-2022 走看看