当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL备份--使用mysqldump全备

MYSQL
MS SQL大值数据类型varchar(max)、nvarchar(max)、varbinary(max)
MySQL索引经验之浅见
提高MySQL 查询效率的三个技巧(1)
提高MySQL 查询效率的三个技巧(2)
提高MySQL 查询效率的三个技巧(3)
MySQL中的mysqldump命令使用详解
Linux下mysql的C API简单使用
MYSQL 有条件地插入记录
mysql 注释方法
MySQL备份--使用mysqldump全备
Mysql索引
5种方法优化MySQL插入表格查询
java实现插入mysql二进制文件,blob类型,遇到问题及解决办法
mysql中root用户的密码修改和消除
完全优化MySQL数据库性能的八大巧方法
MySQL与标准的兼容性
优化MYSQL服务器
MYSQL 权限
Mysql 基本用法
Mysql 备份与恢复

MYSQL 中的 MySQL备份--使用mysqldump全备


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 368 ::
收藏到网摘: n/a

全备?个人理解是数据在备份时间点保持数据一致性。
这样就涉及到全局锁问题。(东西从官方cp的)
值得关注的几个mysqldump参数:
--lock-all-tables, -x 
Lock all tables across all databases. This is achieved by acquiring a global read lock for the duration of the whole dump. This option automatically turns off --single-transaction and --lock-tables.
 
--flush-logs, -F 
Flush the MySQL server log files before starting the dump. This option requires the RELOAD privilege. Note that if you use this option in combination with the --all-databases (or -A) option, the logs are flushed for each database dumped. The exception is when using --lock-all-tables or --master-data: In this case, the logs are flushed only once, corresponding to the moment that all tables are locked. If you want your dump and the log flush to happen at exactly the same moment, you should use --flush-logs together with either --lock-all-tables or --master-data.
 
--master-data[=value]
value默认为1;区别如下: 
--master-data=1
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=191;
--master-data=2 
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000019', MASTER_LOG_POS=191;
Use this option to dump a master replication server to produce a dump file that can be used to set up another server as a slave of the master. It causes the dump output to include a CHANGE MASTER TO statement that indicates the binary log coordinates (file name and position) of the dumped server. These are the master server coordinates from which the slave should start replicating. 
If the option value is 2, the CHANGE MASTER TO statement is written as an SQL comment, and thus is informative only; it has no effect when the dump file is reloaded. If the option value is 1, the statement takes effect when the dump file is reloaded. If the option value is not specified, the default value is 1. 
This option requires the RELOAD privilege and the binary log must be enabled. 
The --master-data option automatically turns off --lock-tables. It also turns on --lock-all-tables, unless --single-transaction also is specified, in which case, a global read lock is acquired only for a short time at the beginning of the dump (see the description for --single-transaction). In all cases, any action on logs happens at the exact moment of the dump. 
It is also possible to set up a slave by dumping an existing slave of the master. To do this, use the following procedure on the existing slave: 
(从已经存在的从库做多从,是不错的选择)
Stop the slave's SQL thread and get its current status: 
mysql> STOP SLAVE SQL_THREAD;
mysql> SHOW SLAVE STATUS;
From the output of the SHOW SLAVE STATUS statement, get the binary log coordinates of the master server from which the new slave should start replicating. These coordinates are the values of the Relay_Master_Log_File and Exec_Master_Log_Pos values. Denote those values as file_name and file_pos. 
Dump the slave server: 
shell> mysqldump --master-data=2 --all-databases > dumpfile
Restart the slave: 
mysql> START SLAVE;
On the new slave, reload the dump file: 
shell> mysql < dumpfile
On the new slave, set the replication coordinates to those of the master server obtained earlier: 
mysql> CHANGE MASTER TO
  -> MASTER_LOG_FILE = 'file_name', MASTER_LOG_POS = file_pos;
The CHANGE MASTER TO statement might also need other parameters, such as MASTER_HOST to point the slave to the correct master server host. Add any such parameters as necessary.
 
--single-transaction 对于InnoDB
This option issues a BEGIN SQL statement before dumping data from the server. It is useful only with transactional tables such as InnoDB, because then it dumps the consistent state of the database at the time when BEGIN was issued without blocking any applications. 
When using this option, you should keep in mind that only InnoDB tables are dumped in a consistent state. For example, any MyISAM or MEMORY tables dumped while using this option may still change state. 
While a --single-transaction dump is in process, to ensure a valid dump file (correct table contents and binary log position), no other connection should use the following statements: ALTER TABLE, DROP TABLE, RENAME TABLE, TRUNCATE TABLE. A consistent read is not isolated from those statements, so use of them on a table to be dumped can cause the SELECT performed by mysqldump to retrieve the table contents to obtain incorrect contents or fail. 
This option is not supported for MySQL Cluster tables; the results cannot be guaranteed to be consistent due to the fact that the NDBCLUSTER storage engine supports only the READ_COMMITTED transaction isolation level. You should always use NDB backup and restore instead. 
The --single-transaction option and the --lock-tables option are mutually exclusive, because LOCK TABLES causes any pending transactions to be committed implicitly. 
To dump large tables, you should combine this option with --quick.