MySQL 如何进行数据备份

一、概述

按照备份方式分为:逻辑备份、物理备份

按照运行方式分为:热备份、冷备份

 

二、逻辑备份

1、概述

逻辑备份又叫数据导出。

优点:非常灵活,对于小数据量很好。

缺点:慢,非常慢。导出慢,导入也慢。

 
2、如何实现

在从服务上连接主服务器上的数据库,通过mysqldump工具备份数据到从数据库中

(1)在主服务器上,设置读锁定有效,这个操作是为了确保没有数据库操作,以便获得一致性的快照。

mysql> flush tables with read lock;

(2)然后在从服务器上进行数据的备份,并同步导入备份数据

[root@localhost ~]# mysqldump -h192.168.3.10 -u root -p laravel-shop > /home/laravel-shop.sql
Enter password:
[root@localhost ~]# mysql -f -u root -p laravel-shop < /home/laravel-shop.sql
Enter password:
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> use laravel-shop;
Database changed
mysql> show tables;

(3)在数据备份完成之后,到主服务器,恢复主数据库的写操作,执行命令如下:

mysql> unnlock tables;

注:可以通过 Mydumper 代替 mysqldump,因为 Mydumper 是多线程的,因此 Mydumper 大概会比 mysqldump 备份速度快上十倍左右。Mydumper 需要编译安装。

注:Mydumper 如何使用(MySQL 逻辑备份,用于替代mysqldump)

 

三、物理备份(暴力备份)

停止主库,然后复制主库中的data目录到从库中...

 
优点:快

缺点:迁移到新的mysql,需要重新配置配置文件,并且对MySQL版本也有要求,最好保持完全一致。

 

四、冷备份

数据库停止写的操作(或者直接停机),在这个基础上备份(在这个基础上不会发生数据变化)。

最大的优点就是数据安全。

 
如何实现:

就是上面的逻辑备份和物理备份

 

五、热备份

1、概述

一般大型公司是不会允许数据库停机或停止写操作的,那就只能进行在线备份,也叫热备份。

存在的问题就是:你前一秒备份,后一秒别人就把刚备份的数据给改了,数据不安全。

2、如何实现

使用 xtrabackup 工具进行热备份

 
3、解释

使用 xtrabackup 工具进行热备份方式,主从数据一定会保持一致的。

因为使用 xtrabackup 工具进行热备份之后,这个时候从数据库会有一个时间点。

配置了主从之后,master 会一直向 slave 发送binlog日志,也就是说,主库备份完数据,然后传递到slave之后,即使有新的写入操作,master也会传递到slave,slave 会去检测binlog日志