mysql数据备份

一、逻辑备份

1、使用mysqldump命令备份

 mysqldump是mysql数据库非常有用的备份命令,可以将数据库备份成一个文本文件。里边是create和insert语句,使用这些语句可以重新创建表和数据。语法格式如下:

mysqldump -u user -h host -p passwd dbname [tabname,tabname..] > filename.sql

(1)、使用mysqldump备份单个数据库的所有表

mysqldump -u root -p test > /home/backup/test.sql

(2)、使用mysqldump备份某个库中的单个表

mysqldump -u root -p test t_count > /home/backup/t_count.sql

(3)、使用mysql备份多个数据库

mysql -u root -p --database test test1 > /home/backup/test_test1.sql    # 备份多个库
mysql -u root -p --all-database >
/home/backup/all.sql # 备份所有数据库

 2、mysqldump命令的常用参数解释

-A 备份所有数据库,不备份information_schema  performance_schema和sysz这是mysql自己进行维护的        mysqldump -u root -p111111 -A > all.sql
--add-drop-database 在创建库之前先执行删库操作
--add-drop-table 在建表之前先执行删表操作 如果默认开启了该参数,可以用--skip-add-drop-table来使它不生效
--add-drop-trigger 在建立触发器之前先执行删除操作
--add-locks 在执行insert语句之前添加锁
--compact 用来减少冗长的输出,实用于调试
-B --databases 用于备份多个数据库,在导出的SQL中会添加 use dbname;
--default-character-set 设置默认字符集
-F --fulsh-logs 备份前刷新服务器的日志文件,备份多个库为每个备份的库都刷新
-x, --lock-all-tables  锁定所有库的所有表
-l --lock-tables    锁定所有表,只允许读操作
--master-data 将二进制日志信息写到备份文件中,值为1写入,值为2写入之后处于被注释掉的状态
-t 只备份数据
-d 只备份表结构
--single-transaction  在InnoDB引擎中使用,在一个事务里备份所有表

 3、分库备份,将MySQL里的所有库进行备份,一个库单独生成一个文件,可以通过shell脚本写for循环来实现。也可以用shell命令完成

二、物理备份

1、mysql的存储为文件方式,所有可以直接数据库的存储目录及数据文件进行备份。这是一种简单有效的备份方式,要保持备份的一致性。备份前需要对相关别哦执行LOCK TABLES操作,然后对表执行FLUSH TABLES操作。这样在复制文件时,允许其它客户继续查询表。flush语句确保备份前将所有激活的索引页写入硬盘。这种方法对于InnoDB引擎不适用,如果使用不能版本的数据库也可能不兼容。

三、数据恢复

1、mysql -u user -p passwd  dbname  <  dbname.sql  通过该命令对丢失的数据进行恢复

2、也可以登陆到mysql数据库的命令行界面,执行 source dbname.sql

3、如果是物理恢复,直接拷贝数据库的文件到data文件夹下即可

原文地址:https://www.cnblogs.com/jkin/p/10115096.html