使用mysqldump对数据库备份和恢复
2018-06-18 01:01:59来源:未知 阅读 ()
数据库存储引擎:InnoDB
启用binlong
一、恢复误删除的数据库到最新状态
1、备份数据库
mysqldump -A -F -uroot -p --master-data=2 --single-transaction > /backups/all-`date +%F_%T`.sql
2、对数据库误删除
MariaDB [reset_gq]> drop database reset_gq;
3、对数据库添加新数据
MariaDB [(none)]> create database kuc ;
MariaDB [(none)]> use kuc;
MariaDB [kuc]> create table cun_dg(id int);
4、发现问题对数据库进行恢复
MariaDB [(none)]> flush tables with read lock; #全局锁,数据库只读
MariaDB [(none)]> flush logs; #刷新日志
cp /www/server/data/mysql-bin.000015 /backups/ #拷贝一份修改
mysqlbinlog --start-position=366 mysql-bin.000015 > bin.sql
修改bin.sql,找到误操作命令注释或删除
MariaDB [(none)]> set sql_log_bin=0; #暂停二进制日记
MariaDB [(none)]> unlock tables; #解锁
cp /backups/all-2018-02-27_17\:50\:26.sql /backups/mysql.sql #改名
MariaDB [(none)]> source /backups/mysql.sql; #恢复数据库到备份状态
MariaDB [reset_gq]> source /backups/bin.sql; #恢复数据库到最新状态
MariaDB [kuc]> set sql_log_bin=1; #启动二进制日记
5、查询恢复是否完整
二、基于LVM的备份还原
1、分离数据和binlog到各自的逻辑卷
2、锁定所有表
MariaDB [(none)]> flush tables with read lock;
3、记录二进制日记文件及事件位置
MariaDB [(none)]> flush logs; #刷新日记
mysql -uroot -p -e 'show master logs' > /app/pos.log #将日记位置记录到文件
4、创建快照
lvcreate -n mysqldata-snapshot -s -p r -L 3G /dev/vg0/mysqldata
5、释放锁,修改部分数据
MariaDB [(none)]> unlock tables;
MariaDB [(none)]> create database lvsceshi;
6、挂载快照卷,执行数据备份
mkdir /mnt/snap
mount -o nouuid,norecovery /dev/vg0/mysqldata-snapshot /mnt/snap
mkdir /backups
cp -a /mnt/snap/* /backups/
7、备份完成后,删除快照卷
umount /mnt/snap/ lvremove /dev/vg0/mysqldata-snapshot
8、破坏数据库
systemctl stop mysqld
rm -rf /data/mysqldata/*
9、还原
cp -a /backups/* /data/mysqldata/
systemctl start mysqld
10、binlong还原到最新状态
MariaDB [(none)]>flush tables with read lock; #锁定所有表
cp -a /data/binlongs/mysql-bin.00000{4..6} /app/
cd /app/
mysqlbinlog --start-position=385 mysql-bin.000004 > bin.sql
mysqlbinlog mysql-bin.000005 >> bin.sql
mysqlbinlog mysql-bin.000006 >> bin.sql
MariaDB [(none)]> set sql_log_bin=0; #临时关闭二进制日记
MariaDB [(none)]> unlock tables; #解锁
MariaDB [(none)]> source /app/bin.sql #还原
MariaDB [(none)]> set sql_log_bin=1; #开启二进制日记
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- PHP访问MySQL查询超时怎么办 2020-03-09
- MySQL中使用WHERE子句的方法 2019-10-25
- 关于laravel后台模板laravel-admin select框的使用详解 2019-10-08
- PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql 2019-09-23
- 使用 Shell 在多服务器上批量操作 2019-09-23
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash