linux MySQL数据备份

1.创建一个shell文件 vim shellmysql.sh

文件内容如下:

#这里是定义linux的几个常用命令,linux的所有命令都是在/bin目录下面

#declare

MKDIR="/bin/mkdir"

RM="/bin/rm"

MV="/bin/mv"

GZIP="/bin/gzip"

#下面是填写你当前需要备份mysql的用户名密码及地址信息的变量

db_user="root"

db_password="123456"

db_host="localhost"

# 要备份到当前项目的目录,如果没有这个目录需要自己创建,当然也可以在此文件里面自动创建,#这里意见引入了MKDIR ,直接使用 mkdir mysql即可

backup_dir="/home/mysql"

# 获取当前时间,用于备份文件命名

time="$(date +“%Y-%m-%d")"

#这里是你本地mysqldump的所在目录,可以使用whereis mysqldump查看

MYSQLDUMP ="/usr/bin/mysqldump"

#检查你的存储备份的目录是否有写入权限,如果报下面的错误可以使用chomd 赋予写入权限

test ! -w $backup_dir && echo "Error: $backup_dir is un-writeable." && exit 0

# 要备份的database名称,下面我是备份test库,MySQL备份其实就是使用了mysqldump,一条命令,可以看看mysqldump的语法

db="test"

$MYSQLDUMP -u $db_user -h $db_host -p$db_password $db | $GZIP -9 > "$backup_dir"/$time.$db.gz"

#其实到上面这一步就已经完成备份到本地了,当然可以将这个备份文件发送到另一个服务器,使用scp,但是这里每次执行的时候,都是需要输入你备份过去的服务器root的密码,所以如果是定时自动备份,需要给服务器配置免密登录 使用 ssh-keygen      ,然后ssh-copy-id 192.168.1.2 这个IP是你服务器的IP地址

# 发送备份文件到另一个服务器,当然要你的192.168.1.2有/home/mysql1/mysqlbackup/的目录,没有跟上面一样,手动创建,也可以命令创建

scp -r $backup_dir/$time.$db.gz 192.168.1.2:/home/mysql1/mysqlbackup/

exit 0;

#到这里就编写完毕了,使用 sh shellmysql.sh执行此文件就可以完成备份了,如果需要自动备份,就得配置linux的定时器 crontab,定时执行,这个定时器很简单,不会的直接找个帖子就好了,如果是从window复制到Linux,会报一个/r的错误,这个其实是window跟Linux的换行符不一样导致,需要下载一个插件编译一下,MySQL备份数据库就到这里了,这是我学习过后,理解了内容发表这篇博客,加深自己的理解,也是为了复习所用。

然后补充一点,这里备份的压缩包使用gunzip 解压解压之后是一个sql文件,可以使用shell执行到你的数据库中,

如下有个test.sh

# 内容如下,这里是你执行的数据库信息

user=root

password="123456"

db=test

mysql -u$user -p$password -D $db < /home/mysql/2021-12-14.test

#这只是一个例子,前面三个变量都是你的数据库信息 /home/mysql/2021-12-14.test 是备份文件的名称,使用sh test.sh执行,既可将数据导入到你的test库中。

你可能感兴趣的:(mysql,linux,数据库)