mysql数据库备份与还原_MySQL数据库备份和还原

MySQL数据库备份和还原

以下方法前景必须是一台用yum源安装的mysql数据库没操作过的崭新的服务器

*查看是否启用二进制日志:show master logs;/show binary logs;

aaed1e84dc23b2e716ad5781a05aef80.png

*创建一个日志文件专门存放二进制日志:mkdir /data/logbin

*修改配置文件:vim /etc/my.cnf

255e30896ef53f8c3013586ab6bc94c5.png

*设置权限所有者和所属组:chown mysql.mysql /data/logbin/

*重新启动mysql服务:systemctl restart mariadb

*查看文件夹是否生成二进制文件:ll /data/logbin(上面是二进制文件,下面是索引)

268323a5be6729034b7f23140e4ee1aa.png

*再次查看二进制文件是否启动:show master logs;(默认大小245)|show master status;(position默认大小)

975c8be7ffc894eb9a58c2aabf00482d.png

f4b42885cfc962efbc753abf613626e5.png

*刷新日志(也是创建日志):flush logs;

52f04f0d033d7c217ac10f42b1b0c34f.png

*清除指定的二进制日志:purge binary logs to '删除文件之前的位置';(删除之前的文件不包括本身)

987cdc9f36aaeed3cffe84ec8c14d448.png

*删除所有的二进制文件从新计数:reset master;

36f13e2af6680c7b18074908d1abc146.png

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

冷备份

*停止服务:systemctl stop mariadb;

*查看目录:ls /var/lib/mysql/(mysql.sock文件不存在了)

*压缩数据:tar Jcvf all.bak.tar.xz /var/lib/mysql(打包数据库)

tar Jcvf logbin.tar.xz(打包二进制文件)

/etc/my.cnf(直接拷贝)

*创建一个目录存放压缩数据:mkdir backup

mv all.bak.tar.xz logbin.tar.xz /backup/

cp /etc/my.cnf /backup/

*拷贝到另一台机器上:scp -r /backup/ 192.168.198.17:/data/(本机地址为192.168.198.7)

*打开ip为192.168.198.17的服务器(该机器未安装过mysql),查看传送过来的文件:ls /data

*yum安装数据库:yum install mariadb-server -y

*查看数据库:ls /var/lib/mysql(该目录是空的)

*覆盖配置文件:cp /data/backup/my.cnf  /etc/my.cnf -b(-b是备份)

*查看备份的my.cnf文件:ll /etc/my.cnf(my.cnf~备份文件)

*创建二进制文件,改变所有者和所属组:mkdri /data/logbin/  chown mysql.mysql /data/logbin/

*解压二进制文件压缩包:tar -xvf /data/backup/logbin.tar.xz -C /data/logbin

*进入目录查看:cd /data/logbin(这是这个目录不对)mv data/logbin/* .(把数据移出)rm -rf data(删除data目录)

*解压mysql压缩包然后移动到/var/lib/mysql中:cd /data/backup/(进入) tar xvf all.bak.tar.xz(解压在当前目录) cd var/lib/mysql(进入) mv * /var/lib/mysql(移动全部数据到该目录)

*启动数据库:systemctl start mariadb;(启动之后进入mysql查看即可)

----------------------------------------------------------------------------------------------------------------------------------------------------------

mysqldump

一、mysqldump [options] database [tables](备份一个数据库此法问题较多不推荐使用)

*创建一个备份目录:mkdir /data/backup/

*复制整个数据库成sql语句:mysqldump hellodb > /data/backup/hellodb.sql

*删除该数据库:mysql -e 'drop database hellodb';

*还原数据库得先创建该数据库:create database hello;(mysqldump恢复数据时不具有自动创建数据库的功能需要手工创建,创建的新数据库名字可以改变)

*还原数据:mysql hello < /data/backup/hellodb.sql

*进入数据库查看是否还原即可

二、mysqldump [options] -B DB1[DB2 DB3...](备份部分数据库)

*创建一个备份目录:mkdir /data/backup

*备份数据库:mysqldump -B hello[后面可以跟多个数据库] > /data/backup/hello.sql

*删除数据库:mysql -e 'drop database hello';

*还原数据:mysql < /data/backup/hello.sql

*进入数据库查看即可

三、mysqldump [options] -A [options](备份全部数据库)

*创建一个备份目录:mkdir /data/backup

*备份数据库:mysqldump -A > /data/backup/all.sql

*删除数据库

*还原数据:mysql < /data/backup/all.sql

*进入数据库查看即可

e64cfab05f5058c6c201dbb531e41289.png

104ec20719d3bfb4b10977d033af6ca8.png

四、mysqldump --master-data[=#](二进制日志还原)

*创建备份存放目录:mkdir /data/backup/

*备份为注释的CHANGE MASTER TO语句:mysqldump -A --master-data=2 > /data/backup/all.sql

*查看现在的二进制文件:mysql -e 'show master logs';

*随便写一条sql语句即可

*再次查看二进制文件会发现文件变大:mysql -e 'show master logs';

*开始删库:rm -rf /var/lib/mysql/*(啥也没了)

*重启数据库服务:systemctl restart mariadb(会重新生成mysql文件)

*恢复数据库时禁止用户访问,在配置文件修改:vim /etc/my.cnf 添加:skip_networking 不允许网络连接或者skip_grant_tables跳过授权表只是服务器选项不是变量

*临时关闭二进制文件不让他生效:show variables like 'sql_log_bin'默认是NO,set sql_log_bin=OFF即可

*再次查看二进制文件:show master logs;发现他多生成出几个文件

*我要还原图中数据即可(只是我自己),可以查看备份的文件得出依据从哪里开始还原

742a730efee26711b818ac26eb613bf0.png

*进入二进制文件目录备份丢失的数据,如下图所示

94b0c29e722d8fac96e091d78eef2f78.png

*导入还原数据:进入mysql输入source /data/backup/all.sql(先还原全部备份)source /data/backup/inc.sql(还原丢失数据)

*进入数据库查看即可

*恢复二进制数据记录:set sql_log_bin=on;

五、恢复误删的表

*创建数据备份的目录:mkdri /data/backup/

*备份二进制数据:mysqldump -A --master-data=2 > /data/backup/all_`date +%F`.sql

*随便写一条sql语句

*删表:drop table students;

*刷新日志,找出丢失的日志文件

211ee0e1b171a801f9bd8bf4e4cf352d.png

*刷新丢失的二进制文件:mysqlbinlog  --start-position=245 /data/logbin/mysql-bin.000005 > /data/backup/inc.sql

*打开配置文件vim /data/backup/inc.sql,找到删除命令注销

0a6fef25894a3ad5ec90a06f73a55f2d.png

*删除数据库:rm -rf /var/bin/mysql/*

*重启服务器:systemctl restart mariadb

*进入数据库停止二进制服务:set sql_log_bin=off;

*导入还原数据:进入mysql输入source /data/backup/all_2019_7_11.sql(先还原全部备份)source /data/backup/inc.sql(还原丢失数据)

*查看数据:执行一条查询语句(即可成功)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值