MySQL之备份恢复

那年仲夏 提交于 2020-03-10 05:59:57

六:备份与恢复 (优先掌握)

语法
mysqldump  -u用户名  -p密码 -h主机名  -P端口   -A > 文件名.sql


------------------mysqldump的参数------------------------
-u, --user=name  //指定连接的用户名

-p, --password[=name]  //指定用户的密码,这里可以指定参数名,

-S, --socket=name  //指定socket文件连接  用于本地连接

-h, --host=name       //指定连接的服务器名

-P, --port=端口     //指定连接的服务器端口号

–tables           //导出指定的表对象,格式为 ‘dbname tablename’,如mysqldump -S /tmp/mysql3306.sock test t1,默认会覆盖-B, --databases参数

–single-transaction  //在备份开始前,先执行start transaction命令,以此来获得备份的一致性,当前该参数只对InnoDB存储引擎有效。当启用该参数并进行备份时,确保没有其他任何的DDL语句执行(ALTER TABLE, DROP TABLE, RENAME TABLE,TRUNCATE TABLE),因为一致性读并不能隔离DDL操作。启用此参数时,参数--lock-tables将自动禁用。

-A, --all-databases   //备份所有数据库

-B, --databases   //备份指定的数据库,如mysqldump -S /tmp/mysql3306.sock --database db1 db2

–default-character-set=name   //设置字符集,默认为以服务器设置的字符集进行导出。

-l, --lock-tables //以只读方式依次锁住每个库下的所有表,默认启用。使用--skip-lock-tables禁用。不能保证所有库下的表备份一致。

-x, --lock-all-tables     //在备份过程中,对所有库的所有表,同时锁定。若指定了本参数,则会自动禁用--single-transaction和-l, --lock-tables参数。

–add-drop-database        //在任何创建库语句前,附加drop database语句。

–add-drop-table           //在任何建表语句钱,附加drop table语句。默认启用。如果不希望生成drop table语句,可以通过--skip-add-drop-table参数禁用。

–add-drop-trigger     //创建任何触发器前,附加drop trigger语句。

–add-locks        //在生成的insert语句钱附加lock语句,默认启用。使用 --skip-add-locks来禁用。

–allow-keywords       //允许创建使用关键字的列名。

–master-data[=#]  //该参数有1和2两个值,如果值等于1,就会在备份文件中添加一个change master语句。如果值为2,就会在备份文件中添加一个带有注释符号的change master语句。
             
–dump-slave[=#]       //该参数用于在从库备份数据,在线搭建新的从库时使用。此参数也有1和2两个值。值为1时,在备份文件中添加一个change master语句。值为2时,就会在备份文件中添加一个带有注释符号的change master语句。
            
-t, --no-create-info  //备份过程中,只备份表数据,不备份表结构            
            
-d, --no-data     //备份过程中,只备份表结构,不备份表数据            
            
-c, --complete-insert //使用完整的insert语句会包含表中的列信息,这么做可以提高插入效率。            
-q, --quick       //表示导出时不会先将数据加载至buffer中,而是直接输出。默认启用,使用 --skip-quick禁用  
            
-w, --where=name  //导出给定条件的数据            
备份与恢复
# 备份数据

---------------------1. 备份命令----------------------
# 格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql

# 示例
mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb > /data/backup/cmdb.sql



-----------------------2. 备份压缩-----------------------
# 格式
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 | gzip > 文件名.sql.gz

# 示例
mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword --database cmdb | gzip > /data/backup/cmdb.sql.gz



-------------------------3. 备份同个库多个表------------
# 格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 表1 表2 .... > 文件名.sql

# 示例
mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql



----------------------4. 同时备份多个库--------------
# 格式
mysqldump -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名1 数据库名2 数据库名3 > 文件名.sql

# 示例
mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql



----------------------5. 备份实例上所有的数据库-------------------
# 格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --all-databases > 文件名.sql

# 示例
mysqldump -h192.168.1.100 -p3306 -uroot -ppassword --all-databases > /data/backup/all_db.sql



---------------6. 备份数据出带删除数据库或者表的sql备份-----------
# 格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --add-drop-table --add-drop-database 数据库名 > 文件名.sql

# 示例
mysqldump -uroot -ppassword --add-drop-table --add-drop-database cmdb > /data/backup/all_db.sql



--------------------7. 备份数据库结构,不备份数据-------------
# 格式:
mysqldump -h主机名 -P端口 -u用户名 -p密码 --no-data 数据库名1 数据库名2 数据库名3 > 文件名.sql

# 示例
mysqldump --no-data –databases db1 db2 cmdb > /data/backup/structure.sql





---------------# 恢复数据---------------------
第一种:退出数据库之后的恢复
mysql -u用户名  -p密码  < filename.sql;

第二种:在数据库中
source filename;

第三种:迁移数据库
mysqldump -h 源IP  -u用户名  -B 数据库名称 | mysql -h 目标IP -u用户名 -p用户密码
常用的备份工具:链接
备份方法 备份速度 恢复速度 便捷性 功能 一般用于
cp 一般,灵活性低 很弱 少量数据备份
mysqldump 一般,可无视存储引擎 一般 中小型数据量备份
lvm2快照 一般,支持热备,速度快 一般 中小型数据量备份
xtrabackup 较快 较快 实现innodb热备,对存储引擎有要求 强大 较大规模的备份
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!