mysql数据库备份详解2(mysqldump使用技巧)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/GX_1_11_real/article/details/81062074

前言


如标题所示,这一篇介绍的是mysqldump常用的使用技巧,由于mysqldump命令有很多的参数并不常用,这里就不总结了(如有需要添加的,会及时更新)


使用技巧总结


导出的sql文件,可以是任意名字,但是一般要使它在名称上可以区分出来

导出数据使用的用户名和其密码必须正确,且有操作该导出的数据库的权限
(一般使用root及其密码)

基础参数:
-u 连接数据库的用户
-p 连接数据库密码
-P连接数据库端口号



【1】导出全部数据库

mysqldump -u用户 -p密码 –all-databases > all.sql



【2】只导出数据库表结构不导出任何数据

mysqldump -u用户 -p密码 –all-databases –no-data > all.sql



【3】导出整个数据库及其数据

mysqldump -u用户 -p密码 数据库名称 > dbname.sql



【4】只导出数据库结构不含数据

mysqldump -u用户 -p密码 -d 数据库名 > dbname.sql



【5】导出数据库中的某数据表及其数据

mysqldump -u用户 -p密码 数据库名 数据表名 > tablename.sql



【6】只导出数据库中的某数据表的表结构不含数据

mysqldump -u用户 -p密码 -d 数据库名 数据表名 > tablename.sql



【7】导出某个数据库的多个数据表

mysqldump -u用户 -p密码 数据库名1 数据表名1 数据表名2 > tablename.sql



【8】导出多个数据库及其数据(导出哪些数据库,添加哪个数据库名)

mysqldump -u用户 -p密码 –databases 数据库名1 数据库名2 > dbname.sql



【9】导出全部数据库时,不导出某个数据库中指定的数据表

指定忽略多个表时,需要重复多次;每个表必须同时指定数据库和表名

mysqldump -u用户 -p密码 –all-databases –ignore-table=数据库名.表名 > notablename.sql



【10】备份压缩

mysqldump -u用户 -p密码 –all-databases | gzip > all.sql.gz


【11】在线不锁表,热备份

mysqldump -u用户 -p密码 –all-databases –skip-lock-tables –single-transaction –master-data=2 –flush-logs > all.sql


补充:

  • –skip-lock-tables ,不锁表

  • –single-transaction,适用于InnoDB表,会将导出操作封装在一个事务内,使得导出的数据是一个一致性快照。

  • 为确保得到有效的备份文件,使用该参数备份期间应避免使用DDL(ALTER TABLE, CREATE TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE.)语句

  • – lock-all-tables导出时锁定所有表,可保证导出数据与数据库的一致性。但是,在线上数据库备份时,很少使用。

  • –master-data=2表示在dump过程中记录主库的binlog和pos点,并在dump文件中注释掉这一行

  • –master-data=1表示在dump过程中记录主库的binlog和pos点,并在dump文件中不注释掉这一行,恢复时会执行

  • 当master_data和 single_transaction 同时使用时,会先加全局读锁,然后设置事务一致性和使用一致性快照开始事务,然后马上就取消锁,然后执行导出

  • -


猜你喜欢

转载自blog.csdn.net/GX_1_11_real/article/details/81062074