mysql自带备份还原工具

ゝ一纸荒年。 2022-07-14 08:57 265阅读 0赞

mysql自带的mysqldump备份工具,将制定的数据库或表导出都一样的sql文件,以便备份或数据还原,但如果数据量很大,会耗费会很长时间,且锁表。 对于大规模备份,考虑使用物理方法,如:mysqlbackup(适于InnoDB、MyISAM及其他表)、mysqlhotcopy(适于MyISAM表)、Xtrabackup(适于InnoDB及MyISAM表)、LVM(适于各类表)等。

一、数据备份

mysqldump常用备份实例

1.导出所有数据库

mysqldump -uroot -pabc123 —all-databases > all.sql

  1. 出整个数据库

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -uroot -pabc123 test> test.sql

导出整个数据库的表结构 增加-d参数

mysqldump -uroot -pabc123 -d test> test.sql

  1. 导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -uroot -pabc123 test user> user.sql

导出一个表的表结构。增加-d参数

mysqldump -uroot -pabc123 -d test user> user.sql

  1. 导出部分数据, 加上—where参数

mysqldump -uroot -pabc123 test score —where=”score>=60” > score.sql

5.导出 一个表的部分字段

mysqldump -uroot -pabc123 -e “set names ‘utf8’;select realname,card_number,company_name from Database.name_v where type=2 and status=1” >name_v.sql -p

注:常用参数说明:

--add-drop-database 在CREATE DATABASE前DROP DATABASE

--add-drop-table 在每个create语句之前增加一个drop table

--add-drop-trigger 在CREATE TRIGGER 前DROP TRIGGER

--default-character-set=charset 指定导出数据时采用何种字符集

--disable-keys 在 INSERT 语句的开头和结尾增加 /*!40000 ALTER TABLE table DISABLE KEYS */; 和 /*!40000 ALTER TABLE table ENABLE KEYS */; 语句,这能大大提高插入语句的速度,因为它是在插入完所有数据后才重建索引的。该选项只适合 MyISAM 表。

--lock-all-tables / -x 提交请求锁定所有数据库中的所有表,以保证数据的一致性。这是一个全局读锁,并且自动关闭 --single-transaction 和 —lock-tables 选项。

--lock-tables 它和 —lock-all-tables 类似,不过是锁定当前导出的数据表,而不是一下子锁定全部库下的表。本选项只适用于 MyISAM 表,如果是 Innodb 表可以用 —single-transaction 选项。

--no-create-info / -t 只导出数据,而不添加 CREATE TABLE 语句

--no-data /-d 不导出任何数据,只导出数据库表结构。

--routines /-R 导出存储过程以及自定义函数。

--single-transaction 在导出数据之前提交一个 BEGIN SQL语句,BEGIN 不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于事务表,例如 InnoDB 和 BDB。 本选项和 —lock-tables 选项是互斥的,因为 LOCK TABLES 会使任何挂起的事务隐含提交。 要想导出大表的话,应结合使用 —quick 选项。

--triggers 同时导出触发器, 用 —skip-triggers 禁用它

--events 备份的数据库备份事件

备份 MyISAM 表:

mysqldump -uroot -pabc123 --default-character-set=utf8 —opt —extended-insert=false --triggers -R —hex-blob -x db_name > db_name.sql

备份 Innodb 表:

mysqldump -uroot -pabc123 --default-character-set=utf8 —opt —extended-insert=false --triggers -R —hex-blob —single-transaction db_name > db_name.sql

实现在线备份, 可以使用 —master-data 参数来实现

mysqldump -uroot -pabc123 --default-character-set=utf8 —opt —master-data=1 --single-transaction —flush-logs db_name > db_name.sql

在一开始的瞬间请求锁表,然后就刷新binlog了,而后在导出的文件中加入CHANGE MASTER 语句来指定当前备份的binlog位置,如果要把这个文件恢复到slave里去,就可以采用这种方法来做。

二、数据还原

用 mysqldump 备份出来的文件是一个可以直接倒入的 SQL 脚本,有两种方法可以将数据导入。

  1. mysql -uroot -pabc123 testdb < db.sql

这种方法很容易产生乱码,因为:

a,导出数据库时,你如果忘了设置导出字符集的话,在导入的时候,就有可能会出问题.

b,假如,你导出时设置导出时设置了utf8的编码,但是你又把你的数据库现在的字符集改成了gb2312的.这样又会乱码。

  1. 用 source 语句

mysql -uroot -pabc123

use testdb ;

set names utf8; #这里的字符集根你的将要导入的数据库的字符集一至。

source db.sql;

参考文章:

  1. mysqldump备份还原和mysqldump导入导出语句大全详解

  2. mysqldump命令详解

  3. MySQL数据备份之mysqldump使用

  4. mysql 利用binlog增量备份,还原实例

发表评论

表情:
评论列表 (有 0 条评论,265人围观)

还没有评论,来说两句吧...

相关阅读

    相关 mysql 增量备份还原

    小量的数据库可以每天进行完整备份,因为这也用不了多少时间,但当数据库很大时,就不太可能每天进行一次完整备份了,这时候就可以使用增量备份。增量备份的原理就是使用了mysql的bi

    相关 mysql备份还原工具

    mysql自带的mysqldump备份工具,将制定的数据库或表导出都一样的sql文件,以便备份或数据还原,但如果数据量很大,会耗费会很长时间,且锁表。 对于大规模备份,考虑使用

    相关 mysql备份还原

    一、备份常用操作基本命令 1、备份命令mysqldump格式    格式:mysqldump -h主机名  -P端口 -u用户名 -p密码 –database 数

    相关 MySQL备份还原

    MySQL备份与还原 逻辑备份 > 逻辑备份为通过对数据库的操作导出数据文件,常用的逻辑备份有两种,一种是将数据转换为全量的INSERT语句,另一种是将数据以特定的

    相关 Mysql备份还原总结

    Mysql的备份与还原,是很重要、很常见的操作,这里总结一下。linux系统中Mysql备份还原,主要有三种方式:目录复制、转储sql语句方式、shell脚本、压缩方式、bin