数据备份与恢复
本案例要求熟悉MySQL的备份与恢复,完成以下任务操作:
- 使用mysqldump备份数据库
- 使用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)
- 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
- MongoDB 数据文件备份与恢复
- Oracle10g数据泵EXPDP和IMPDP备份与恢复数据
- 使用XtraBackup恢复|备份 Mysql数据库 -- 数据恢复篇
- laravel 数据库备份和数据恢复
- 使用SQL语句备份与恢复数据库
- 数据备份方法及灾难恢复探讨
- MongoDB数据文件备份与恢复
- 在有全库备份的情况下恢复数据文件
- elasticsearch数据备份与还原恢复
- [Redis学习笔记]-Redis 数据备份与恢复
- SQL2005恢复只有mdf文件的数据库 自动备份数据
- 拥有所有归档文件,但没有备份情况下的数据文件恢复
- ArcSDE 8.1中空间数据的备份与恢复
- ip变更造成的redis集群不可用的解决及数据备份和恢复
- adb备份恢复指定程序数据
- 备份与恢复系列 九 丢失表空间数据文件的还原与恢复
- ORACLE模拟一个数据文件坏块并使用RMAN备份来恢复
- DBA成长之路---mysql数据备份与恢复
- mongdb的数据备份与恢复
- Oracle基础(九):数据备份与恢复、死锁等