您的位置:首页 > 其它

数据备份与恢复

2019-05-28 22:26 274 查看

本案例要求熟悉MySQL的备份与恢复,完成以下任务操作:

  1. 使用mysqldump备份数据库
  2. 使用mysql 恢复数据库
  • 步骤

实现此案例需要按照如下步骤进行。

步骤一:使用mysqldump进行逻辑备份

1)备份MySQL服务器上的所有库

将所有的库备份为mysql-all.sql文件:

[root@dbsvr1 ~]# mysqldump -u root -p --all-databases > /root/alldb.sql

Enter password:   //验证口令

[root@dbsvr1 mysql]# file /root/alldb.sql   //确认备份文件类型

/root/alldb.sql: UTF-8 Unicode English text, with very long lines

查看备份文件alldb.sql的部分内容:

[root@dbsvr1 ~]# grep -vE '^/|^-|^$' /root/alldb.sql | head -15

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mydb` /*!40100 DEFAULT CHARACTER SET latin1 */;

USE `mydb`;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `mysql`;

DROP TABLE IF EXISTS `columns_priv`;

CREATE TABLE `columns_priv` (

  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',

  `Db` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',

  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',

  `Table_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',

  `Column_name` char(64) COLLATE utf8_bin NOT NULL DEFAULT '',

  `Timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

  `Column_priv` set('Select','Insert','Update','References') CHARACTER SET utf8 NOT NULL DEFAULT '',

  PRIMARY KEY (`Host`,`Db`,`User`,`Table_name`,`Column_name`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Column privileges';

.. ..

注意:若数据库都使用MyISAM存储引擎,可以采用冷备份的方式,直接复制对应的数据库目录即可;恢复时重新复制回来就行。

2)只备份指定的某一个库

将userdb库备份为userdb.sql文件:

[root@dbsvr1 ~]# mysqldump -u root -p userdb > userdb.sql

Enter password:   //验证口令

查看备份文件userdb.sql的部分内容:

[root@dbsvr1 ~]# grep -vE '^/|^-|^$' /root/userdb.sql

DROP TABLE IF EXISTS `userlist`;

CREATE TABLE `userlist` (

  `sn` int(4) NOT NULL AUTO_INCREMENT,

  `username` varchar(24) NOT NULL,

  `password` varchar(48) DEFAULT 'x',

  `uid` int(5) NOT NULL,

  `gid` int(5) NOT NULL,

  `fullname` varchar(48) DEFAULT NULL,

  `homedir` varchar(64) NOT NULL,

  `shell` varchar(24) NOT NULL,

) ENGINE=InnoDB AUTO_INCREMENT=36 DEFAULT CHARSET=utf8;

LOCK TABLES `userlist` WRITE;

.. ..

3)同时备份指定的多个库

同时备份mysql、test、userdb库,保存为mysql+test+userdb.sql文件:

[root@dbsvr1 ~]# mysqldump -u root -p -B mysql test userdb > mysql+test+userdb.sql

Enter password:   //验证口令

查看备份文件userdb.sql的部分内容:

[root@dbsvr1 ~]# grep '^CREATE DATA' /root/mysql+test+userdb.sql

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `test` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `userdb` /*!40100 DEFAULT CHARACTER SET utf8 */;

步骤二:使用mysql命令从备份中恢复数据库、表

以恢复userdb库为例,可参考下列操作。通常不建议直接覆盖旧库,而是采用建立新库并导入逻辑备份的方式执行恢复,待新库正常后即可废弃或删除旧库。

1)创建名为userdb2的新库

mysql> CREATE DATABASE userdb2;

Query OK, 1 row affected (0.00 sec)

2)导入备份文件,在新库中重建表及数据

[root@dbsvr1 ~]# mysql -u root -p userdb2 < /root/userdb.sql

Enter password:   //验证口令

3)确认新库正常,启用新库

mysql> USE userdb2;   //切换到新库

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

 

Database changed

mysql> SELECT sn,username,uid,gid,homedir   //查询数据,确认可用

    -> FROM userlist LIMIT 10;

+----+---------------+-----+-----+------------------------+

| sn | username      | uid | gid | homedir                |

+----+---------------+-----+-----+------------------------+

|  1 | abrt          | 173 | 173 | /etc/abrt              |

|  2 | adm           |   3 |   4 | /var/adm               |

|  3 | apache        |  48 |  48 | /var/www               |

|  4 | avahi-autoipd | 170 | 170 | /var/lib/avahi-autoipd |

|  5 | bin           |   1 |   1 | /bin                   |

|  6 | daemon        |   2 |   2 | /sbin                  |

|  7 | dbus          |  81 |  81 | /                      |

|  8 | ftp           |  14 |  50 | /var/ftp               |

|  9 | games         |  12 | 100 | /usr/games             |

| 10 | gdm           |  42 |  42 | /var/lib/gdm           |

+----+---------------+-----+-----+------------------------+

10 rows in set (0.00 sec)

4)废弃或删除旧库

mysql> DROP DATABASE userdb 1f494 ;

Query OK, 2 rows affected (0.09 sec)

  1. MySQL管理工具
  • 问题

本案例要求基于LAMP平台部署一套phpMyAdmin应用系统,实现对MySQL服务器的Web方式管理。

  • 方案

使用2台RHEL6虚拟机 + 1台Windows 7真机,如图-2所示。其中192.168.4.10是MySQL服务器,授权操作在此服务器上执行;另一台Linux服务器192.168.4.6上部署phpMyAdmin管理平台,实现从浏览器访问的Web管理方式。

图-2

  • 步骤

实现此案例需要按照如下步骤进行。

步骤一:在MySQL服务器上配置用户访问授权

为了实验方便起见,直接以root用户为例,允许其从192.168.4.0/24网段访问,密码设置为1234567。

mysql> GRANT all ON *.* TO root@'192.168.4.%' IDENTIFIED BY '1234567';

Query OK, 0 rows affected (0.00 sec)

步骤二:搭建phpMyAdmin管理平台(192.168.4.6)

phpMyAdmin是以PHP语言开发的一套用来管理MySQL数据库的网页程序,因此需要有支持PHP的网站服务器才能正常使用phpMyAdmin平台。

1)LAMP平台的简易部署

直接以yum方式安装httpd、mysql、php、php-mysql软件包,本例中只需要MySQl客户端程序,无需安装mysql-server:

[root@dbsvr ~]# yum -y install httpd mysql php php-mysql

.. ..

由于RHEL 6未提供php-mbsring包,而phpMyAdmin套件需要相关库文件,因此需要额外下载适用的RPM包(由教员提供),安装时忽略依赖关系即可:

[root@dbsvr ~]# rpm -ivh php-mbstring-5.3.3-26.el6.x86_64.rpm -nodeps

.. ..

完成安装以后,对httpd服务配置稍作调整,启动httpd网站服务:

[root@dbsvr ~]# vim /etc/httpd/conf/httpd.conf

ServerName localhost.localdomain

.. ..

DirectoryIndex  index.php index.html

.. ..

 

[root@dbsvr ~]# service httpd restart

.. ..

2)下载、部署phpMyAdmin套件

访问http://www.phpmyadmin.net/,下载支持多语言的源码程序包phpMyAdmin-4.1.2-all-languages.zip。

将下载回来的源码包解压,并部署到网站目录:

[root@dbsvr ~]# unzip phpMyAdmin-4.1.2-all-languages.zip

[root@dbsvr ~]# mv phpMyAdmin-4.1.2-all-languages /var/www/html/pma

切换到部署后的pma程序目录,拷贝配置文件,并修改配置以正确指定MySQL服务器的IP地址。

[root@dbsvr ~]# cd /var/www/html/pma/

[root@dbsvr pma]# cp config.sample.inc.php config.inc.php

[root@dbsvr pma]# vim config.inc.php

<?php

.. ..

$cfg['Servers'][$i]['host'] = '192.168.4.10';

.. ..

?>

3)从浏览器访问phpMyAdmin系统

在Windows 7客户机中,打开IE网页浏览器,访问部署了phpMyAdmin系统的网站http://192.168.4.6/pma/index.php,即可打开phpMyAdmin管理平台。如图-3所示,输入正确的数据库用户名(如root)及密码登入即可。

图-3

登入成功后,如图-4所示,即可在授权范围内对MySQL数据库进行管理。

图-4

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: