數據庫備份,數據庫為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 備份?
有待完善。
?
?