使用Shell脚本实现自动备份MySQL数据库
目的:
192.168.100.20服务器对192.168.100.10服务器上的MySQL数据库进行备份。
1、配置MySQL服务器
1)100.10MySQL服务器登录MySQL创建两个数据库
[ ~]# mysql -uroot 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 ‘‘; Query OK, 0 rows affected (0.00 sec) <!--备份数据库需要账号具有查看表和锁定表的权限-->
2、配置备份服务器
1)安装MySQL客户端,手动备份测试是否成功
[ ~]# yum -y install mysql [ ~]# mysqldump -u bob -h 192.168.100.10 --databases liyanxin > liyanxin.sql [ ~]# ls liyanxin.sql
2)编写备份脚本
[ ~]# mkdir -p /opt/backup <!--创建备份后的存放目录--> [ ~]# vim mysql.sh <!--编写shell脚本--> #!/bin/bash <!--定义数据库连接、目标信息库等信息:--> user="bob" <!--授权的账户--> pass="" <!--授权账户的密码--> 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)测试脚本备份是否成功
[ ~]# ./mysql.sh [ ~]# cd /opt/backup/ [ backup]# ls liyanxin-2020-05-20-02-10.tar.gz wangzhaojun-2020-05-20-02-10.tar.gz
4)设置计划任务实现自动备份
[ ~]# mv mysql.sh /opt/backup/ <!--将脚本也移至备份目录--> [ ~]# crontab -e <!--编辑计划任务--> */5 * * * * /opt/backup/mysql.sh <!--每五分钟备份一次--> [ ~]# 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
————————————本文到此结束,感谢观看——————————————
相关推荐
CoderToy 2020-11-16
bianruifeng 2020-11-16
云中舞步 2020-11-12
敏敏张 2020-11-11
暗夜之城 2020-11-11
好记忆也需烂 2020-11-11
Coder技术文摘 2020-09-29
huacuilaifa 2020-10-29
Gexrior 2020-10-22
lpfvip00 2020-10-07
云中舞步 2020-09-11
康慧欣 2020-09-10
emmm00 2020-11-17
世樹 2020-11-11
tufeiax 2020-09-03
疯狂老司机 2020-09-08
王艺强 2020-11-17
ribavnu 2020-11-16