MySQL學習(5)數據庫備份

數據庫備份,數據庫為school,素材如下

1.創建student和score表

CREATE? TABLE? student (

id? INT(10)? NOT NULL? UNIQUE? PRIMARY KEY? ,

name? VARCHAR(20)? NOT NULL ,

sex? VARCHAR(4)? ,

birth? YEAR,

department? VARCHAR(20) ,

address? VARCHAR(50)?

);

創建score表。SQL代碼如下:

CREATE? TABLE? score (

id? INT(10)? NOT NULL? UNIQUE? PRIMARY KEY? AUTO_INCREMENT ,

stu_id? INT(10)? NOT NULL ,

c_name? VARCHAR(20) ,

grade? INT(10)

);

2.為student表和score表增加記錄

向student表插入記錄的INSERT語句如下:

INSERT INTO student VALUES( 901,'張老大', '男',1985,'計算機系', '北京市海淀區');

INSERT INTO student VALUES( 902,'張老二', '男',1986,'中文系', '北京市昌平區');

INSERT INTO student VALUES( 903,'張三', '女',1990,'中文系', '湖南省永州市');

INSERT INTO student VALUES( 904,'李四', '男',1990,'英語系', '遼寧省阜新市');

INSERT INTO student VALUES( 905,'王五', '女',1991,'英語系', '福建省廈門市');

INSERT INTO student VALUES( 906,'王六', '男',1988,'計算機系', '湖南省衡陽市');

向score表插入記錄的INSERT語句如下:

INSERT INTO score VALUES(NULL,901, '計算機',98);

INSERT INTO score VALUES(NULL,901, '英語', 80);

INSERT INTO score VALUES(NULL,902, '計算機',65);

INSERT INTO score VALUES(NULL,902, '中文',88);

INSERT INTO score VALUES(NULL,903, '中文',95);

INSERT INTO score VALUES(NULL,904, '計算機',70);

INSERT INTO score VALUES(NULL,904, '英語',92);

INSERT INTO score VALUES(NULL,905, '英語',94);

INSERT INTO score VALUES(NULL,906, '計算機',90);

INSERT INTO score VALUES(NULL,906, '英語',85);

1.備份數據庫school到/backup目錄?

先創建目錄

2.備份MySQL數據庫為帶刪除表的格式,能夠讓該備份覆蓋已有數據庫而不需要手動刪除原有數據庫?

3.直接將MySQL數據庫壓縮備份?

4.備份MySQL數據庫某個(些)表。此例備份student表?

5.同時備份多個MySQL數據庫(其他數據庫素材自行準備)?

db1 為 其他數據庫,這里沒有該數據庫,如果想要實現,則進去mysql自行新建

6.僅僅備份數據庫結構?

7.備份服務器上所有數據庫?

8.還原MySQL數據庫?

刪除數據庫school

創建數據庫school,再繼續恢復。進去mysql,查看數據庫。

9.還原壓縮的MySQL數據庫?

?

10.使用mydumper備份數據庫?

注意事項:這個環境mysql是通過二進制格式安裝,所以在安裝mydumper過程中需要安裝的輔助包不同,但是解決辦法大同小異,就是安裝所需的包。另外我這里并沒有展示mysql中恢復的效果。

1.下載壓縮包

鏈接:https://pan.baidu.com/s/1C8slO4rKuCIvkLfZawnyyg
提取碼:yang

2.將壓縮包添加到系統中去(包很小)

3。解壓

tar xf mydumper-0.9.1.tar.gz -C /usr/local/src/

4.進入解壓的目錄文件

cd /usr/local/src/mydumper-0.9.1/

5.安裝輔助軟件

yum install gcc gcc-c++ make cmake -y

yum install glib2-devel pcre-devel -y

yum install zlib-devel -y

6.?? cmake .??? 測試

7 make make install

8.查看PATH并測試能否正常使用。

echo $PATH

?mydumper --help 測試一下可以用不,有可能會報以下錯誤!

報錯信息:

mydumper: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解決辦法:https://www.cnblogs.com/gczheng/p/9323327.html

# locate  libmysqlclient.so.20
# ll /usr/local/mysql/lib/
# cp /usr/local/mysql/lib/libmysqlclient.so.20 /usr/lib/
# ldconfig
# ldd /usr/local/bin/mydumper
# mydumper --help

依次輸入以上的命令即可。

再次 ?mydumper --help 試一下

9.實現簡單的數據庫備份。

mydumper -u root -p 123456 -B school -o /mysqlbak

11.使用mydumper恢復數據庫

myloader -u root -p 123456 -B school -o -d /mysqlbak/

恢復完成。

11.使用xtrabackup 備份數據庫?

1.安裝軟件

注意事項:這個環境的mysql是通過rpm方式安裝。

先安裝:yum install mysql-community-libs-compat-5.7.14-1.el7.x86_64.rpm

其次安裝:yum install perl-DBD-MySQL-4.023-6.el7.x86_64.rpm

最后安裝:yum install? percona-xtrabackup-24-2.4.8-1.el7.x86_64.rpm

遵循次序安裝,避免依賴錯誤。

