Centos7實現MySQL資料庫備份與恢復

2021-10-07 16:26:06 字數 4247 閱讀 4452

mysql資料庫的備份可以分為邏輯備份和物理備份,邏輯備份工具主要為:mysqldump而物理備份工具主要為:xtrabackup,兩種備份方式各有優缺點

備份工具

mysqldump

xtrabackup

優點支援熱備份和增量備份,需要磁碟空間小

支援熱備份和增量備份,業務影響小,停機時間短,

缺點業務影響大,停機時間長

所需磁碟空間大

使用場景

1)當資料量比較大而且對業務影響要比較小,若有足夠空間儲存備份資料則選擇使用xtrabackup

2)當資料量小,也沒有大量磁碟空間儲存備份資料,則選擇使用mysqldump

3)當停機時間要求較短時應到使用xtrabackup進行備份

準備兩台centos7虛擬機器,配置ip位址和hostname,同步系統時間,關閉防火牆和selinux,配置ip位址和hostname對映

hostname

ipmaster

192.168.29.132

bak192.168.29.138

安裝mysql資料庫

注:本機安裝的mysql版本為8.0.17

#官網獲取mysql的yum源

[root@master ~]# yum install mysql mysql-server -y

[root@bak ~]# yum install mysql mysql-server -y

master結點建立資料庫並新增資料

mysql> create database test_db;

mysql> use test_db;

mysql> create table test(id int primary key);

mysql> insert into test values(1);

mysql> insert into test values(2);

mysql> insert into test values(3);

mysql> insert into test values(4);

mysql> insert into test values(5);

mysql> insert into test values(6);

mysql> insert into test values(7);

master備份資料

[root@master ~]# mysqldump -uroot -p test_db > /tmp/a.sql

#把sql檔案傳送到bak結點機器中

[root@master ~]# scp /tmp/a.sql [email protected]:/tmp/

bak結點恢復資料

mysql> create database test_db;

mysql> use test_db;

mysql> source /tmp/a.sql

#檢視恢復情況

mysql> select * from test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

+----+

7 rows in set (0.00 sec)

安裝

[root@master ~]# yum install epel -y

[root@master ~]# yum install xtrabackup -y

master進行全量備份

[root@master ~]# xtrabackup --backup --user='root' --password='your_password'  --target-dir=/backup/full

#傳送到bak機器

[root@master ~]# scp -r /backup/full/ [email protected]:/tmp/

bak進行備份恢復

#需要先把datadir清除乾淨

[root@bak ~]# rm -rf /var/lib/mysql/*

#備份恢復

[root@bak ~]# xtrabackup --copy-back --target-dir=/tmp/full/ --datadir=/var/lib/mysql/

#修改datadir許可權

[root@bak ~]# chown -r mysql.mysql /var/lib/mysql

#重啟mysql服務

[root@bak ~]# systemctl restart mysqld

驗證備份恢復結果

mysql> select * from test_db.test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

+----+

7 rows in set (0.03 sec)

適當新增資料

mysql> insert into test values(8);

mysql> insert into test values(9);

進行增量備份

[root@master ~]# xtrabackup --backup --user='root' --password='your_password' --target-dir=/backup/inc1/  --incremental-basedir=/backup/full/
對比全量備份和增量備份的資料大小

[root@master ~]# du -h /backup/full

231m full

[root@master ~]# du -h /backup/inc1/

14m /backup/inc1/

恢復備份

#傳送資料夾

[root@master ~]# scp -r /backup/inc1/ [email protected]:/tmp/

#清理datadir

[root@bak ~]# rm -rf /var/lib/mysql/*

#準備恢復全量備份

#準備增量備份

[root@bak ~]# xtrabackup --prepare --target-dir=/tmp/full/ --incremental-dir=/tmp/inc1/

#恢復備份

[root@bak ~]# xtrabackup --copy-back --target-dir=/tmp/full/ --datadir=/var/lib/mysql/

#修改許可權

[root@bak ~]# chown -r mysql.mysql /var/lib/mysql

#重啟服務

[root@bak ~]# systemctl restart mysqld

測試驗證

mysql> select * from test_db.test;

+----+

| id |

+----+

| 1 |

| 2 |

| 3 |

| 4 |

| 5 |

| 6 |

| 7 |

| 8 |

| 9 |

+----+

9 rows in set (0.00 sec)

centos7程序數 centos7最大程序數修改

之前我們按照原先的修改 etc security limits.d 90 nproc.conf,發現修改完後最大程序數顯示為15088 centos 7 使用systemd替換了sysv。systemd目的是要取代unix時代以來一直在使用的init系統,相容sysv和lsb的啟動指令碼,而且夠在程...

centos 7 解除安裝mysql

解除安裝maridb root host 131 rpm qa grep mariadb mariadb libs 5.5.52 1.el7.x86 64 root host 131 yum y remove mari root host 131 rm rf var lib mysql root h...

Centos 7 設定MySQL 最大連線數

一 檢視最大連線數 登入mysql後輸入以下命令 show variables like max connections 預設是151 二 修改最大連線數 臨時修改 登入mysql後輸入以下命令 set global max connections 200 永久修改 1 找到mysql的配置檔案,v...