日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL常见备份与恢复方案

發布時間:2025/3/21 数据库 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL常见备份与恢复方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

MySQL常見備份方案有以下三種:

mysqldump + binlog

lvm + binlog

xtrabackup

本例為方便演示,數據庫里面數據為空。下面開始動手

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

mkdir?/opt/backup????????????????????????????????#創建備份目錄

mkdir?-p?/data/3309/{data,binlog}????

cd?/usr/local/mysql/

scripts/mysql_install_db?--user=mysql?--datadir=/data/3309/data/?--basedir=/usr/local/mysql/

chown?mysql.mysql?-R?/data/3309/

cp?support-files/my-small.cnf?/data/3309/my.cnf???#提供配置文件

??

vim?/data/3309/my.cnf?????????????????????????????#編輯配置文件

[client]

#password???????=?your_password

port????????????=?3309

socket??????????=?/tmp/mysql.sock4

#?The?MySQL?server

[mysqld]

port????????????=?3309

socket??????????=?/tmp/mysql.sock4

skip-external-locking

key_buffer_size?=?16K

max_allowed_packet?=?1M

table_open_cache?=?4

sort_buffer_size?=?64K

read_buffer_size?=?256K

read_rnd_buffer_size?=?256K

net_buffer_length?=?2K

thread_stack?=?128K

datadir?=?/data/3309/data

server-id???????=?3309

log-bin=/data/3309/binlog/mysql-bin???#二進制日志位置

binlog_format=mixed???????????????#二進制日志格式

log-error?=?/data/3309/mysql-err???????#錯誤日志位置

innodb_file_per_table?=?1????????????#為每一個新數據表創建一個表空間文件

sync_binlog?=?1????????????????????#寫二進制日志的時候,同步到磁盤上面

??

cp?/data/3309/my.cnf?/opt/backup/???#備份配置文件

mysqld_safe?--defaults-file=/data/3309/my.cnf?&??#啟動mysql

1、利用mysqldump完全備份mysql,配合二進制日志備份實現增量備份

mysqldump 選項請參考http://wangweiak47.blog.51cto.com/2337362/1589304

1.1提供模擬數據

1

2

3

4

5

6

7

8

mysql?-S?/tmp/mysql.sock4???#連接mysql

mysql>?use?test;

Database?changed

mysql>?create?table?test?(id?int(2),comment?char(30));??#創建表

Query?OK,?0?rows?affected?(0.34?sec)

??

mysql>?insert?into?test?values?(1,'yun?zhonghe');??#插入數據

Query?OK,?1?row?affected?(0.16?sec)

1.2全量備份:

1

mysqldump?-S?/tmp/mysql.sock4?-A?-B?-F?-x?--events?--triggers?--routines?--master-data=2?>?/opt/backup/all_data-`date?+%F--%U`.sql

1.3 模擬數據發生改變

1

2

mysql>?insert?into?test?values?(2,'yun?zhonghe2');????#再插入一條數據。

Query?OK,?1?row?affected?(0.11?sec)

1.4 增量備份

1

2

mysqladmin?-S?/tmp/mysql.sock4?flush-logs???#增量備份前,先滾動一下二進制日志。

cp?`cat?/data/3309/binlog/mysql-bin.index?|?tail?-n?2?|?head?-n?1`?/opt/backup/???#備份二進制日志

1.5 數據損壞

1

2

rm?-rf?/data/3309/

killall?mysqld

1.6 恢復

上面已經提供了步驟,直接復制過來使用。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

mkdir?-p?/data/3309/{data,binlog}

cd?/usr/local/mysql/

scripts/mysql_install_db?--user=mysql?--datadir=/data/3309/data/?--basedir=/usr/local/mysql/

cp?/opt/backup/my.cnf?/data/3309/

chown?mysql.mysql?-R?/data/3309/

mysqld_safe?--defaults-file=/data/3309/my.cnf?&???

??

mysql?-S?/tmp/mysql.sock4?????#連接mysql查看數據

