逻辑备份: 备份结果为 SQL 语句(MyISAM会锁表) 举例:mysqlDump
物理备份: 对数据库目录的拷贝, 相对速度快
备份与还原
全量备份 mysqldump
mysqldump -u root -p Password [database name] > [dumpFile.sql]
--all-databases , -A导出全部数据库。--complete-insert, -c使用完整的insert语句(包含列名称)。这么做能提高插入效率,但是可能会受到max_allowed_packet参数的影响而导致插入失败。mysqldump -uroot -p --all-databases --complete-insert--password, -p连接数据库密码--user, -u指定连接的用户名。--add-drop-database每个数据库创建之前添加drop数据库语句。mysqldump -uroot -p --all-databases --add-drop-database--add-drop-table每个数据表创建之前添加drop数据表语句。(默认为打开状态,使用--skip-add-drop-table取消选项)mysqldump -uroot -p --all-databases (默认添加drop语句)mysqldump -uroot -p --all-databases –skip-add-drop-table (取消drop语句)
实例
- 备份MySQL数据库的命令
mysqldump -h主机名 -u用户名 -p密码 数据库名字 > 备份的数据库名字.sqlmysqldump -u[root] -p[jsb] [dbname] > backup.sql - 直接将MySQL数据库压缩备份
mysqldump -h主机名 -u用户名 -p密码 数据库名字 | gzip >备份的数据库名字.sql.gz - 备份MySQL数据库某个(些)表
mysqldump -h主机名 -u用户名 -p密码 数据库名字 数据库表名1 数据库其他表名2 > 备份数据库名字.sql - 同时备份多个MySQL数据库
mysqldump -h主机名 -u用户名 -p密码 —databases 需要备份的数据库名字1 需要备份的数据库名字2 > 备份数据库名字.sql
还原
还原.
mysql -h主机名 -u用户名 -p密码 需要恢复的数据库名字 < 已备份的数据库名字(见上).sql
Xtrabackup增量备份
MySQL冷备、mysqldump、MySQL热拷贝都无法实现对数据库进行增量备份。在实际生产环境中增量备份是非常实用的,如果数据大于50G或100G,存储空间足够的情况下,可以每天进行完整备份,如果每天产生的数据量较大,需要定制数据备份策略。例如每周实用完整备份,周一到周六实用增量备份。而Percona-Xtrabackup就是为了实现增量备份而出现的一款主流备份工具,xtrabakackup有2个工具,分别是xtrabakup、innobakupe。
在InnoDB内部会维护一个redo日志文件,我们也可以叫做事务日志文件。事务日志会存储每一个InnoDB表数据的记录修改。当InnoDB启动时,InnoDB会检查数据文件和事务日志,并执行两个步骤:它应用(前滚)已经提交的事务日志到数据文件,并将修改过但没有提交的数据进行回滚操作。
