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...