MySQL 容灾备份
容灾备份:
数据备份:
直接对数据库进行备份:
# 数据库备份 语句
# 不指定表名的话 默认就是整个数据库备份
# 备份文件可以指定绝对路径
mysqldump -u [用户名] -p [库名] [表名] ... > [备份文件.sql]
# 多个数据库备份 语句
mysqldump -u [用户名] -p --databases [库名] [库名] > [备份文件.sql]
# 备份所有数据库 语句
mysqldump -u [用户名] -p -all-databases > [备份文件.sql]
直接备份数据库目录:
就是将MySQL中的数据库文件直接复制出来 这是最简单 速度最快的方法
不过这样操作 最好在操作的时候把服务停了 不然会造成数据差异 开发环境倒无所谓
注意:这种方法不适用于InnoDB存储引擎的表
而对于MyISAM存储引擎的表很方便
同时 还原时MySQL的版本最好相同
使用mysqlhotcopy 热备份:
# 使用mysqlhotcopy备份命令
mysqlhotcopy [选项] [数据库名称] [数据库名称] [备份目录]/
# 常用选项:
--help:查看mysqlhotcopy帮助;
--allowold:如果备份目录下存在相同的备份文件,将旧的备份文件加上_old;
--keepold:如果备份目录下存在相同的备份文件,不删除旧的备份文件,而是将旧的文件更名;
--flushlog:本次辈分之后,将对数据库的更新记录到日志中;
--noindices:只备份数据文件,不备份索引文件;
--user=用户名:用来指定用户名,可以用-u代替;
--password=密码:用来指定密码,可以用-p代替。使用-p时,密码与-p之间没有空格;
--port=端口号:用来指定访问端口,可以用-P代替;
--socket=socket文件:用来指定socket文件,可以用-S代替;
mysqlhotcopy的备份方式比mysqldump快
mysqlhotcopy是一个perl脚本,主要在Linux系统下使用。其使用LOCK TABLES、FLUSH TABLES和cp来进行快速备份原理:先将需要备份的数据库加上一个读锁,然后用FLUSH TABLES将内存中的数据写回到硬盘上的数据库,最后,把需要备份的数据库文件复制到目标目录。
mysqlhotcopy并非mysql自带 需要安装Perl的数据库接口包
该工具也仅仅能够备份MyISAM类型的表
数据恢复:
- 使用mysqldump命令备份 进行还原:
# 还原使用mysqldump命令备份的数据库的语法如下:
mysql -u root -p [库名] < [备份文件]
-
直接复制目录的备份 进行还原:
通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。
MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制
。
容灾处理:
MySQL的容灾处理 基本就是通过主从和集群为数据服务器提前装配冗余的数据服务(也可能不是冗余的数据服务)
通过主从和集群实现多点数据服务 保证在其中一个数据服务出现问题(断电、宕机)时 其他数据服务器能接管用户的正常业务