mysql>?set?sql_log_bin=0;

Query?OK,?0?rows?affected?(0.00?sec)

??

mysql>?show?variables?like?'sql_log_bin';

+---------------+-------+

|?Variable_name?|?Value?|

+---------------+-------+

|?sql_log_bin???|?OFF???|

+---------------+-------+

1?row?in?set?(0.00?sec)

??

mysql>?source?/opt/backup/all_data-2015-10-01--39.sql

??

mysql>?select?*?from?test.test;???#還缺一個數據

+------+-------------+

|?id???|?comment?????|

+------+-------------+

|????1?|?yun?zhonghe?|

+------+-------------+

1?row?in?set?(0.00?sec)?

??

mysql>?source?/tmp/incres-1.sql;

??

mysql>?select?*?from?test.test;???#數據已恢復

+------+--------------+

|?id???|?comment??????|

+------+--------------+

|????1?|?yun?zhonghe??|

|????2?|?yun?zhonghe2?|

+------+--------------+

2?rows?in?set?(0.00?sec)

??

mysql>?set?sql_log_bin?=?1;??#打開二進制記錄開關。

1.7小結,mysqldump適合于數據量較小的場合,它的優點是有眾多選項,使用起來非常靈活,缺點是數據量一旦過大,非常耗時耗力。

2、使用lvm進行全備。

lvm快照卷原理參考

http://baike.baidu.com/link?url=iEpO_zm_AbHbk-ijQa8jNcFRoPPG2NdTYb_cRoQ7mjQb_ag9g-fL7yHPXV7Atp2j3J0L5xYynM9KKLIwycW_S_

2.1 數據接著上次繼續開始。

2.2 全備。

需保證數據庫存放在邏輯卷組上面,才行。

2.2.1首先鎖表和滾動日志

?

1

2

3

4

5

mysql>?flush?table?with?read?lock;

Query?OK,?0?rows?affected?(0.02?sec)

??

mysql?-S?/tmp/mysql.sock4?-e?'show?master?status;'?>?/backup/master.info??#記錄當前日志信息

mysqladmin?-S?/tmp/mysql.sock4?flush-logs???#滾動日志

2.2.2創建快照

1

2

lvcreate?-s?-n?snap_data?-L?500M?/dev/vg_node5/mylv_data

??Logical?volume?"snap_data"?created

2.2.3 解鎖表

1

2

mysql>?unlock?tables;?

Query?OK,?0?rows?affected?(0.00?sec)

2.2.4 復制快照卷數據到備份目錄下

1

2

3

mkdir?-p?/backup/lvm

mount?/dev/vg_node5/snap_data?/mnt/lvm

