mysql 备份耗资源不_mysql完整性备份 还原 及备份注意事项

mysql完全备份操作:案例

mysql数据库的完全备份可以采用多种方式,物理冷备份一般采用tar命令直接打包数据库文件夹(数据目录),而在备份前需要先停库。

直接打包数据库文件夹,源码包的位置/usr/local/mysql/data/,rpm包的位置/var/lib/mariadb/

systemctl start mariadb  //启动mariadb服务

ls /var/lib/mysql/  //查看一下mysql下内容

f07729b7e2cda27e93ad7f38ee4d3b36.png

#mysqladmin -u root password 123456  //给数据库设置一个密码,若有密码就不需要操作这步

mysql -uroot -p000000  //连接mysql

create database auth;   //创建一个auth的数据库

cd07c8ddcecbb091ae93c1c6e13a37f5.png

use auth  //进入auth数据库里

create table user(name char(10) not null,ID int(48));   //创建表,第一列name长度10位不能为空,第二列ID整数(int)48位

insert into user values('crushlinux','123');   // 插入一个名字为crushlinux,ID位123的数据

select * from user;   //查一下名为user的表

f0adc2df511c02881cd5919612b6bbfd.png

systemctl stop mariadb   //退出数据库停止服务

ls /var/lib/mysql/   //查看一下是否有auth

ls /var/lib/mysql/auth/   //查看auth下是否有user

e9a4c6ee964eb6c8927d3bbba486e6a4.png

yum 0y install xz  //安装xz

mkdir backup   //建立一个叫backup的目录

tar Jcf backup/mysql_all-$(date +%F).tar.xz /var/lib/mysql/   //(Jcf创建打包压缩的文件包),创建一个叫mysql并带有年月日的压缩包放入backup下

ls backup/  //查看一下backup下的压缩包(备份了整个mysql的目录)

3d2938039ffa3e2fe1d6cf07944211e5.png

模拟数据丢失:

rm -rf /var/lib/mysql/auth/   //删除auth

ls /var/lib/mysql/   //查看,此时缺少一个库

c3a9377586add4bfcd0eee35a709494a.png

systemctl start mariadb  //启动服务

show databases;   //进入mysql查看所有库,已经没有了删除的那个库

ee1d7a1b5bfe3555353024f13e8f31b4.png

mkdir restore   //退出后创建一个文件夹(名字随意)

tar xf backup/mysql_all-2019-10-14.tar.xz -C restore/    //将之前备份的压缩包解压到创建的目录下

cd restore/

ls

cd var/lib/mysql/

ls

e439b4f925b4c70fb2e97b927380ebc3.png

mv auth/ /var/lib/mysql/      //将auth移动到/var/lib/mysql/下,重新进入mysql后进行查看,此时auth库已经恢复

f5bb7beade98f5c8a0de171cc30cb508.png

select * from auth.user;    //查看auth库内容,此时内容也已经恢复

488df218d42b7625f9444cbc42da355d.png

使用专用备份工具mysqldump:

mysql自带的备份工具mysqldump,可以很方便的对mysql进行备份。通过命令该工具可以将数据库、数据表或全部的库导出为sql脚本。

便于该命令在不同版本的mysql服务器上使用。例如,当需要升级mysql服务器时,可以先使用mysqldump命令将原有库信息导出,然后直接在升级后的mysql服务器中导入即可。

1.对单个库进行完全备份

格式:mysqldump -u用户名 -p[密码] [选项] --databases [数据库名] > /备份路径/备份文件名

示例: mysqldump -uroot -p000000 --databases auth > backup/auth-$(date +%Y%m%d).sql

749939a23d05af7d95ab51ee13ff285a.png

cat backup/auth-20191014.sql    //查看一下备份内容

59018e0ace438d5732cc26a2fa53f8b7.png

2.对多个库进行完全备份

格式:mysqldump -u用户名 -p [密码] [选项] --databases 库名1 [库名2]… > /备份路径/备份文件名

示例:mysqldump -uroot -p000000 --databases auth > backup/auth-$(date +%Y%m%d).sql

1b7c9380cc3105e5cf54122cc465b28a.png

过滤一下备份内容

grep -Ev "^/|^$|^-" backup/auth-20191014.sql    //将内容中的以‘/’’ 开头的,空行、‘-’开头的去掉

329ba6dd0e92f1adcc68f882a7a20ac9.png

3.对所有库进行完全备份

格式:mysqldump -u用户名 -p [密码] [选项] --opt --all-databases > /备份路径/备份文件名

示例:mysqldump -uroot -p000000 --events --opt --all-databases > backup/mysql01_all.$(date +%Y%m%d).sql      //--opt加快备份速度,当备份数据量大时使用

47cde312671027cab8cca632795176af.png

4.对表进行完全备份

格式:mysqldump -u用户名 -p [密码] [选项] 数据库名 表名 > /备份路径/备份文件名

示例:mysqldump -uroot -p000000 auth user > backup/auth2_user-$(date +%Y%m%d).sql

df20b4f92752208bcff6883b31217de1.png

5.对标的结构进行备份【面试题】

格式:mysqldump -u用户名 -p [密码] -d 数据库名 表名 > /备份路径/备份文件名

示例: mysqldump -uroot -p000000 -d mysql user > backup/desc01_mysql_user-$(date +%Y%m%d).sql

f3742a2834eff57c858d3c15867daa1d.png

使用mysqldump备份后,恢复数据库

1.source命令:

登录到mysql数据库,执行source备份sql脚本路径

示例:

进入数据库查看所有库

6e2f7428c7c4c447714ca224703923d2.png

drop database auth;  //删除auth库

b4bd6dcba117d015b84d34463f9761b9.png

ll backup/auth1-20191014.sql    //查看一下备份的auth库

d6c4cb2a590c0bac45867b918be089b5.png

source backup/auth1-20191014.sql   //在mysql中执行source命令

9ddb6c77e01754a495ba71a1cc6f7c5b.png

show databases;   //再一次查看所有库,此时auth已经恢复

5a3533784eb0f71678e02b1dc76a5e91.png

select * from auth.user;   //查看auth库,库内数据也已经恢复

21088d5873837d342a1b0a3fcd6b8d9b.png

2.mysql命令

格式一:

mysql -u 用户名 -p[密码] < 库备份脚本路径

示例:

4删除auth库,使其不存在auth,为下面实验做准备

1e85be774a5b5d8eab3b56c752267c90.png

mysql -uroot -p000000 < backup/auth1-20191014.sql    //连接并重定向输入到mysql

重新登录mysql,并查看库和库内数据

8e7f0327fa0f441fb71ce2d43dab6dde.png

格式二:

mysql -u 用户名 -p[密码] 库名 < 表备份脚本路径

示例:

bda869ae95017525a24f67f6a17a29a2.png

MySQL备份思路:

1、定期实施备份,指定备份计划或策略,并严格遵守

2、除了进行完全备份,开启MySQL服务器的binlog日志功能是很重要的(完全备份加上日志,可以对MySQL进行最大化还原)

3、使用统一和易理解的备份名称,推荐使用库名或者表名加上时间的命名规则,如mysql_user-20181214.sql,不要使用backup1或者abc之类没有意义的名字。

4.定期抽查备份的可靠性,做还原测试或者检查文件大小等方式

5.通过异地或者跨机房等方式来存放备份数据,防止源数据和备份文件一起损坏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值