当前位置: 移动技术网 > IT编程>数据库>Mysql > MySQL备份与恢复之冷备(1)

MySQL备份与恢复之冷备(1)

2017年12月12日  | 移动技术网IT编程  | 我要评论

成都人论坛,福泰,劲舞团快歌

        用一句话概括冷备,就是把数据库服务,比如mysql,oracle停下来,然后使用拷贝、打包或者压缩命令对数据目录进行备份。如果数据出现异常,则可以通过备份数据恢复。冷备一般需要定制计划,比如什么时候做备份,每次对哪些数据进行备份等等。但是由于这样的备份占用过多的空间,对大数据量的环境下不一定适合,故生产环境很少使用。

冷备示意图

 

冷备实验

第一步,创建测试数据库,插入测试数据

mysql> use larrydb;
database changed
mysql> show tables;
+-------------------+
| tables_in_larrydb |
+-------------------+
| access  |
+-------------------+
1 row in set (0.00 sec)

mysql> drop table access;
query ok, 0 rows affected (0.00 sec)

mysql> clear
mysql> show tables;
empty set (0.00 sec)

mysql> 
mysql> create table class(
 -> cid int,
 -> cname varchar(30));
query ok, 0 rows affected (0.01 sec)

mysql> show create table class \g;
*************************** 1. row ***************************
 table: class
create table: create table `class` (
 `cid` int(11) default null,
 `cname` varchar(30) default null
) engine=innodb default charset=latin1
1 row in set (0.00 sec)

error: 
no query specified

mysql> create table stu(
 -> sid int,
 -> sname varchar(30),
 -> cid int) engine=myisam;
query ok, 0 rows affected (0.00 sec)

mysql> show create table stu \g;
*************************** 1. row ***************************
 table: stu
create table: create table `stu` (
 `sid` int(11) default null,
 `sname` varchar(30) default null,
 `cid` int(11) default null
) engine=myisam default charset=utf8
1 row in set (0.00 sec)

error: 
no query specified

mysql> insert into class values(1,'linux'),(2,'oracle');
query ok, 2 rows affected (0.00 sec)
records: 2 duplicates: 0 warnings: 0

mysql> desc class;
+-------+-------------+------+-----+---------+-------+
| field | type | null | key | default | extra |
+-------+-------------+------+-----+---------+-------+
| cid | int(11) | yes | | null | |
| cname | varchar(30) | yes | | null | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> desc stu;
+-------+-------------+------+-----+---------+-------+
| field | type | null | key | default | extra |
+-------+-------------+------+-----+---------+-------+
| sid | int(11) | yes | | null | |
| sname | varchar(30) | yes | | null | |
| cid | int(11) | yes | | null | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into stu values(1,'larry01',1),(2,'larry02',2);
query ok, 2 rows affected (0.00 sec)
records: 2 duplicates: 0 warnings: 0

mysql> select * from stu;
+------+---------+------+
| sid | sname | cid |
+------+---------+------+
| 1 | larry01 | 1 |
| 2 | larry02 | 2 |
+------+---------+------+
 

第二步,停掉mysql

[root@serv01 ~]# /etc/init.d/mysqld stop
shutting down mysql... success! 

 
第三步,创建备份目录,并修改拥有者和所属组

[root@serv01 ~]# mkdir /databackup
[root@serv01 ~]# chown mysql.mysql /databackup/ -r
[root@serv01 ~]# ll /databackup/ -d
drwxr-xr-x. 2 mysql mysql 4096 sep 10 17:46 /databackup/
[root@serv01 ~]# cd /databackup/
 

第四步,冷备(使用tar命令)

[root@serv01 databackup]# tar -cvpzf mysql01.tar.gz 

 
第五步,测试冷备的数据是否正常,我们删除掉data下的所有数据

[root@serv01 databackup]# rm -rf /usr/local/mysql/data/*

 
第六步,删除所有数据后数据库不能启动

[root@serv01 databackup]# /etc/init.d/mysqld start
starting mysql.. error! the server quit without updating pid file (/usr/local/mysql/data/serv01.host.com.pid).

 
第七步,恢复数据(使用tar命令)

[root@serv01 databackup]# tar -xvpf mysql01.tar.gz 

 
第八步,启动mysql,然后登录mysql,查看数据是否丢失,如果数据正常代表冷备成功

[root@serv01 databackup]# /etc/init.d/mysqld start
starting mysql.. success! 

[root@serv01 ~]# mysql
welcome to the mysql monitor. commands end with ; or \g.
your mysql connection id is 1
server version: 5.5.29-log source distribution

copyright (c) 2000, 2012, oracle and/or its affiliates. all rights reserved.

oracle is a registered trademark of oracle corporation and/or its
affiliates. other names may be trademarks of their respective
owners.

type 'help;' or '\h' for help. type '\c' to clear the current input statement.

mysql> use larrydb;
database changed
mysql> select * from class;
+------+--------+
| cid | cname |
+------+--------+
| 1 | linux |
| 2 | oracle |
+------+--------+
2 rows in set (0.00 sec)

mysql> select * from stu;
+------+---------+------+
| sid | sname | cid |
+------+---------+------+
| 1 | larry01 | 1 |
| 2 | larry02 | 2 |
+------+---------+------+
2 rows in set (0.00 sec)

以上就是实现mysql冷备的全部过程,大家对冷备有没有了大概的了解,希望这篇文章可以对大家的学习有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网