7. mysql备份和还原

1.逻辑备份 

mysql中的逻辑备份就是将数据库中的数据备份为一个文本文件, 且此文本文件可以查看和编辑

      mysqldump

[root@server2 ~]# mysqldump

Usage: mysqldump [OPTIONS] database [tables]

OR     mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

OR     mysqldump [OPTIONS] --all-databases [OPTIONS]

 

mysqldump -uroot -paixocm ds > ds.sql                        ---备份ds数据库

mysqldump  ds stu  dept  > ds.sql                                ---备份ds库下的stu,dept

mysqldump  --databases  ds  ds2 > ds.sql                   ---备份多个库        (注意后面还原上的区别)

 

写锁: 本session增删改查均可, 其他session均为等待

读锁: 所有session只可select, 均不可增删改

flush tables with read lock;              ----锁所有表

lock tables stu read或write;

unlock tables;

 

mysqldump -uroot -paixocm -lF ds > ds.sql

-l(小写) 给所有表加上读锁, 备份时只能读而不能写

-F (flush logs)生成新二进制日志文件

还原

mysql -uroot -paixocm ds < ds.sql  -- 输入重定向,            cat ds.sql | mysql用管道也可

  use ds后     source /tmp/ds.sql 

注意以上情况是没有加 --databases 备份,需要先新建好一个空的数据库,而加了的话,可以不要建新库,还原时自动建好。

 

不完全恢复

基于时间点恢复, 基于位置恢复(更精确,因为一个时间点存在并发性)

mysqlbinlog mysql-bin.000001 --stop-datetime="2012-1-1 12:1:2" | mysql -uroot -paix ds         //可以参考bin日志

 

2.物理备份

          cp数据库文件夹如ds

冷备份: 停服务后cp, 不停服务的话拷贝的数据不一致

热备份: 服务正常运行时cp(加读锁)

 

热备份例子(只对myisam表):

方法1:

/usr/local/mysql56/bin/mysqlhotcopy -u root -p aixocm -S … ds /tmp   ---自动加锁了

 

方法2 (手工加读锁):

flush tables with read lock; -- 锁所有表,              lock tables t1 read; 只锁t1

cp文件夹

unlock tables;

innodb表, 不支持,可以用第三方工具如:ibbackup工具, 收费。

还原:

cp -pr  /tmp/ds   /database/





原文地址:https://www.cnblogs.com/51runsky/p/7f4f294a57943f1096936ec09d6ea99a.html