如果出現:需要:libev.so.4()(64bit),則要自行對其升級

解決方法:https://www.laozuo.org/11514.html

wget ftp://rpmfind.net/linux/atrpms/el6-x86_64/atrpms/stable/libev-4.04-2.el6.x86_64.rpm

rpm -ivh libev-4.04-2.el6.x86_64.rpm

升級完成。

安裝完成。

2.備份數據庫

完全備份:

innobackupex -u root -p 123456 /backup/mysql/

備份標簽可自行修改

innobackupex -u root -p 123456 --no-timestamp /backup/mysql/full_$(date +%F)

完全恢復:

innobackupex -u root -p 123456 --apply-lohs full_2021-01-19/

innobackupex -u root -p 123456 --copy-back full_2021-01-19/

可能會需要 rm -rf /var/lib/mysql/*

停止數據庫# systemctl stop mysqld

增加權限:

chown -R mysql.mysql? /var/lib/mysql? 路徑不唯一

啟動服務:

systemctl start mysqld

systemctl enable mysqld

或? systemctl start mysqld

有可能會出現錯誤:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我們先查詢mysql進程號,然后殺死。

ps -aux | grep mysql

重新啟動服務,大概率就進去了

增量備份:

建立數據庫

create database school DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

建立新表

CREATE TABLE `Student` (`Sno`int(10)?? NOT? NULL? COMMENT'學號',

`Sname`varchar(16) NOT? NULL? COMMENT? '姓名',

`Ssex`char(2) NOT? NULL? COMMENT? '性別',

`Sage`tinyint(2) NOT? NULL? DEFAULT? '0' ? COMMENT'學生年齡',

`Sdept`varchar(16) DEFAULT'NULL'COMMENT'學生所在系別',

PRIMARY? KEY (`Sno`)) ENGINE=InnoDB?? AUTO_INCREMENT=1? DEFAULT? CHARSET=utf8;

插入新數據:

INSERT INTO Student values(0007,'孟非','男',21,'播音主持'),(0008,'許三多','男',31,'影視表演');

備份:

innobackupex --incremental -u root -p 123456 --no-timestamp /backup/mysql/incr_1 --incremental-basedir=/backup/mysql/full_2021-01-19/

要注意上一次備份路徑的不同

我們再一次插入數據,再備份一次

INSERT? INTO Student values(0009,'張藝謀','男',61,'導演專業'),(0010,'徐靜蕾','女',36,'導演專業');

innobackupex --incremental -u root -p 123456 --no-timestamp /backup/mysql/incr_2 --incremental-basedir=/backup/mysql/incr_1/

首先恢復全備

innobackupex -u root -p 123456 --apply-log --redo-only /backup/mysql/full_2021-01-19/??? 全備是空的,沒有任何數據

恢復第一次增量備份

innobackupex -u root -p 123456 --apply-log --redo-only /backup/mysql/full_2021-01-19/ --incremental-dir=/backup/mysql/incr_1

恢復第二次增量備份

innobackupex -u root -p 123456 --apply-log --redo-only /backup/mysql/full_2021-01-19/ --incremental-dir=/backup/mysql/incr_2

停止數據庫

systemctl stop mysql

rm -rf /var/lib/mysql/*

innobackupex -u root -p 123456 --copy-back? --redo-only /backup/mysql/full_2021-01-19/

添加權限:

chown -R mysql.mysql /var/lib/mysql

啟動服務:

systemctl start mysqld

systemctl enable mysqld

或 systemctl start mysqld

有可能會出現錯誤:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

我們先查詢mysql進程號,然后殺死。

ps -aux | grep mysql

重新啟動服務,大概率就進去了

12.在另外的數據庫服務器上還原xtrabackup 備份?

有待完善。

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/534376.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/534376.shtml
英文地址,請注明出處:http://en.pswp.cn/news/534376.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL(查看數據文件目錄)

show global variables like %datadir%;

mysql在rpm安裝方式下查看隨機生成密碼命令

mysql安裝成功后創建的超級用戶rootlocalhost的密碼會被存儲在/var/log/mysqld.log grep temporary password /var/log/mysqld.log

MySQL(6)視圖

步驟1:創建學生表stu,插入3條記錄。 CREATE TABLE stu ( s_id INT PRIMARY KEY, s_name VARCHAR(20), addr VARCHAR(50), tel VARCHAR(50) ); INSERT INTO stu VALUES(1,XiaoWang,Henan,0371-12345678), (2,XiaoLi,Hebei,13889072345), (3…

MySQL(7)索引

表結構如下: writers表結構 字段名 數據類型 主鍵 外鍵 非空 唯一 自增 w_id SMALLINT(11) 是 否 是 是 是 w_name VARCHAR(255) 否 否 是 否 否 w_address VARCHAR(255) 否 否 否 否 否 w_age CHAR(2) 否 否 是 否 否 w_note VARCHAR(255) 否 否 否 否 否 …

MySQL(8)存儲過程和函數

字段名 數據類型 主鍵 外鍵 非空 唯一 自增 id INT 是 否 是 是 否 name VARCHAR(50) 否 否 是 否 否 glass VARCHAR(50) 否 否 是 否 否 mysql> create table sch (-> id int primary key not null unique,-> name varchar(5…

MySQL(9)主從復制和讀寫分離

1.理解MySQL主從復制原理。 復制是MySQL提供的一直高可用、高性能的解決方案,一般用來建立大型的應用,總體來說,分為以下三步: (1)master將改變記錄到二進制日志(binary log)中(這些記錄叫做二進制日志事件&#x…

NoSQL(1)

1、簡述redis應用場景。 Redis 概念:Redis(Remote Dictionary Server),即遠程字典服務,是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫。特征: 數據間沒有必然的聯系內部…

NoSQL(2)

1、string list hash結構中,每個至少完成5個命令,包含插入 修改 刪除 查詢,list 和hash還需要增加遍歷的操作命令 1、 Keys相關的命令操作: (1) 查看key是否存在: EXISTS name #判斷該鍵是…

NoSQL(3)

1、什么是MongoDB ? MongoDB 是由C語言編寫的,是一個基于分布式文件存儲的開源數據庫系統。 在高負載的情況下,添加更多的節點,可以保證服務器性能。 MongoDB 旨在為WEB應用提供可擴展的高性能數據存儲解決方案。 MongoDB 將數據存儲為…

Python二級筆記(1)

操作題 1,寬度為30字符,星號字符填充,居中對齊。如果輸入字符串超30位,則全部輸出。 例如:鍵盤輸入字符串q為‘abcd’,屏幕輸出abcd 代碼: s input(請輸入一個字符串:) print({:*^30}.form…

Python二級筆記(2)

知識點: 1,鏈表可以是線性結構也可以是非線性結構 線性表的鏈式存儲結構稱為線性鏈表;鏈表上一種物理存儲單元上非連續,非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的,鏈表可以說…

Python二級筆記(3)

知識點: 1,排序可以在不同的存儲結構上實現,但快速排序法適于順序存儲的線性表,不適用于鏈式存儲的線性表。 堆棧序適用于線性結構,不適用于非線性結構 2,基本路徑測試根據軟件過程性描述中的控制流確定程…

軟件工程學簡述

軟件危機 軟件危機是指計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。(考試中名詞解釋或者選擇題為主) 軟件危機的典型表現 (1)對軟件開發成本和進度的估計常常很不準確。 (2)用戶對“已完成的…

Python二級筆記(4)

知識點&#xff1a; 1&#xff0c;冒泡排序、快速排序、簡單插入排序、簡單選擇排序在最壞情況下比較次數均為n(n-1)/2&#xff0c;堆排序在最壞情況下比較次數為nlog(2↓)n,在最壞情況下希爾排序需要比較的次數是n(↑r)&#xff08;1<r<2&#xff09;。 2&#xff0c;…

Python二級筆記(5)

知識點&#xff1a; 1&#xff0c;樹的度&#xff0c;及樹中存在的最大度數&#xff1b;如樹的度為3&#xff0c;即樹中只存在度為0&#xff0c;1&#xff0c;2&#xff0c;3的結點。 2&#xff0c;設循環隊列的存儲空間為Q&#xff08;1:m&#xff09;,初始狀態為空。在循環…

Qt圖形界面編程入門(1)

一、類和對象 1&#xff0c;面向過程程序設計&#xff08;自頂向下設計&#xff09; 分析出解決問題所需的步驟&#xff0c;然后用函數把這些步驟一一實現&#xff0c;使用的時候一個一個調用 過程式設計對于比較復雜的問題&#xff0c;或是在開發中需求變化比較多的時候&am…

Qt圖形界面編程入門(2)

二&#xff0c;指針和引用 共同點&#xff1a;它們都代表其他變量占據的某一塊內存區&#xff0c;通過指針或引用都可以對他們代表的其他變量進行操作。 以下語句利用指針對變量賦值&#xff1a; int m; int *p; //指針定義 p &m; //將m的內存地址賦給p *p 5;…

Qt圖形界面編程入門(3)

公有成員和私有成員 從訪問權限上分&#xff0c;類的成員又分為&#xff1a;公有成員&#xff08;public&#xff09;、私有成員&#xff08;private&#xff09;和保護成員&#xff08;protected&#xff09;三類。 公有成員用public來說明。這部分成員可以在程序中通過“…

Qt圖形界面編程入門(4)

構造函數和析構函數 構造函數是一個與類同名的特殊的公有成員函數。 創建類對象時構造函數會被調用&#xff0c;且只調用一次/ 構造函數無返回類型。 默認構造函數格式&#xff1a; 類名&#xff08;&#xff09;{.......} Account(){ //無返回類型&#xff0c;無參數I…

Qt圖形界面編程入門(5)

三&#xff0c;繼承和多態 繼承是定義新類的一種機制&#xff0c;使用這種機制創建新類時只需要聲明新類和已創建類之間的差別 對應一個繼承關系&#xff0c;創建的新類稱為子類&#xff0c;被繼承的類稱為父類或基類。子類可以使用父類定義的屬性和方法&#xff0c;也可以…