真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysqldump+binlog的備份與恢復和xtrabackup備份工具

數(shù)據(jù)備份類型

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為雨山等服務建站,雨山等地企業(yè),進行企業(yè)商務咨詢服務。為雨山企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

按業(yè)務劃分:可分為完全備份,增量備份,差異備份。

完全備份:就是對整個數(shù)據(jù)庫的數(shù)據(jù)和數(shù)據(jù)結構進行備份,好處是很直觀,容易被人理解。不足之處:由于每天都對系統(tǒng)進行完全備份,因此在備份數(shù)據(jù)中大量是重復的,這些重復數(shù)據(jù)占用空間,增加成本,備份量大,所需時間長。

增量備份:就是每次備份的數(shù)據(jù)只是相當于上一次備份后增加和修改過的數(shù)據(jù)。優(yōu)點:沒有重復的數(shù)據(jù),節(jié)省空間,縮短備份時間。缺點:發(fā)生災難時,恢復數(shù)據(jù)麻煩。另外這種備份的可靠性也差,在這種備份下,各備份數(shù)據(jù)間的關系就像鏈子一樣,一環(huán)套一環(huán),其中任何一個備份數(shù)據(jù)出了問題都會導致整條鏈子脫節(jié)。

差異備份:就是每次備份的數(shù)據(jù)是相對于上一次全備份之后新增加的和修改過的數(shù)據(jù)。

數(shù)據(jù)備份方式:可分為熱備,溫備,冷備。

熱備份:是指在數(shù)據(jù)庫運行中直接備份,對正在運行的數(shù)據(jù)庫沒有任何影響。

冷備份:是指在數(shù)據(jù)庫停止的情況下進行的備份,這種備份最為簡單,一般只需要拷貝相關的數(shù)據(jù)庫物理文件即可。

溫備份:備份同樣是在數(shù)據(jù)庫運行時進行,但是會對當前數(shù)據(jù)庫的操作有所影響,例如加一個全局讀鎖以保證備份數(shù)據(jù)的一致性。

備份流程圖

mysqldump+binlog的備份與恢復和xtrabackup備份工具

MySQL備份工具介紹

mysqldump:邏輯備份工具,適用于所有存儲引擎,可用于溫備,能實現(xiàn)完全備份,部分備份,對IonoDB存儲引擎支持熱備;

cp,tar等文件系統(tǒng)工具:物理備份工具,適用于所有存儲引擎,用于冷備,能實現(xiàn)完全備份,部分備份;

lvm2的快照:備幾乎熱,借助于文件系統(tǒng)工具實現(xiàn)物理備份。

mysqlhotcopy:幾乎冷備,僅適用于myisam存儲引擎;

mysqldump+binlog實現(xiàn)數(shù)據(jù)庫的備份與恢復

1.準備備份目錄

[root@centos7 ~]# mkdir  -p  /backup/binlog

2.準備備份的數(shù)據(jù)庫及表

MariaDB [(none)]> create database datas;
Query OK, 1 row affected (0.05 sec)
MariaDB [(none)]> use datas;
Database changed
MariaDB [datas]> create table tb1 (id int,name char(20));
Query OK, 0 rows affected (0.41 sec)
MariaDB [datas]> desc tb1;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | int(11)  | YES  |     | NULL    |       |
| name  | char(20) | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
MariaDB [datas]> insert into tb1 values (11,'haha')
    -> ;
Query OK, 1 row affected (0.03 sec)

MariaDB [datas]> select * from tb1;
+------+------+
| id   | name |
+------+------+
|   11 | haha |
+------+------+
1 row in set (0.00 sec)

3.對數(shù)據(jù)庫進行完整備份

[root@centos7 ~]# mysqldump --all-databases --lock-all-tables --flush-log --master-data=2 > /backup/`date +%F_%T`-all.sql
--lock-all-tables:鎖定所有表
--flush-logs:鎖定表之后執(zhí)行flush logs命令
--master-data={0|1|2}
0:不記錄
1:記錄change master to語句;此語句未被注釋
2:記錄為注釋語句

4.向表中插入數(shù)據(jù)

