mysql备份和还原数据库,mysql备份表 sql语句
逻辑备份是关系型数据库用于转存储数据库的实用程序。它主要产生一个结构化查询语言脚本,其中包含从头重新创建数据库所必需的命令创建表格插入等,在不同的关系型数据库版本之间升级时相对比较合适,这也是最常用的备份方法。
常用用法:
备份全库:
MySQL dump-u root-p 123456-default-character-set=utf8-opt-extended-insert=false-triggers-R-hex-blob-single-transaction-all-database mysqlfullbak。结构化查询语言
备份单个数据库:
MySQL dump-u root-p 123456-default-character-set=utf8-opt-extended-insert=false-triggers-R-hex-blob-single-transaction db _ name db _ name。结构化查询语言
备份单个表:
MySQL dump-u root-p 123456-default-character-set=utf8-opt-extended-insert=false-triggers-R-hex-blob-single-transaction db _ name table _ name tablename。结构化查询语言
如果想要实现在线备份,还可以使用-主数据参数来实现,如下:
MySQL dump-u root-p 123456-default-character-set=utf8-opt-master-data=1-single-transaction-flush-logs db _ name db _ name。结构化查询语言
还原:
用关系型数据库客户端:
MySQL-u root-p 123456 db _ name db _ name。结构化查询语言
用来源语法:
源/tmp/数据库名称。SQL
参数说明:
-所有数据库,-一个导出全部数据库。
mysqldump-u root-p-all-数据库
-所有表空间,-Y导出全部表空间。
mysqldump-u root-p-all-databases-all-tablespaces
-否-表空间,-y不导出任何表空间信息。
mysqldump-u root-p-all-databases-no-tablespaces
-添加-删除-数据库每个数据库创建之前添加滴数据库语句。
mysqldump-u root-p-all-databases-add-drop-database
-添加-删除-表格每个数据表创建之前添加滴数据表语句。(默认为打开状态,使用-跳过-添加-删除表取消选项)
MySQL dump-u root-p-all-databases(默认添加滴语句)
mysqldump-u root-p-all-databasesskip-add-drop-table(取消滴语句)
-附加锁在每个表导出之前增加锁定表格并且之后解锁表格。(默认为打开状态,使用-跳过添加锁取消选项)
MySQL dump-u root-p-all-databases(默认添加锁语句)
mysqldump-u root-p-all-databasesskip-add-locks(取消锁语句)
-允许-关键字允许创建是关键词的列名字。这由表名前缀于每个列名做到。
MySQL dump-u root-p-all-databases-allow-keywords
-应用从属语句在更改母版前添加停止从属,并且在导出的最后添加启动从机。
MySQL dump-u root-p-all-databases-apply-slave-statements
-字符集-目录字符集文件的目录
mysqldump-u root-p-all-databases-character-sets-dir=/usr/local/MySQL/share/MySQL/charsets
-评论附加注释信息。默认为打开,可以用-跳过-注释取消
MySQL dump-u root-p-all-databases(默认记录注释)
mysqldump-u root-p-all-databases-skip-comments(取消注释)
兼容导出的数据将和其它数据库或旧版本的关系型数据库相兼容。值可以为ansi、mysql323、mysql40、PostgreSQL、mssql、db2、maxdb、no_key_options、no_tables_options、no_field_options等,要使用几个值,用逗号将它们隔开。它并不保证能完全兼容,而是尽量兼容。
mysqldump-u root-p-all-databases-compatible=ansi
-紧凑型导出更少的输出信息(用于调试)。去掉注释和头尾等结构。可以使用选项:-skip-add-drop-table-skip-add-locks-skip-comments-skip-disable-keys
MySQL dump-u root-p-all-databases-compact
-完整-插入,-c使用完整的插入语句(包含列名称)。这么做能提高插入效率,但是可能会受到最大允许数据包参数的影响而导致插入失败。
mysqldump -uroot -p -所有-数据库-完整-插入
-压缩,-C在客户端和服务器之间启用压缩传递所有信息
MySQL dump-u root-p-all-databases-compress
-create-options,-a在CREATE TABLE语句中包含所有MySQL特性选项。(默认为开)
mysqldump-u root-p-all-数据库
-数据库,-b导出几个数据库。参数之后的所有名称参数都被视为数据库名称。
数据库测试
- debug为调试输出调试信息。默认值为:d: t: o,/tmp/mysqldump.trace。
mysqldump-u root-p-all-databases-debug
mysqldump-u root-p-all-databases-debug=" d:t:o,/tmp/debug.trace "
- debug-check检查内存和打开文件的指令并退出。
mysqldump-u root-p-all-databases-debug-check
- debug-info输出调试信息并退出。
mysqldump-u root-p-all-databases-debug-info
- default-character-set设置-default-character-set,默认值为utf8。
mysqldump-u root-p-all-databases-default-character-set=latin1
-延迟插入数据通过延迟插入的方式导出。
mysqldump-u root-p-all-databases-delayed-insert
- delete-master-logs master在备份后删除日志。该参数将自动激活主数据。
mysqldump-u root-p-all-databases-delete-master-logs
- disable-keys对于每个表,使用/*!40000 ALTER TABLE tbl_name禁用键*/;和/*!40000 ALTER TABLE tbl_name使能键*/;语句引用INSERT语句。这样,转储文件可以更快地导入,因为它会在插入所有行后创建索引。此选项仅适用于MyISAM表,默认情况下是打开的。
mysqldump-u root-p-all-数据库
- dump-slave该选项会将主binlog位置和文件名附加到导出的数据文件中。当它被设置为1时,它将通过更改主命令输出到数据文件;当设置为2时,指令信息被添加到命令之前。除非指定了- single-transaction,否则此选项将打开-锁定所有表。该选项将自动关闭- lock-tables选项。默认值为0。
mysqldump-u root-p-all-databases-dump-slave=1
mysqldump-u root-p-all-databases-dump-slave=2
-事件,-e导出事件。
mysqldump -uroot -p -所有-数据库-事件
-extended-INSERT,-e对多值列使用INSERT语法。这将使导出的文件更小,并加快导入速度。默认情况下它是打开的,并且使用-skip - skip-extended-insert取消选项。
mysqldump-u root-p-all-数据库
my dump-u root-p-all-databases-skip-extended-insert(取消选项)
- fields-terminated-by-by忽略导出文件中的给定字段。与- tab选项一起使用,但不与-databases和- all-databases选项一起使用。
mysqldump-u root-p test test-tab="/home/MySQL "-fields-terminated-by=" # "
- fields-enclosed-by-by输出文件中的每个字段都用给定的字符包装。与- tab选项一起使用,但不与-databases和- all-databases选项一起使用。
mysqldump-u root-p test test-tab="/home/MySQL "-fields-enclosed-by=" # "
输出文件中的每个字段都有选择地用给定字符换行。与- tab选项一起使用,但不与-databases和- all-databases选项一起使用。
mysqldump-u root-p test test-tab="/home/MySQL "-fields-enclosed-by=" # "-fields-optionally-enclosed-by=" # "
-fields-escape-by-by输出文件中的每个字段都忽略给定的字符。与- tab选项一起使用,但不与-databases和- all-databases选项一起使用。
mysqldump-u root-p MySQL user-tab="/home/MySQL "-fields-escaped-by=" # "
- flush-logs在开始导出之前刷新日志。请注意:如果您一次导出多个数据库(使用选项-databases或- all-databases),日志将被逐个刷新。除了使用-lock-all-tables或- master-data。在这种情况下,日志将被刷新一次,同时相应的表将被锁定。因此,如果您打算同时导出和刷新日志,应该使用-lock-all-tables或- master-data和- flush-logs。
mysqldump-u root-p-all-databases-flush-logs
-flush-privileges导出mysql数据库后,发出FLUSH PRIVILEGES语句。为了正确恢复,每当您导出mysql数据库并依赖mysql数据库数据时,都应该使用此选项。
mysqldump-u root-p-all-databases-flush-privileges
- force忽略导出过程中的SQL错误。
mysqldump-u root-p-all-databases-force
- help显示帮助信息并退出。
mysqldump -帮助
- hex-blob使用十六进制格式导出二进制字符串字段。如果有二进制数据,则必须使用此选项。受影响的字段类型是BINARY、VARBINARY和BLOB。
mysqldump-u root-p-all-databases-hex-blob
-host,-h要导出的主机信息
mysqldump-u root-p-host=localhost-all-databases
- ignore-table不导出指定的表。当指定多个表时,需要重复几次,一次一个表。每个表必须指定数据库和表名。示例:-ignore-table=database . table 1-ignore-table=database . table 2…
mysqldump-u root-p-host=localhost-all-databases-ignore-table=MySQL . user
-include-master-host-port将“MASTER_HOST=host,MASTER_PORT=port”添加到“将主机更改为.”由- dump-slave生成的语句。
mysqldump-u root-p-host=localhost-all-databases-include-master-host-port
-insert-ignore在插入行时使用INSERT IGNORE语句。
mysqldump-u root-p-host=localhost-all-databases-insert-ignore
- lines-terminated-by-by输出文件的每一行都被一个给定的字符串分割。与- tab选项一起使用,但不与-databases和- all-databases选项一起使用。
MySQL dump-u root-p-host=localhost test-tab="/tmp/MySQL "-lines-terminated-by=" # # "
-lock-all-tables,-x提交锁定所有数据库中所有表的请求,以确保数据一致性。这是一个全局读锁,单事务和锁表项自动关闭。
mysqldump-u root-p-host=localhost-all-databases-lock-all-tables
-lock-tables,-l在开始导出之前锁定所有表。使用READ LOCAL锁定表,以允许并行插入MyISAM表。对于支持事务的表,比如InnoDB和BDB,单事务是更好的选择,因为它根本不需要锁表。请注意,当导出多个数据库时,--lock-tables为每个数据库锁定表。因此,此选项不能保证数据库之间导出文件中的表的逻辑一致性。不同数据库表的导出状态可能完全不同。
mysqldump-u root-p-host=localhost-all-databases-lock-tables
- log-error将警告和错误信息附加到给定文件。
mysqldump-u root-p-host=localhost-all-databases-log-error=/tmp/mysqldump _ error _ log . err
- master-data该选项将binlog的位置和文件名附加到输出文件中。如果为1,则输出更改主机命令;如果为2,则在输出更改主命令之前添加注释信息。该选项将打开-lock-all-tables选项,除非还指定了- single-transaction(在这种情况下,在导出开始时短时间内获得全局读锁;其他内容请参考下面的-单笔选项)。该选项自动关闭- lock-tables选项。
mysqldump-u root-p-host=localhost-all-databases-master-data=1;
mysqldump-u root-p-host=localhost-all-databases-master-data=2;
-Max _ allowed _ packet服务器发送和接受的最大数据包长度。
mysqldump-u root-p-host=localhost-all-databases-max _ allowed _ packet=10240
-net _ buffer _ length TCP/IP和套接字连接的缓存大小。
mysqldump-u root-p-host=localhost-all-databases-net _ buffer _ length=1024
-no-自动提交用自动提交/提交语句包装表格。
mysqldump-u root-p-host=localhost-all-databases-no-auto commit
-no-create-db,-n仅导出数据,不添加CREATE DATABASE语句。
mysqldump-u root-p-host=localhost-all-databases-no-create-db
-no-create-info,-t只导出数据,不添加CREATE TABLE语句。
mysqldump-u root-p-host=localhost-all-databases-no-create-info
-无数据-d不导出任何数据,只导出数据库表结构。
mysqldump-u root-p-host=localhost-all-databases-no-data
-无集合名称同-EN等同于-跳过字符集-字符集
mysqldump-u root-p-host=localhost-all-databases-no-set-names
- opt等同于- add-drop-table,- add-locks,- create-options,- quick,- extended-insert,- lock-tables,- set-charset,- disable-keys该选项默认开启,可以用-跳过选项禁用。
mysqldump-u root-p-host=localhost-all-databases-opt
-按主要订单如果存在主键,或者第一个唯一键,对每个表的记录进行排序。在导出米沙姆表到InnoDB表时有效,但会使得导出工作花费很长时间。
MySQL dump-u root-p-host=localhost-all-databases-order-by-primary
-密码,-p连接数据库密码
-管道(窗户系统可用)使用命名管道连接关系型数据库
MySQL dump-u root-p-host=localhost-all-databases-pipe
-端口,-P连接数据库端口号
-协议使用的连接协议,包括:tcp,套接字、管道、内存。
mysqldump-u root-p-host=localhost-all-databases-protocol=TCP
-快-问不缓冲查询,直接导出到标准输出。默认为打开状态,使用-跳过-快取消该选项。
MySQL dump-u root-p-host=localhost-all-databases
MySQL dump-u root-p-host=localhost-all-databases-skip-quick
-引用-名字-问使用(`)引起表和列名。默认为打开状态,使用-跳过引用名称取消该选项。
MySQL dump-u root-p-host=localhost-all-databases
MySQL dump-u root-p-host=localhost-all-databases-skip-quote-names
-更换使用替换成取代插入。
mysqldump-u root-p-host=localhost-all-databases-replace
-结果文件,-r直接输出到指定文件中。该选项应该用在使用回车换行对(rn)换行的系统上(例如:DOS、Windows)。该选项确保只有一行被使用。
mysqldump-u root-p-host=localhost-all-databases-result-file=/tmp/mysqldump _ result _ file。文本文件(textfile)
-例程,-R导出存储过程以及自定义函数。
mysqldump-u root-p-host=localhost-all-databases-routines
- set-charset添加设置名称默认字符集到输出文件。默认为打开状态,使用-跳过字符集-字符集关闭选项。
MySQL dump-u root-p-host=localhost-all-databases
MySQL dump-u root-p-host=localhost-all-databases-skip-set-charset
-单一交易该选项在导出数据之前提交一个开始结构化查询语言语句,开始不会阻塞任何应用程序且能保证导出时数据库的一致性状态。它只适用于多版本存储引擎,仅InnoDB。本选项和-锁表选项是互斥的,因为锁定表格会使任何挂起的事务隐含提交。要想导出大表的话,应结合使用-快选项。
MySQL dump-u root-p-host=localhost-all-databases-single-transaction
-转储日期将导出时间添加到输出文件中。默认为打开状态,使用-跳过转储日期关闭选项。
MySQL dump-u root-p-host=localhost-all-databases
mysqldump-u root-p-host=localhost-all-databases-skip-dump-date
-跳过选项禁用opt选项。
mysqldump-u root-p-host=localhost-all-databases-skip-opt
-插座,-S指定连接关系型数据库的窝文件位置,默认路径/tmp/mysql.sock
MySQL dump-u root-p-host=localhost-all-databases-socket=/tmp/mysqld。短袜
- tab,-T为每个表在给定路径创建标签分割的文本文件。注意:仅仅用于逻辑备份和服务器服务器运行在相同机器上。
MySQL dump-u root-p-host=localhost test-tab=/home/MySQL
-桌子覆盖-数据库(-B)参数,指定需要导出的表名。
MySQL dump-u root-p-host=localhost-databases test-tables test
-触发器导出触发器。该选项默认启用,用-跳过触发器禁用它。
mysqldump-u root-p-host=localhost-all-databases-triggers
-TZ-UTC在导出顶部设置时区TIME_ZONE= 00:00 ,以确保在不同时区导出的时间戳数据或移动到其他时区的数据的正确性。
mysqldump-u root-p-host=localhost-all-databases-tz-utc
-user,-u指定连接的用户名。
- verbose,- v输出各种平台信息。
-version,-v输出mysqldump版本信息并退出。
-WHERE,-w仅转储由给定WHERE条件选择的记录。请注意,如果条件包含用于命令解释器的特殊空格或字符,请务必引用该条件。
mysqldump-u root-p-host=localhost-all-databases-where=" user= root "
-XML,-x导出XML格式。
mysqldump-u root-p-host=localhost-all-databases-XML
-客户端插件的plugin_dir目录,用来兼容不同的插件版本。
mysqldump-u root-p-host=localhost-all-databases-plugin _ dir="/usr/local/lib/plugin "
- default_auth客户端插件默认权限。
mysqldump-u root-p-host=localhost-all-databases-default-auth="/usr/local/lib/PLUGIN/PLUGIN "
2.使用sql语法进行备份
备份:
将表table_name返回到“/tmp/db _ name/”;
SELECT * INTO OUTFILE /tmp/db _ name/TBL _ name . txt FROM TBL _ name;
注意:您必须有文件权限才能执行这个SQL,并且目录/tmp/db_name/必须对mysqld用户是可写的。
恢复:
使用备份表方法,可以运行RESTORE TABLE语句来还原数据表。
从“/tmp/db_name/”中还原表;
您可以运行LOAD DATA INFILE语句来还原由SELECT INTO OUTFILE方法备份的文件的数据表。
将文件“/tmp/db_name/tbl_name.txt”中的数据加载到表tbl _ name
在注入数据之前,数据表必须已经存在。如果担心数据重复,可以添加REPLACE关键字来替换现有记录,或者用IGNORE关键字忽略它们。
3.binlog备份:
binlog方法相对灵活、省力,并且可以支持增量备份。
启用binlog时,必须重新启动mysqld。首先,关闭mysqld,打开my.cnf,添加以下几行:
服务器id=1
log-bin=binlog
log-bin-index=binlog.index
然后启动mysqld。运行过程中会生成Binlog.000001和binlog.index。前一个文件是mysqld记录所有的数据更新操作,后一个文件是所有binlog的索引,不能轻易删除。
需要备份时,可以先执行SQL语句停止mysqld写入当前binlog,然后直接备份文件,这样就可以达到增量备份的目的:
刷新日志;
如果要备份复制系统中的从属服务器,还应该备份master.info和relay-log.info文件。
可以使用MySQL提供的工具mysqlbinlog查看备份的binlog文件,例如:
/usr/local/MySQL/bin/mysqlbinlog/tmp/bin log . 000001
这个工具可以让你显示指定数据库中的所有SQL语句,还可以限制时间范围,相当方便。
当您恢复时,可以使用如下语句:
/usr/local/MySQL/bin/mysqlbinlog/tmp/bin log . 000001 MySQL-uuseranme-PP assword db _ name
直接执行mysqlbinlog输出的SQL语句作为输入。
4.自动备份与恢复
Mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写和提供。它使用锁表、刷新表和cp或scp来快速备份数据库。这是备份数据库或单个表的最快方法,
但是它只能在与数据库目录相同的机器上运行。Mysqlhotcopy仅用于备份MyISAM。它运行在Unix和NetWare上。
Mysqlhotcopy支持一次复制多个数据库,也支持正则表达式。这里有几个例子:
/usr/local/MySQL/bin/mysqlhotcopy-h=localhost-u=username-p=password db_name/tmp(将数据库目录db _ name复制到/tmp)
/usr/local/MySQL/bin/mysqlhotcopy-h=localhost-u=username-p=password db _ name _ 1.db _ name _ n/tmp(复制多个数据库)
/usr/local/MySQL/bin/mysqlhotcopy-h=localhost-u=username-p=password db _ name。/regex//tmp
调用以下命令查看mysqlhotcopy的帮助:
perldoc/usr/local/MySQL/bin/mysqlhotcopy
注意:要使用mysqlhotcopy,您必须拥有选择和重新加载(执行刷新表)的权限,还必须拥有读取datadir/db_name目录的权限。
5.直接复制数据文件和相关配置文件。
首先锁定所有表格:
用读锁刷新表;
使用系统命令将数据文件和my.cnf文件复制到备份磁盘;
丙酸纤维素.
注意:对于Innodb类型表,还需要备份其日志文件,即ib_logfile*文件。
6.MYSQL备份工具MYSQL Backup
跨平台备份工具,官方工具,可支持各类存储引擎的热备份。
Mysqlbackup的工作原理
1)mysqlbackup物理复制innodb的表空间,但是记录LSN点。备份过程中,新添加的输入直接写入备份文件的ibbackup_logfile,同时记录最后一个LSN点。
2) myisam由2)mysqlbackup完全备份。即使是增量备份,也仍然是完全备份。
3)恢复时,检查比较ibbackup_logfile和表空间的区别,使ibbackup_logfile中的数据可以进入事务日志或表空间。
4)备份文件中的meta/backup_variables.txt文件记录了一些备份信息。
完整库备份命令:
MySQL backup-defaults-file=/etc/my . CNF-user=username-password=password-databases=db _ name-with-timestamp-backup-dir=/opt/MySQL/backup备份
完整库还原命令:
第一步:检查事务日志。
MySQL backup-defaults-file=/etc/my . CNF-backup-dir=/opt/MySQL/backup/2013-04-10 _ 14-01-34/apply-log
步骤2:复制物理文件
MySQL backup-defaults-file=/etc/my . CNF-backup-dir=/opt/MySQL/backup/2013-04-10 _ 14-01-34/-innodb _ log _ files _ in _ group=2 copy-back
增量备份;
第一个增量备份命令:
MySQL backup-defaults-file=/etc/my . CNF-user=username-password=password-with-时间戳
-databases=db _ name-incremental-incremental-backup-dir=/OCP/MySQL/backup in/
-incremental-base=dir:/OCP/MySQL/backup/2013-04-10 _ 11-10-28 backup
第二个增量备份命令:
MySQL backup-defaults-file=/etc/my . CNF-user=username-password=password-with-时间戳
-databases=db _ name-incremental-incremental-backup-dir=/OCP/MySQL/backup in/
-incremental-base=dir:/home/MySQL-server/backup/2013-04-10 _ 11-15-28 backup
增量恢复:
递增递减原则:
1)首先,检测匹配并释放完整的事务日志文件(当然,如果备份中使用了备份并应用日志,并且在备份时已经检测到匹配,则此步骤是不必要的)
2)第一次增量备份的文件被释放到完整备份文件中。(首先,它们将进入事务日志,然后是表空间),所以- backup-dir指向完整的备份目录(基于LSN点向后递增)
3)第二次增量备份的文件也被释放到完整备份文件中。(首先,它们会进入事务日志,然后是表空间),因为第一次增量备份后,整个数据库中已经有了第一个LSN点,所以第二次还原也指向了完整备份文件,这样第一次增量备份后就会增加LSN点。
4)由于增量页已经全部进入事务日志或表空间,此时可以直接备份物理文件。
完整备份检测匹配释放事务日志
MySQL backup-defaults-file=/etc/my . CNF-backup-dir=/opt/MySQL/backup/2013-04-10 _ 17-59-54/apply-log
检测并释放第一个增量备份
MySQL backup-backup-dir=/opt/MySQL/backup/2013-04-10 _ 17-59-54/-incremental-backup-dir=/OCP/MySQL/backup in/2013-04-10 _ 11-47-47/apply-incremental-backup
检测会释放第二个增量备份。
MySQL backup-backup-dir=/opt/MySQL/backup/2013-04-10 _ 17-59-54/-incremental-backup-dir=/home/MySQL/backup in/2013-04-10 _ 11-50-47/apply-incremental-backup
最后,复制物理文件。
MySQL backup-defaults-file=/etc/my . CNF-backup-dir=/home/MySQL/backup in/2013-04-10 _ 17-59-54/copy-back
参数描述:
-defaults-file my . CNF文件的路径,主要用于一台服务器中的多个mysql服务。默认位置是/etc/my.cnf。
-用户名,该用户必须具有在mysql库中创建表、查询和插入的权限。在备份过程中,mysqlbackup会在mysql库中建立backup_history、backup_progress表。用户将保留备份历史信息和基本备份信息。
-密码密码
- database需要备份的数据库,需要用来备份多个数据库" "包含在内,每个数据库中间用空格隔开。
- with-timestamp用户在当前时间在备份目录下创建一个文件夹。如果没有此参数,在多次备份时,创建同一个目录将会覆盖上次备份的文件。
- backup-dir备份目录
-compress-level=1 1是快速压缩。共有9个级别。
- incremental:表示增量备份。
-incremental-backup-dir:增量备份存储在哪里?
- incremental-base:增量备份的基本备份或增量备份的文件。
支持
回拷式物理文件复制和恢复
Backup-and-apply-log参数,备份时完成事务日志检测功能,将ibbackup_logfile与表空间的差异的LSN内容放入事务日志中,所以恢复时只需要备份物理文件即可。此参数不能与- compress-level一起使用。
备份期间,应用日志处于在线状态。如果有新插入的SQL语句,将记录新添加的LSN点,然后新修改的页面将放在这个文件(ibbackup_logfile)和表空间中。当该参数用于还原时,
MySQL会检测ibbackup_LOGfile的LSN点和表空间,然后比较ibbackup_logfile文件的LSN的差异,并将这个值放入事务日志中。(如果事务日志已满,它将进入表空间。)
应用增量备份检测与增量备份的发布相匹配。
7.MYSQL备份工具idbackup
跨平台,支持innodb存储引擎热备份,只备份数据文件和重做日志文件。如果需要备份表结构,需要配置外部perl脚本innodbackup,这是idbackup的外部调用脚本,支持innodb等存储引擎的备份。
这种备份方法需要安装软件meb,meb-3.8.1-rhel5-x86-64bit.tar.gz。
在备份之前,在my.cnf中添加以下参数(显示变量,如 innodb% )。
innodb _ data _ home _ dir=/data/MySQL #指定数据目录路径
innodb _ data _ file _ path=IB data1:10M:自动扩展
innodb _ log _ group _ home _ dir=/data/MySQL #指定日志路径,该路径通常与datadir路径相同。
innodb_log_files_in_group=2
innodb_log_file_size=5242880
log-bin=mysql
完成:
光盘到meb软件的安装目录。/inno backup-user=root-password=password-socket=/var/lib/MySQL . socket-IB backup=/opt/MySQL/meb-3.5/bin/IB backup/etc/my . CNF/opt/MySQL/backup/
说明:ibbackup指定了meb软件中可执行的ibbackup的路径。
/etc/my.cnf指定当前数据库使用的my.cnf配置文件。
/data/mysqlbk备份的目标文件可以自己指定。
执行该命令后,将在/opt/mysql/backup/目录中创建一个当前日期时间格式的备份目录文件。
增量备份的序列号保存在文件/data/mysqlbk/date-time/IB backup _ export _ variables . txt中。
在/data/mysqlbk/date-time/IB backup _ bin log _ info文件中记录二进制日志的位置。
益介。/inno backup-user=root-password=password-socket=/var/lib/MySQL . socket-IB backup=/opt/MySQL/MEB-3.5/bin/IB backup-incremental-lsn增量序列号/etc//etc/my.cnf /tmp/mysqlbk
描述:-增量备份
- lsn后面是增量序列号,它保存在ibbackup_export_variables.txt文件中。
数据恢复
1首先将所有增量备份还原为完整备份。
2.还原一切。
3应用二进制日志来恢复尚未备份的数据。
完整备份应用程序。/inno backup-apply-log-socket=/var/lib/MySQL . socket-IB backup=/opt/MySQL/MEB-3.5/bin/IB backup/etc/my . CNF/opt/MySQL/backup/full-backup目录
注意:应用一个完整的文件不会恢复到该文件。
对完整备份应用增量。/inno backup-apply-log-incremental-user=root-password=password-socket=/var/lib/MySQL。socket-IB backup=/opt/MySQL/me b-3.5/bin/IB backup/opt/MySQL/backup/增备目录/backup-my。CNF/opt/MySQL/backup/全备目录/backup-my.cnf
说明:需要指定增备的my.cnf全备的my.cnf
用全备恢复文件。/inno backup-copy-back/etc/my。CNF/opt/MySQL/backup/全备目录
用二进制日志恢复未做备份的文件
mysqlbinlog -起始位置=序号二进制日志文件 MySQL-u root-ppass word-socket=/var/lib/MySQL。窝
说明:-起始位置指定要恢复制的开始序号,此序号保存
在最后一个备份的 ibbackup_binlog_info 文件中
此备份方法对所有的数据库引擎可用,可实现在线热备,且对于大数据的数据库备份速度很快。