数据库的备份与恢复
数据库备份的目的:防止数据被误删或设备损害导致数据的丢失。
1,数据备份的分类:物体热备和逻辑备份
-差异备份:备份自完全备份后,所有新产生的数据
-备份自上次备份后,所有新产生的数据
-[root@host51 ~]#cp -r /var/lib/mysql/mysql /databak/mysql.bak //把要备
份的数据库拷贝到新文件并改名
- 也可以使用压缩包备份
-[root@host51 ~]#tar -zcvf /databak/mysql.bak.tar.gz /var/lib/mysql/mysql
-[root@host51 ~]#rm -rf /var/lib/mysql/mysql //把数据库删除
-[root@host51 ~]#chown -R mysql:mysql /var/lib/mysql/mysql //修改所有 者和所属组
-[root@host51 ~]#systemctl stop mysqld //停服务
-[root@host51 ~]#systemctl start mysqld //再启服务
-[root@host51 ~]#ls /var/lib/mysql/mysql //查看数据的恢复
- mysqldump -u用户名 -p密码 --all-databases 或 -A //备份一台服务器上的
所有库
- 恢复操作:mysql 目标库名 < 路径 /xxx.sq
- 完全备份数据
- [root@host51 ~]#mkdir -p /mydatabak
- [root@host51 ~]#mysqldump -u用户名 -p密码 源库名 > /mydatabak
/源库名.sql
- [root@host51 ~]# mysqldump -u用户名 -p密码 源库名 源表名 >
/mydatabak/源库名-源表名.sql
- 完全恢复数据:
- [root@host51 ~]#mysql -u用户名 -p密码 源库名 < /mydatabak/源库
名.sql
- 使用source 命令恢复数据库(需要先建立数据库)
- mysql> create database bbsdb;
- mysql> use bbsdb;
- mysql> source /mydatabak/studb.sql
- #!/bin/bash
day=`date +%F`
if [ ! -e /dbbak ];then
mkdir /dbbak
fi
mysqldump -uroot -p654321 studb > /dbbak/${day}_studb.sql
- [root@host51 ~]#crontab -e
- 00 18 * * 1 /root/bakstudb.sh &> /dev/null
- [root@host51 ~]#systemctl restart crond
-
1,数据备份的分类:物体热备和逻辑备份
- 数据备份的策略:
-差异备份:备份自完全备份后,所有新产生的数据
-备份自上次备份后,所有新产生的数据
- 物体备份:指定备份库和表对应的文件,仅支持myisam储存引擎,只适合小型数据的储存
- 物体备份步骤:
-[root@host51 ~]#cp -r /var/lib/mysql/mysql /databak/mysql.bak //把要备
份的数据库拷贝到新文件并改名
- 也可以使用压缩包备份
-[root@host51 ~]#tar -zcvf /databak/mysql.bak.tar.gz /var/lib/mysql/mysql
-[root@host51 ~]#rm -rf /var/lib/mysql/mysql //把数据库删除
- 数据库的恢复
-[root@host51 ~]#chown -R mysql:mysql /var/lib/mysql/mysql //修改所有 者和所属组
-[root@host51 ~]#systemctl stop mysqld //停服务
-[root@host51 ~]#systemctl start mysqld //再启服务
-[root@host51 ~]#ls /var/lib/mysql/mysql //查看数据的恢复
- 逻辑备份( 在执行备份命令时,根据备份的库表及数据生成对应的sql命令,把sql存储到指定的文件里。当数据丢失时 可以执行保存sql命令的文件 把数据重新写回数据库里)
- mysqldump -u用户名 -p密码 --all-databases 或 -A //备份一台服务器上的
所有库
- 恢复操作:mysql 目标库名 < 路径 /xxx.sq
- 完全备份数据
- [root@host51 ~]#mkdir -p /mydatabak
- [root@host51 ~]#mysqldump -u用户名 -p密码 源库名 > /mydatabak
/源库名.sql
- [root@host51 ~]# mysqldump -u用户名 -p密码 源库名 源表名 >
/mydatabak/源库名-源表名.sql
- 完全恢复数据:
- [root@host51 ~]#mysql -u用户名 -p密码 源库名 < /mydatabak/源库
名.sql
- 使用source 命令恢复数据库(需要先建立数据库)
- mysql> create database bbsdb;
- mysql> use bbsdb;
- mysql> source /mydatabak/studb.sql
- 例:要求每周一晚上18:00备份studb库的所有数据到本机的/dbbak目录下,备份文件名称要求如下 日期_库名.sql
- #!/bin/bash
day=`date +%F`
if [ ! -e /dbbak ];then
mkdir /dbbak
fi
mysqldump -uroot -p654321 studb > /dbbak/${day}_studb.sql
- [root@host51 ~]#crontab -e
- 00 18 * * 1 /root/bakstudb.sh &> /dev/null
- [root@host51 ~]#systemctl restart crond
-