MariaDB [datas]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 |      245 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [datas]> insert into tb1 values (12,'hehe'),(13,'yaya');
Query OK, 2 rows affected (0.23 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [datas]> select * from tb1;
+------+------+
| id   | name |
+------+------+
|   11 | haha |
|   12 | hehe |
|   13 | yaya |
+------+------+
3 rows in set (0.00 sec)

5.進行增量備份,備份二進制日志

[root@centos7 mysql]# mysqlbinlog --start-position=245 --stop-position=451 mysql-bin.000008> /backup/binlog/`date +%F_%T`.sql
[root@centos7 mysql]# cd  /backup/binlog/
[root@centos7 binlog]# ls
2017-12-03_16:43:29.sql

6.繼續(xù)插入數(shù)據(jù),在沒備份的情況下刪除數(shù)據(jù)庫,模擬誤操作。

MariaDB [datas]> insert into tb1 values (16,'yuyu');
Query OK, 1 row affected (0.00 sec)

MariaDB [datas]> drop database datas;
Query OK, 1 row affected (0.09 sec)

7.恢復數(shù)據(jù),由于在最后沒有備份就刪除了數(shù)據(jù)庫,所以我們首先需要保護最后的二進制日志,查看刪除之前的position值。

[root@centos7 binlog]# cd  /var/lib/mysql/
[root@centos7 mysql]# mysqlbinlog  mysql-bin.000008
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#171203 16:35:29 server id 2  end_log_pos 245     Start: binlog v 4, server v 5.5.52-MariaDB created 171203 16:35:29 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
UbcjWg8CAAAA8QAAAPUAAAABAAQANS41LjUyLU1hcmlhREIAbG9nAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABRtyNaEzgNAAgAEgAEBAQEEgAA2QAEGggAAAAICAgCAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAikwNAA==
'/*!*/;
# at 245
#171203 16:36:38 server id 2  end_log_pos 314     Query    thread_id=2    exec_time=0    error_code=0
SET TIMESTAMP=1512290198/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=0/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at 314
#171203 16:36:38 server id 2  end_log_pos 424     Query    thread_id=2    exec_time=0    error_code=0
use `datas`/*!*/;
SET TIMESTAMP=1512290198/*!*/;
insert into tb1 values (14,'hehe'),(15,'yaya')
/*!*/;
# at 424
#171203 16:36:38 server id 2  end_log_pos 451     Xid = 10
COMMIT/*!*/;
# at 451
#171203 16:54:34 server id 2  end_log_pos 520     Query    thread_id=3    exec_time=0    error_code=0
SET TIMESTAMP=1512291274/*!*/;
BEGIN
/*!*/;
# at 520
#171203 16:54:34 server id 2  end_log_pos 618     Query    thread_id=3    exec_time=0    error_code=0
SET TIMESTAMP=1512291274/*!*/;
insert into tb1 values (16,'yuyu')
/*!*/;
# at 618
#171203 16:54:34 server id 2  end_log_pos 645     Xid = 20
COMMIT/*!*/;
# at 645
#171203 16:54:56 server id 2  end_log_pos 728     Query    thread_id=3    exec_time=0    error_code=0
SET TIMESTAMP=1512291296/*!*/;
drop database datas
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

 將最后的二進制日志備份

[root@centos7 mysql]# mysqlbinlog --start-position=520 --stop-position=645  mysql-bin.000008> /backup/binlog/`date +%F_%T`.sql

8.導入之前的所有備份

[root@centos7 ~]# mysql < /backup/2017-12-03_15\:05\:00-all.sql 
[root@centos7 ~]# mysql < /backup/binlog/2017-12-03_16\:43\:29.sql 
[root@centos7 ~]# mysql < /backup/binlog/2017-12-03_16\:51\:11.sql
[root@centos7 ~]# mysql < /backup/binlog/2017-12-03_17\:10\:02.sql

9.查看數(shù)據(jù)庫及數(shù)據(jù)

MariaDB [datas]> select * from tb1;
+------+------+
| id   | name |
+------+------+
|   11 | haha |
|   14 | hehe |
|   15 | yaya |
|   12 | hehe |
|   13 | yaya |
|   16 | yuyu |
+------+------+
6 rows in set (0.00 sec)

數(shù)據(jù)已經(jīng)全部恢復了。

xtrabackup的數(shù)據(jù)庫備份與恢復

xtrabackup是由percona提供的mysql數(shù)據(jù)庫備份工具,是一款開源能夠對innodb和xtradb數(shù)據(jù)庫進行熱備的工具。

特點:

(1)備份過程快速,可靠。

(2)備份過程不會打斷正在執(zhí)行的事務

(3)能夠基于壓縮等功能節(jié)約磁盤空間和流量

(4)自動實現(xiàn)備份檢驗

(5)還原速度快

安裝

[root@centos7 ~]# yum install xtrabackup

完全備份

[root@centos7 backup]# innobackupex --user=root /backup/

如果想要給備份的用戶設置權限,可以創(chuàng)建最小權限的備份用戶

MariaDB [(none)]> grant reload,lock tables,replication client on *.* to 'backuser'@'localhost' identified by '123456';
Query OK, 0 rows affected (0.07 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.04 sec)

增量備份

每個InnoDB的頁面都會包含一個存儲信息,每當相關的數(shù)據(jù)發(fā)生改變,相關的頁面的存儲就會自動增長。這正是InnoDB表可以進行增量備份的基礎,即innobackupex通過備份上次完全備份之后發(fā)生改變的頁面來實現(xiàn)。

innobackupex命令會在備份目錄中創(chuàng)建一個新的以時間命名的目錄以存放所有的增量備份數(shù)據(jù),另外,在執(zhí)行過增量備份之后再一次進行增量備份時,其--incremental-basedir應該指向上一次的增量備份所在的目錄。

注:增量備份僅能應用于InniDB或XtraDB表,對于MyISAM表而言,執(zhí)行增量備份時其實進行的是完全備份。

添加數(shù)據(jù)

MariaDB [datas]> insert into tb1 values (17,'laoshi');
Query OK, 1 row affected (0.00 sec)

MariaDB [datas]> insert into tb1 values (18,'jiangchen');
Query OK, 1 row affected (0.00 sec)

MariaDB [datas]> select * from tb1;
+------+-----------+
| id   | name      |
+------+-----------+
|   11 | haha      |
|   14 | hehe      |
|   15 | yaya      |
|   12 | hehe      |
|   13 | yaya      |
|   16 | yuyu      |
|   17 | laoshi    |
|   18 | jiangchen |
+------+-----------+
8 rows in set (0.00 sec)

增量備份

[root@centos7 2017-12-03_18-08-41]# innobackupex --user=root --incremental /backup --incremental-basedir=/backup/2017-12-03_18-08-41
[root@centos7 backup]# ls
2017-12-03_18-08-41  2017-12-03_18-36-10

數(shù)據(jù)恢復準備
一般情況下,在備份完成后,數(shù)據(jù)尚且不能用于恢復操作,因為備份的數(shù)據(jù)中可能會包含尚未提交的事務或已經(jīng)提交但尚未同步至數(shù)據(jù)文件中的事務。因此,此時數(shù)據(jù)文件仍處理不一致狀態(tài)。“準備”的主要作用正是通過回滾未提交的事務及同步已經(jīng)提交的事務至數(shù)據(jù)文件也使得數(shù)據(jù)文件處于一致性狀態(tài)“準備”(prepare)增量備份與整理完全備份有著一些不同,尤其要注意的是:
(1)需要在每個備份(包括完全和各個增量備份)上,將已經(jīng)提交的事務進行“重放”。“重放”之后
,所有的備份數(shù)據(jù)將合并到完全備份上。
(2)基于所有的備份將未提交的事務進行“回滾”。
數(shù)據(jù)恢復準備:執(zhí)行操作

[root@centos7 backup]# innobackupex --apply-log --redo-only /backup/2017-12-03_18-08-41/

接著執(zhí)行增量

[root@centos7 backup]# innobackupex --apply-log --redo-only /backup/2017-12-03_18-08-41/  --inctrmental-dir=/backup/2017-12-03_18-36-10
/backup/2017-12-03_18-08-41/(完全備份的目錄)
/backup/2017-12-03_18-36-10(第一次增量所在的目錄)

恢復階段,還原數(shù)據(jù)

[root@centos7 mysql]# innobackupex --copy-back /backup/2017-12-03_18-08-41/
[root@centos7 mysql]# chown -R mysql.mysql  /var/lib/mysql
[root@centos7 mysql]# systemctl restart mariadb



 


























分享標題:mysqldump+binlog的備份與恢復和xtrabackup備份工具
URL網(wǎng)址:http://weahome.cn/article/jhhsec.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部