使用Shell腳本實現自動備份MySQL數據庫

目的:

192.168.100.20服務器對192.168.100.10服務器上的MySQL數據庫進行備份。

1、配置MySQL服務器

1)100.10MySQL服務器登錄MySQL創建兩個數據庫

[root@centos01 ~]# mysql -uroot -ppwd@123
mysql> create database liyanxin;
mysql> create database wangzhaojun;

2)liyanxin數據庫創建表,寫入數據

mysql> create table liyanxin.liyanxin (姓名 char(6),性別 char(5),年齡 tinyint,電話 char(11));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into liyanxin.liyanxin values ('bob','男','18','11111111111');
Query OK, 1 row affected (0.00 sec)
mysql> insert into liyanxin.liyanxin values ('tom','女','20','22222222222');
Query OK, 1 row affected (0.00 sec)
mysql> select * from liyanxin.liyanxin;
+--------+--------+--------+-------------+
| 姓名   | 性別   | 年齡   | 電話        |
+--------+--------+--------+-------------+
| bob    | 男     |     18 | 11111111111 |
| tom    | 女     |     20 | 22222222222 |
+--------+--------+--------+-------------+
2 rows in set (0.00 sec)

3)wangzhaojun數據庫創建表,寫入數據

mysql> create table wangzhaojun.wangzhaojun (姓名 char(6),性別 char(5),年齡 tinyint,電話 char(11));
Query OK, 0 rows affected (0.01 sec)
mysql> insert into wangzhaojun.wangzhaojun values ('bob','男','18','11111111111');
Query OK, 1 row affected (0.00 sec)
mysql> insert into wangzhaojun.wangzhaojun values ('tom','女','20','22222222222');
Query OK, 1 row affected (0.00 sec)
mysql> select * from wangzhaojun.wangzhaojun;
+--------+--------+--------+-------------+
| 姓名   | 性別   | 年齡   | 電話        |
+--------+--------+--------+-------------+
| bob    | 男     |     18 | 11111111111 |
| tom    | 女     |     20 | 22222222222 |
+--------+--------+--------+-------------+
2 rows in set (0.00 sec)

4)在100.10服務器上授權專門用來備份數據庫的賬號,並賦予相應的權限

mysql> grant select,lock tables on *.* to 'bob'@'192.168.100.%' identified by 'pwd@123';
Query OK, 0 rows affected (0.00 sec)
        <!--備份數據庫需要賬號具有查看錶和鎖定表的權限-->

2、配置備份服務器

1)安裝MySQL客戶端,手動備份測試是否成功

[root@centos02 ~]# yum -y install mysql
[root@centos02 ~]# mysqldump -u bob -ppwd@123 -h 192.168.100.10 --databases liyanxin > liyanxin.sql
[root@centos02 ~]# ls
liyanxin.sql

2)編寫備份腳本

[root@centos02 ~]# mkdir -p /opt/backup             <!--創建備份後的存放目錄-->
[root@centos02 ~]# vim mysql.sh         <!--編寫shell腳本-->
#!/bin/bash
<!--定義數據庫連接、目標信息庫等信息:-->
user="bob"      <!--授權的賬戶-->
pass="pwd@123"       <!--授權賬戶的密碼-->
host="192.168.100.10"    <!--目標服務器IP地址-->
conn="-u $user -p$pass -h $host"
data1="liyanxin"             <!--備份的數據庫名字-->
data2="wangzhaojun"    <!--備份的數據庫名字-->
bak="/opt/backup"          <!--指定備份目錄-->
cmd="/usr/bin/mysqldump"      <!--指定命令工具-->
time=`date +%Y-%m-%d-%H-%M`      <!--定義時間變量-->
name_1="$data1-$time"        <!--定義備份後的名字-->
name_2="$data2-$time"        <!--定義備份後的名字-->
cd $bak           <!--切換至備份目錄下-->
$cmd $conn --databases $data1 > $name_1.sql      <!--備份爲.sql文件-->
$cmd $conn --databases $data2 > $name_2.sql      <!--備份爲.sql文件-->
/bin/tar zcf $name_1.tar.gz $name_1.sql --remove > /dev/null    <!--打包後刪除源文件-->
/bin/tar zcf $name_2.tar.gz $name_2.sql --remove > /dev/null    <!--打包後刪除源文件-->

3)測試腳本備份是否成功

[root@centos02 ~]# ./mysql.sh
[root@centos02 ~]# cd /opt/backup/
[root@centos02 backup]# ls
liyanxin-2020-05-20-02-10.tar.gz  wangzhaojun-2020-05-20-02-10.tar.gz

4)設置計劃任務實現自動備份

[root@centos02 ~]# mv mysql.sh /opt/backup/    <!--將腳本也移至備份目錄-->
[root@centos02 ~]# crontab -e     <!--編輯計劃任務-->
*/5       *       *       *       *       /opt/backup/mysql.sh     <!--每五分鐘備份一次-->
[root@centos02 ~]# systemctl status crond        <!--確保crond服務已運行-->
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since 三 2020-05-20 01:20:56 CST; 37min ago
 Main PID: 829 (crond)
   CGroup: /system.slice/crond.service
           └─829 /usr/sbin/crond -n

————————————本文到此結束,感謝觀看——————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章