使用 Shell 脚本对 MySQL 数据库进行远程备份
一、Master 上操作
1.检查 MySQL 数据库端口是否开启
2.创建 MySQL 数据库密码
3.在 MySQL 数据库中创建库
4.配置 MySQL 数据库用户授权
二、Backup 上操作
1.安装 Mariadb 数据库
2.使用 mysqldump 进行远程备份测试
三、编写 Shell 脚本对 Master 数据库进行备份
四、通过计划任务来进行自动备份
准备工作:
一、Master 上操作
1.检查 MySQL 数据库端口是否开启
[root@Master ~]# netstat -anpt | grep 3306
2.创建 MySQL 数据库密码
[root@Master ~]# mysqladmin -uroot password '123'
3.在 MySQL 数据库中创建库
[root@Master ~]# mysql -uroot -p123 mysql> create database test1; mysql> create database test2;
4.配置 MySQL 数据库用户授权
mysql> grant all on test1.* to zhangsan@'192.168.1.%' identified by '123'; mysql> grant all on test2.* to lisi@'192.168.1.%' identified by '123456'; mysql> flush privileges; mysql> exit;
二、Backup 上操作
1.安装 Mariadb 数据库
[root@Backup ~]# yum -y install mariadb # 安装系统自带 MySQL 数据库 [root@Backup ~]# mysql -uzhangsan -p123 -h192.168.1.1 # 验证远程登陆 MySQL MySQL [(none)]> exit
2.使用 mysqldump 进行远程备份测试
[root@Backup ~]# mysqldump -uzhangsan -p123 -h192.168.1.1 test1 > test1.sql
三、编写 Shell 脚本对 Master 数据库进行备份
Backup 上操作:
[root@Backup ~]# mkdir /mysql.bak # 创建备份目录 [root@Backup ~]# cd /mysql.bak # 进入备份目录 [root@Backup mysql.bak]# vim mysql.sh # 编写备份脚本 #!/bin/bash #定义数据库连接. 目标库信息 my_user1="zhangsan" my_user2="lisi" my_pass1="123" my_pass2="123456" my_host="192.168.1.1" my_conn1="-u $my_user1 -p$my_pass1 -h $my_host" my_conn2="-u $my_user2 -p$my_pass2 -h $my_host" my_db1="test1" my_db2="test2" # 定义备份目录. 工具. 时间. 文件主体 bf_dir="/mysql.bak" bf_cmd="/usr/bin/mysqldump" bf_time=`date +%F-%H-%M-%S` name1="${my_db1}-$bf_time" name2="${my_db2}-$bf_time" # 先导出为.sql文件. 然后进行压缩(打包后删除原文件) cd $bf_dir $bf_cmd $my_conn1 --databases $my_db1 > ${name1}.sql $bf_cmd $my_conn2 --databases $my_db2 > ${name2}.sql /usr/bin/tar zcf ${name1}.tar.gz ${name1}.sql --remove &> /dev/null /usr/bin/tar zcf ${name2}.tar.gz ${name2}.sql --remove &> /dev/null
[root@Backup mysql.bak]# chmod +x mysql.sh # 添加可执行权限 [root@Backup mysql.bak]# ./mysql.sh # 执行该脚本 [root@Backup mysql.bak]# ls mysql.sh test1-2021-01-13-00-13-47.tar.gz test2-2021-01-13-00-13-47.tar.gz
四、通过计划任务来进行自动备份
[root@Backup mysql.bak]# crontab -e # 编辑计划任务 30 23 * * * /usr/bin/sh /mysql.bak/mysql.sh [root@Backup mysql.bak]# crontab -l # 查看计划任务 30 23 * * * /usr/bin/sh /mysql.bak/mysql.sh [root@Backup mysql.bak]# date -s '2021-01-13 23:29' # 修改时间. 方便后续验证 2021年 01月 13日 星期三 23:29:00 CST [root@Backup mysql.bak]# rm -rf test* # 删除原有备份数据 [root@Backup mysql.bak]# ls mysql.sh [root@Backup mysql.bak]# date 2021年 01月 13日 星期三 23:30:07 CST [root@Backup mysql.bak]# ls mysql.sh test1-2021-01-13-23-30-01.tar.gz test2-2021-01-13-23-30-01.tar.gz
- 通过计划任务和编写的 Shell 脚本结合即可实现 MySQL 数据库自动备份。