国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

MySQL備份與恢復之熱備(3)

2020-01-18 22:47:38
字體:
來源:轉載
供稿:網友

       在上兩篇文章(MySQL備份與恢復之冷備,MySQL備份與恢復之真實環境使用冷備)中,我們提到了冷備和真實環境中使用冷備。那從這篇文章開始我們看下熱備。顯然熱備和冷備是兩個相對的概念,冷備是把數據庫服務,比如MySQL,Oracle停下來,然后使用拷貝、打包或者壓縮命令對數據目錄進行備份;那么我們很容易想到熱備就是在MySQL或者其他數據庫服務在運行的情況下進行備份。但是,這里存在一個問題,因為生產庫在運行的情況下,有對該庫的讀寫,讀寫頻率有可能高,也可能低,不管頻率高低,總會就會造成備份出來的數據和生產庫中的數據不一致的情況。熱備這段時間,其他人不可以操作是不現實的,因為你總不可能終止用戶訪問Web程序。要解決這個問題,可以采用指定備份策略,比如哪個時間段進行備份,備份哪些數據等等,總之,保證數據的完整性和一致性,切記,備份重于一切!!!
       熱備可以對多個庫進行備份,可以對單張表或者某幾張表進行備份。但是無法同時備份多個庫多個表,只有分開備份。下面我們看下熱備的示意圖,并進行熱備模擬。
示意圖

 

熱備模擬

1、對單個庫進行備份
第一步,移除LVM快照。(如果沒有創建,忽略此步)

[root@serv01 data]# lvremove /dev/data/smydata Do you really want to remove active logical volume smydata? [y/n]: y Logical volume "smydata" successfully removed

第二步,設置MySQL的密碼

mysql> set password=password("123456");Query OK, 0 rows affected (0.00 sec)

第三步,查看MySQL是否啟動。因為是熱備,所以要求MySQL服務啟動

[root@serv01 data]# /etc/init.d/mysqld status SUCCESS! MySQL running (2664)

第四步,導出單個數據庫

[root@serv01 data]# cd /databackup/#本質是導出為SQL[root@serv01 databackup]# mysqldump -uroot -p123456 --database larrydb-- MySQL dump 10.13 Distrib 5.5.29, for Linux (x86_64)---- Host: localhost Database: larrydb-- -------------------------------------------------------- Server version 5.5.29-log/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;/*!40103 SET TIME_ZONE='+00:00' */;/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;---- Current Database: `larrydb`--CREATE DATABASE /*!32312 IF NOT EXISTS*/ `larrydb` /*!40100 DEFAULT CHARACTER SET latin1 */;USE `larrydb`;---- Table structure for table `class`--DROP TABLE IF EXISTS `class`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `class` ( `cid` int(11) DEFAULT NULL, `cname` varchar(30) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=latin1;/*!40101 SET character_set_client = @saved_cs_client */;---- Dumping data for table `class`--LOCK TABLES `class` WRITE;/*!40000 ALTER TABLE `class` DISABLE KEYS */;INSERT INTO `class` VALUES (1,'linux'),(2,'oracle');/*!40000 ALTER TABLE `class` ENABLE KEYS */;UNLOCK TABLES;---- Table structure for table `stu`--DROP TABLE IF EXISTS `stu`;/*!40101 SET @saved_cs_client = @@character_set_client */;/*!40101 SET character_set_client = utf8 */;CREATE TABLE `stu` ( `sid` int(11) DEFAULT NULL, `sname` varchar(30) DEFAULT NULL, `cid` int(11) DEFAULT NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;/*!40101 SET character_set_client = @saved_cs_client */;---- Dumping data for table `stu`--LOCK TABLES `stu` WRITE;/*!40000 ALTER TABLE `stu` DISABLE KEYS */;INSERT INTO `stu` VALUES (1,'larry01',1),(2,'larry02',2);/*!40000 ALTER TABLE `stu` ENABLE KEYS */;UNLOCK TABLES;/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; Dump completed on 2013-09-10 18:56:06#將輸出結果保存到文件中[root@serv01 databackup]# mysqldump -uroot -p123456 --database larrydb > larrydb.sql

第五步,模擬數據丟失,進入MySQL,刪除數據庫

[root@serv01 data]# mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 4Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.mysql> show databases;+--------------------+| Database  |+--------------------+| information_schema || crm  || game  || hello  || larrydb  || mnt  || mysql  || performance_schema || test  |+--------------------+9 rows in set (0.00 sec)mysql> drop database larrydb;Query OK, 2 rows affected (0.01 sec)mysql> show databases;+--------------------+| Database  |+--------------------+| information_schema || crm  || game  || hello  || mnt  || mysql  || performance_schema || test  |+--------------------+8 rows in set (0.00 sec)mysql> exitBye

第六步,導入數據

[root@serv01 databackup]# mysql -uroot -p123456 <larrydb.sql

 
第七步,登錄MySQL,查看數據是否正常

