mysqldump什么是mysqldump?mysqldump是MySQL用于执行逻辑备份的一款工具,可以根据原始数据库对象以及表的定义和数据来生成一系列可以被执行的SQL语句。通常我们用它作为备份或者迁移数据。mysqldump命令还可以输出成CSV文件,其他边界的文本或者XML格式。如何使用mysqldump?导出整个数据库(包含数据)mysqldump-uusername-pdbnamedbname.sql导出数据库结构mysqldump-uusername-p-ddbnamedbname.sql导出数据库中的某张表mysqldump-uusername-pdbnametablenametablename.sql导出数据库中的某张表结构mysqldump-uusername-p-ddbnametablenametablename.sql导入数据mysql-uusername-pdbnamedbname.sql也可以在msyqlCLI中导入:source/home/dbname.sqlmysqldump的常见参数:--single-transaction:当设置此参数时,会将事务隔离模式设置为REPEATABLE_READ并在导出数据前,发送一个START_TRANSACTIONSQL语句到MySQLServer上。此参数仅仅对事务表(如InnoDB)有作用,因为在导出数据时,除了保证数据一致性的状态还能同时保证其他应用在开启事务是不会被阻塞。需要注意的是,该参数只能保证InnoDB表导出数据时的一致性状态。对于MyISAM或者MEMORY的表在导出时,状态可能会发生改变。当使用此次参数mysqldump正在导出数据时,为了确保得到有效的结果(正确的表内容和二进制坐标),要保证其他的连接不使用ALTER_TABLE,CREATE_TABLE,DROP_TABLE,RENAME_TABLE,TRUNCATE_TABLE等操作。因为一致性的读不会隔离这些操作,所以当一个表被导出时会导致mysqldump使用SELECT操作会检索到不正确或者发生错误。--single-transaction和--lock-tables是互斥的,如果指定LOCK_TABLES会导致对正在转储的数据进行锁定,仅允许读操作,直到所有的表被导出。--quick:该参数对转储大表时很有用.它会强制mysqldump一次从服务器中检索表中的一行,而不是检索整个行集并将其缓冲在内存中,然后再将其写出。--flush-logs:该参数的作用就是关闭当前使用的binlog,然后创建一个新的binlog文件用于记录。--master-data:该参数可设置为1或者2.1为默认值,不用表示指定。当值为1时,在导出的sql文件中会下显示的加入被导出数据库的binlog名称以及位置。当值为2时,在导出的sql文件中会以注释的方式加入被导出数据库的binlog名称以及位置。主要用于为设置主从复制的从库导入binlog的名称及位置,等于1时,当导入此文件时,会自动的配置主库的信息。等于2时,需要手动的配置主库的信息。区别可见下图:定期全量备份MySQL创建定期备份脚本mkdir/home/mysql_backuptouch/home/mysql_backup/backup.logtouch/home/mysql_backup/MySQL_Full_Backup.shchomdMySQL_Full_Backup.shmkdir/home/mysql_backup/data_dirMySQL_Full_Backup.sh内容#!/bin/bash#usemysqldumptoFullybackupmysqldataperday!#PathBakDir=/home/mysql_backupLogFile=/home/mysql_backup/backup.logDatadir=data_dir/#gettimeDate=`date+%Y%m%d_cmi`Begin=`date+%Y年%m月%d日%H:%M:%S`#enterbackupdircd$BakDir#Deletefiles7daysagofinddata_dir-typef-mtime+7-name*.sql.tgz-execrm{}\;#setoutputfilenameDumpFile=$Datadir$Date.sqlGZDumpFile=$Datadir$Date.sql.tgz#Backupand
转载请注明:http://www.aierlanlan.com/rzdk/9388.html