cp?-R?/mnt/3309/*?/backup/lvm

2.2.5 刪除快照

1

2

3

4

umount?/mnt

lvremove?/dev/mapper/vg_node5-snap_data

Do?you?really?want?to?remove?active?logical?volume?snap_data??[y/n]:?y

??Logical?volume?"snap_data"?successfully?removed

2.3增量備份,只需和定時復制binlog到備份目錄下面即可

2.4恢復,只需要直接拷貝備份目錄下的文件即可

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

killall?mysqld

rm?-rf?/data/3309/

cp?-R?/backup/lvm/?/data/3309/

chown?mysql.mysql?-R?/data/3309/

mysqld_safe?--defaults-file=/data/3309/my.cnf?&

ss?-tnl?|?grep?330

LISTEN?????0??????50????????????????????????*:3309?????????????????????*:*

??

mysql>?select?*?from?test.test;???#數據未改變

+------+--------------+

|?id???|?comment??????|

+------+--------------+

|????1?|?yun?zhonghe??|

|????2?|?yun?zhonghe2?|

+------+--------------+

2.5小結:

lvm實現物理備份速度相對mysqldump來比較快,實現也比較簡單,是不錯的選擇。

缺點:數據目錄必須存放在lvm卷組上面

3、使用xtrabackup實現熱備。

請自行到官網下載并安裝對應的rpm包。

使用方法參考:詳細參考:

http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html

3.1創建一個具有最小權限的用戶

1

2

3

mkdir?/backup/xtrabackup

mysql>?grant?RELOAD,?LOCK?TABLES,?REPLICATION?CLIENT?on?*.*?to?'bkuser'@'localhost'?identified?by?'123456';

mysql>?flush?privileges;

3.2完全熱備。

使用innobakupex備份時,其會調用xtrabackup備份所有的InnoDB表,復制所有關于表結構定義的相關文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相關文件,同時還會備份觸發器和數據庫配置信息相關的文件。這些文件會被保存至一個以時間命令的目錄中。

1

2

3

4

innobackupex?--user=bkuser?--password=123456?--socket=/tmp/mysql.sock4?--defaults-file=/data/3309/my.cnf?/backup/xtrabackup/?#相關選項自行help。

#nnobackupex:?completed?OK!?#出現此選項代表備份完成。

ls?/backup/xtrabackup/

2015-10-01_17-00-13

(1)xtrabackup_checkpoints —— 備份類型(如完全或增量)、備份狀態(如是否已經為prepared狀態)和LSN(日志序列號)范圍信息;

每個InnoDB頁(通常為16k大小)都會包含一個日志序列號,即LSN。LSN是整個數據庫系統的系統版本號,每個頁面相關的LSN能夠表明此頁面最近是如何發生改變的。

(2)xtrabackup_binlog_info —— mysql服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置。

(3)xtrabackup_binlog_pos_innodb —— 二進制日志文件及用于InnoDB或XtraDB表的二進制日志文件的當前position。

(4)xtrabackup_binary —— 備份中用到的xtrabackup的可執行文件;

(5)backup-my.cnf —— 備份命令用到的配置選項信息;

3.3提供改變數據。

1

2

mysql>?insert?into?test.test?values?(3,'yun?zhonghe3');

Query?OK,?1?row?affected?(0.03?sec)

3.4增量備份

1

innobackupex?--user=bkuser?--password=123456?--socket=/tmp/mysql.sock4?--defaults-file=/data/3309/my.cnf?--incremental?/backup/xtrabackup/?--incremental-basedir=/backup/xtrabackup/2015-10-01_17-00-13/

3.5 模擬數據損壞

1

2

rm?-rf?/data/3309/

killall?mysqld

3.6增量備份恢復

1

2

innobackupex?--apply-log?--redo-only?/backup/xtrabackup/2015-10-01_17-00-13/

innobackupex?--apply-log?--redo-only?/backup/xtrabackup/2015-10-01_17-00-13/?--incremental-dir=/backup/xtrabackup/2015-10-01_17-15-00/

#注意,多實例的話,仍然需要備份配置文件,啟動的時候需要binlog目錄。

?

1

2

3

4

mkdir?-p?/data/3309/{data,binlog}

chown?mysql.mysql?-R?/data/

cp?/opt/backup/my.cnf?/data/3309/

innobackupex?--copy-back?/backup/xtrabackup/2015-10-01_17-00-13/?--defaults-file=/opt/backup/my.cnf???#恢復數據。

3.6啟動數據庫查看。

1

2

3

4

5

6

7

8

9

10

11

mysqld_safe?--defaults-file=/data/3309/my.cnf?&

mysql?-S?/tmp/mysql.sock4

mysql>?select?*?from?test.test;???#數據修復完成。

+------+--------------+

|?id???|?comment??????|

+------+--------------+

|????1?|?yun?zhonghe??|

|????2?|?yun?zhonghe2?|

|????3?|?yun?zhonghe3?|

+------+--------------+

3?rows?in?set?(0.01?sec)

小結:

xtrabacup具有如下特點。

(1)備份過程快速、可靠;

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

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

(4)自動實現備份檢驗;

(5)還原速度快;

因此建議學會熟練使用xtrabackup進行備份和還原。

總結

以上是生活随笔為你收集整理的MySQL常见备份与恢复方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。