MySQL数据库的备份与恢复

一、备份数据库

  • 1.1.mysqldump进行逻辑备份单个库

    mysql数据库自带了mysqldump备份命令,其语法为:
    mysqldump -u 用户名 -p 数据库名 >备份的文件名
    例如:备份名为data_default的库

    mysql -uroot -p123456 -e "use data_default;show tables;select * from student"#在linux命令行查看mysql库中的表内容
    mysqldump -uroot -p123456 data_default >/opt/mysql_bak.sql #备份到/opt/mysql_bak.sql
    mysqldump -uroot -p123456 --default-character=utf-8 data_default >/opt/mysql_bak.sql #指定字符集导出以免乱码。或者--default-character-set=utf8
    egrep -v "^$|--|#|\*" /opt/mysql_bak.sql  #查看备份
    
     DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` char(15) NOT NULL,
     `age` tinyint(2) NOT NULL DEFAULT '0',
    `dept` varchar(16) DEFAULT NULL,
    `sex` char(2) DEFAULT NULL,
    PRIMARY KEY (`id`),
    KEY `index_dept` (`dept`(8))
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT    CHARSET=utf8;#建表的语句
    LOCK TABLES `student` WRITE;#上锁
    INSERT INTO `student` VALUES (1,'lily',0,NULL,NULL); #插入语句
    UNLOCK TABLES;
    #mysql带-e参数实现非交互式对话
    例如:
     [root@localhost ~]# mysql -uroot -p123456 -e "select * from data_default.student"
    

    实际上用mysqldump备份,是把SQL语句备份下来(不记录查找的语句),然后删除原来的表重新操作。
    备份时加入-B,可以自动建库。

     mysqldump -uroot -p123456 -B data_default >/opt/mysql_bak_b.sql #备份到/opt/mysql_bak_b.sql。
    

    下面比较一下两个备份区别:

     diff /opt/mysql_bak.sql /opt/mysql_bak_b.sql 
    18a19,26
    -- Current Database: `data_default`
    --
    
    CREATE DATABASE /*!32312 IF NOT EXISTS*/ `data_default`   /*!40100 DEFAULT CHARACTER SET utf8 */;
    USE `data_default`; 
    --
     55c63
     -- Dump completed on 2019-06-27  5:22:30
     ---
    -- Dump completed on 2019-06-27  5:48:49
    

    发现多了一个create语句和use语句,加上-B参数的作用是增加创建数据库和链接数据库命令。恢复命令与不加B的不同:

    mysql -uroot -p123456 </opt/mysql_bak_b.sql
    

    指定压缩命令来备份数据库:

    mysqldump -uroot -p123456 --default-character=utf-8 -B data_default|gzip>/opt/mysql_bak_b.sql.gz #gzip压缩命令来压缩

  • 1.2 备份多个库
    备份命令:

    mysqldump -uroot -p123456 --default-character=utf-8 -B data_default test|gzip>/opt/mysql_bak_b.mul.sql.gz  #备份data_default和 test两个库
    

    备份所有库:

    mysql -uroot -p123456 -e "show databases;" |egrep -vi "database|information_schema| performance_schema|test"|sed 's#^([a-z].*$)#mysqldump -uroot -
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值