MySQL   备份和恢复

 

一.        备份和恢复

   1.查看当前的二进制日志文件的文件名:show binlog events;

       或:mysql -h hostname -u username -ppwd -e 'show binlog events;'

 

   2 MYSqlhotcopy 备份命令:

         mysqlhotcopy是一个Perl脚本,最初由Tim Bunce编写并提供。它使用LOCK TABLESFLUSH TABLEScpscp来快速备份数据库,可自动完成数据锁定工作.它是备份数据库或单个表的最快的途径,但它只能运行在数据库目录所在的机器上。mysqlhotcopy只用于备份MyISAM

 

3. 重命名数据库命令:

 . MySQL中没有为数据库重命名的命令,但我们可用mysqldump转储数据库,再创建一个新的空数据库,把转储文件加载到该新数据库,这样就完成数据库重命名的工作。如:

 

% mysqldump old_db >db.sql          #转储db数据库数据 

 

% mysqladmin create new_db          #新建一个空的数据库 

 

% mysql new_db < db.sql             #db数据库的数据加载到新的数据库中 

 

% mysqladmin drop old_db            #删除旧的数据库 

 

一个更简单的重命名数据库的方法是直接修改数据库目录名,但该方法不适用于InnoDBBDB数据库。注意,在更名后,需在权限表中更新相关数据表信息,需执行以下语句:

 

mysql> UPDATE db SET db='new_db' WHERE db='old_db';
    

 

mysql> UPDATE tables_priv SET db='new_db' WHERE db='old_db';
    

 

mysql> UPDATE columns_priv SET db='new_db' WHERE db='old_db';
    

 

mysql> UPDATE host SET db='new_db' WHERE db='old_db';
    

 

1.  备份所有数据库:

Mysqldump –opt –uroot –p –all-database > all.sql

 

2.  备份数据库test:

Mysqldump –opt –u root –p test > test.sql

 

3.  备份数据库test下的表emp:

Mysqldump –opt –u root –p test emp > emp.sql

 

4.  备份数据库test 下的表emp and dept

Mysqldump –opt –u root –p test emp dept > emp_dept.sql

 

 

5.  恢复全备:

Mysql –u root –p dbname < bakfile

 

6.  恢复增量/binlog

Mysqlbinlog binlog-file | mysql –u root –p

 

7.  基于时间点恢复

  如上午10点发生了误操作,可用下面语句用备份和BINLOG将数据库恢复到故障前:

Mysqlbinlog –stop-date=”2010-07-12 9:59:59” /var/log/mysql/bin.12345 | mysql –u root –p

 

   .跳过故障时的时间点,继续执行后面的BINLOG,以完成恢复:

Mysqlbinlog –start-data=”2010-07-12 10:01:00” /var/log/mysql/bin.12345 |mysql –u root –p

 

8.  基于位置恢复

  .在/tmp目录创建小的文本文件,编辑此文件,找到出错语句前后的位置号,如前后位置号分别是:36 39

   Mysqlbinlog –start-date=”2010-07-12 9:55:00” –stop-data=”2010-07-12 10:05:00” /var/log/mysql/bin.12345 > /tmp/mysql_restore.sql

 

  .开始恢复

Mysqlbinlog –stop-position=”36” /var/log/mysql/bin.12345 |mysql –uroot –p

Mysqlbinlog –start-position=”39” /var/log/mysql/bin.12345 |mysql –uroot –p

上面一行将恢复到停止位置为止的所有事务,下面一行将恢复从给定的起始位置直到二进制日志结束的所有事务。

 

9.  在线备份InnoDB 引擎数据库:

       Mysqldump –all-databases –single-transaction > all_databases.sql

 

10.          对于InnoDB点对点恢复备份

      Mysqldump –all-databases –master-data=2 > all_databases.sql

      Mysqldump –all-databases –flush-logs –master-data=2 > all_databases.sql

 

11.          Mysqlhotcopy 备份MyISAM数据库

      Mysqlhotcopy db_name /path/to/new_directory

 

12.          Mysqlhotcopy 备份多MyISAM数据库

       Mysqlhotcopy db_name_1…db_name_n /path/to/new_directory

 

13.          压缩备份

      Mysqldump –u root –p db_name | gzip > db_name_date.sql.gz

 

14.          恢复压缩

       Gzip < db_name_date.sql.gz |mysql –u root –p

15.          FLUSH LOGS SQL语句或mysqladmin flush-logs命令,告诉服务器关闭当前的二进制日志文件并创建一个新文件。

 

16.          在线备份InnoDB后生成新二进制日志文件

       Mysqldump –single-transaction –flush-logs –master-data=2 –all-databases > all.sql

 

17.          在线备份InnoDB后删除旧的二进制日志文件,并生成新一个二进制日志文件

      Mysqldump –single-transaction –flush-logs –master-data=2 –all-databases –delete-master-logs > all.sql

你可能感兴趣的:(数据库,mysql,mysql,职场,休闲,备份和恢复)