备份
概念
备份是将一台服务器的数据,进行复制到另外一台或者多台服务器上的过程,虽然可以通过强化硬件来保证数据安全,但是如果因为宕机出现的数据丢失问题,在没有备份的情况下,无法恢复数据,所以备份可以有效避免数据丢失问题
备份的方式
1、mysqldump
备份库中多表 mysqldump -u user -p密码 要备份的库 要备份的表 表1 表2 > /path
备份多个库 mysqldump -u user -p密码 -B 要备份的库 库1 库2 > /path
option选项: -R:只导出存储过程和函数 -d:只备份表结构,不备份表数据 -t:只备份表数据,不备份表结构 -A:备份所有库 -B:备份多个库
[root@localhost ~]# mysqldump -u root cyj > /root/cyj.bak.sql /*备份cyj数据库为root下的cyj.bak.sql
cyj.bak.sql:备份后文件中的内容前后设置了一些变量,是为了备份和恢复的两台服务器的mysql字符集能够更好的兼容数据
2、直接复制目录用来备份(不建议使用)
3、使用mysqlhotcopy进行备份(被淘汰)
用perl语言编写,用于恢复数据,等同于复制
[root@localhost ~]# yum -y install perl-DBD-MySQL
[root@localhost ~]# mysqlhotcopy -u root cyj /tmp --socket=/usr/local/mysql/mysql.sock
#因为我的sock文件不再默认路径下,使用需要单独指定sock文件
恢复数据
1)mysql -u user -p密码 要恢复的库 < /path
mysql> USE sjk1; /*创建数据库用于还原刚才的表*/
[root@localhost ~]# mysql -uroot sjk1 < /root/cyj.bak.sql /*恢复sql文件中的内容到sjk1数据库*/
mysql> show tables;
+----------------+
| Tables_in_sjk1 |
+----------------+
| class |
+----------------+
2)在mysql命令行中使用命令进行恢复数据
source /path
mysql> create database cyj1; /*创建恢复库*/
mysql> use cyj1; /*必须进入库,否则恢复失败*/
mysql> source /root/cyj.bak.sql /*即恢复成功*/
3)通过cp或者mysqlhotcopy备份的内容直接将备份出的数据移动到数据目录下(data)即可(属主属组问题),直接查看即可
[root@localhost data]# cp -R /tmp/cyj /usr/local/mysql/data/