[root@serv01 data]# mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 6Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.mysql> show database;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database' at line 1mysql> show databases;+--------------------+| Database  |+--------------------+| information_schema || crm  || game  || hello  || larrydb  || mnt  || mysql  || performance_schema || test  |+--------------------+9 rows in set (0.00 sec)mysql> use larrydb;Database changedmysql> 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> show databases;+--------------------+| Database  |+--------------------+| information_schema || crm  || game  || hello  || larrydb  || mnt  || mysql  || performance_schema || test  |+--------------------+9 rows in set (0.00 sec)mysql> use game;Database changedmysql> show tables;+----------------+| Tables_in_game |+----------------+| country || fight  || hero  |+----------------+3 rows in set (0.00 sec)mysql> select * from country;+-----+---------+----------+| cno | cname | location |+-----+---------+----------+| 10 | caowei | luoyang || 20 | shuhan | chengdou || 30 | sunwu | nanjing || 40 | houhan | luoyang || 50 | beisong | kaifeng || 60 | 魏國 | 洛陽 |+-----+---------+----------+6 rows in set (0.00 sec)

第二步,備份多個庫

[root@serv01 databackup]# mysqldump -uroot -p123456 --databases larrydb game > larrydb_game.sql[root@serv01 databackup]# ll larrydb_game.sql -rw-r--r--. 1 root root 6159 Sep 10 19:05 larrydb_game.sql

第三步,模擬數據丟失。

mysql> drop database game;Query OK, 3 rows affected (0.01 sec)mysql> drop database larrydb;Query OK, 2 rows affected (0.00 sec)mysql> use crm;Database changedmysql> show tables;+---------------+| Tables_in_crm |+---------------+| test  |+---------------+1 row in set (0.00 sec)mysql> select * from test;Empty set (0.00 sec)mysql> drop database crm;Query OK, 1 row affected (0.00 sec)

第四步,恢復數據

[root@serv01 databackup]# mysql -uroot -p123456 < larrydb_game.sql 

 
第五步,查看數據是否正常

[root@serv01 data]# mysql -uroot -p123456Welcome to the MySQL monitor. Commands end with ; or /g.Your MySQL connection id is 9Server version: 5.5.29-log Source distributionCopyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '/h' for help. Type '/c' to clear the current input statement.mysql> show databases;+--------------------+| Database  |+--------------------+| information_schema || game  || hello  || larrydb  || mnt  || mysql  || performance_schema || test  |+--------------------+8 rows in set (0.00 sec)mysql> use game;Database changedmysql> select * from country;+-----+---------+----------+| cno | cname | location |+-----+---------+----------+| 10 | caowei | luoyang || 20 | shuhan | chengdou || 30 | sunwu | nanjing || 40 | houhan | luoyang || 50 | beisong | kaifeng || 60 | 魏國 | 洛陽 |+-----+---------+----------+6 rows in set (0.00 sec)mysql> use larrydb;Database changedmysql> select * from class;+------+--------+| cid | cname |+------+--------+| 1 | linux || 2 | oracle |+------+--------+2 rows in set (0.00 sec)

 
備份所有的庫

[root@serv01 databackup]# mysqldump --help | grep all-databaseOR mysqldump [OPTIONS] --all-databases [OPTIONS] -A, --all-databases Dump all the databases. This will be same as --databases   --databases= or --all-databases), the logs will be   --all-databases or --databases is given.all-databases   FALSE[root@serv01 databackup]# mysqldump -uroot -p123456 --all-databases > all_databases.sql[root@serv01 databackup]# ll all_databases.sql -h-rw-r--r--. 1 root root 506K Sep 10 19:16 all_databases.sql

備份某張表或者某幾張表
第一步,備份某張表和某幾張表

[root@serv01 databackup]# mysqldump game hero country -uroot -p123456 > game_hero_country.sql[root@serv01 databackup]# ll game_hero_country.sql -rw-r--r―. 1 root root 3955 Sep 10 19:11 game_hero_country.sql

第二步,模擬數據丟失

mysql> use game;Database changedmysql> show tables;+----------------+| Tables_in_game |+----------------+| country || fight  || hero  |+----------------+3 rows in set (0.00 sec)mysql> drop table hero;Query OK, 0 rows affected (0.00 sec)mysql> drop table country;Query OK, 0 rows affected (0.00 sec) 

第三步,查看數據是否正常

[root@serv01 databackup]# mysql -uroot -p123456 < game_hero_country.sql ERROR 1046 (3D000) at line 22: No database selected[root@serv01 databackup]# mysql -uroot -p123456 --database game < game_hero_country.sql [root@serv01 databackup]# mysql -uroot -p123456 -e "select * from game.country"+-----+---------+----------+| cno | cname | location |+-----+---------+----------+| 10 | caowei | luoyang || 20 | shuhan | chengdou || 30 | sunwu | nanjing || 40 | houhan | luoyang || 50 | beisong | kaifeng || 60 | 魏國 | 洛陽 |+-----+---------+----------+

通過這兩天關于MySQL熱備和冷備的學習,大家是不是對MySQL備份與恢復的了解更加深入了,不管是冷備還是熱備其目的都是一致的保證數據的完整性和一致性,切記,備份重于一切!!!

相信今天所學的知識在之后的學習工作中對大家有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大同市| 永定县| 景宁| 饶河县| 乌拉特前旗| 文安县| 齐齐哈尔市| 塔城市| 视频| 乌兰浩特市| 荥经县| 杭锦后旗| 五指山市| 兴文县| 桂林市| 淮北市| 清水河县| 夹江县| 麻江县| 紫金县| 武邑县| 金阳县| 武冈市| 抚顺县| 饶河县| 邵阳县| 德令哈市| 黑山县| 太保市| 盖州市| 土默特左旗| 肃宁县| 汾阳市| 甘洛县| 渑池县| 成安县| 长汀县| 肥东县| 邵东县| 宁津县| 辉县市|