MySQL冷备份过程


MySQL 冷备份过程

把 mysql 的数据文件打包并压缩即可,要恢复的时候再把相应的文件拷过去覆盖就行了。

冷备份实际上是最简单的备份方式 (好吧,第一次我就差点把数据库搞崩溃了),但由于要求停止 MySQL 服务来进行备份和恢复,并且只能完整备份,所以实用性并不高。

备份

首先,进入数据库并找出数据文件存放目录:

mysql> show variables like ‘%dir%‘;

| Variable_name | Value |

| — | — |

| basedir | /usr |

| binlog_direct_non_transactional_updates | OFF |

| character_sets_dir | /usr/share/mysql/charsets/ |

| datadir | /var/lib/mysql/ |

| innodb_data_home_dir | |

| innodb_log_group_home_dir | ./ |

| innodb_max_dirty_pages_pct | 75 |

| lc_messages_dir | /usr/share/mysql/ |

| plugin_dir | /usr/lib/mysql/plugin/ |

| slave_load_tmpdir | /tmp |

| tmpdir | /tmp |

+—————————————–+—————————-+

11 rows in set (0.00 sec)

数据目录就是 datadir 的所在位置,即 /var/lib/mysql/

然后执行:

cd /var/lib/ # 进入其上级目录

service mysql stop # 关闭mysql服务,这里我其实并没有关闭,但我没有在高 数据量下测试过

tar jcvf ~/backup.tar.bz2 mysql/ # 打包压缩该目录到根目录

恢复

执行如下命令即可:

cd ~/ # 进入备份文件的保存目录

tar jxvf backup.tar.bz2 mysql/ # 解压

gunzip -r mysql/ # 递归解压

service mysql stop # 必须先关闭服务

rm -r /var/lib/mysql/ # 删除原目录

mv ~/mysql/ /var/lib/ # 把备份的文件移动到/var/lib/里面去替代原来的mysql

service mysql start # 重启mysql服务

需要注意的是恢复过后,就和原来数据库一模一样了,包括所有的修改和帐号密码等信息。