Mysql-xtrabackup 与MySQL5.7 binlog 实现数据即时点恢复
Mysql-xtrabackup 与MySQL5.7 binlog 实现数据即时点恢复
一、数据库准备
1. rpm -e mariadb-libs postfix
tar xf mysql-5.7.14-1.el7.x86_64.rpm-bundle.tar
2. 安装
yum install mysql-community-client-5.7.14-1.el7.x86_64.rpm mysql-community-server-5.7.14-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.14-1.el7.x86_64.rpm mysql-community-libs-5.7.14-1.el7.x86_64.rpm mysql-community-common-5.7.14-1.el7.x86_64.rpm
3. 数据库初始化
5.6:mysql_install_db --user=mysql
有可能报错-> 解决方法:yum install perl-Data-Dumper -y
5.7: mysqld --initialize --user=mysql
tail /var/log/mysqld.log
………
2017-12-01T02:18:54.261204Z 1 [Note] A temporary password is generated
for root@localhost: Xrpwbb#hP8yp
4. 启动服务并登录数据库
[root@localhost ~]# mysql -uroot -pXrpwbb#hP8yp
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
报错解决:
[root@localhost ~]# chown -R mysql:mysql /var/lib/mysql
[root@localhost ~]# systemctl restart mysqld
5. 修改数据库密码
[root@localhost ~]# mysqladmin -uroot -pXrpwbb#hP8yp password 123456
6. vim /etc/my.cnf
添加
.............
server-id=1
log-bin=mysql-bin //开启binlog日志
character-set-server=utf8 //设置字符集
validate_password=off //关闭密码检测插件
7. 准备库表素材
[root@localhost ~]# mysql -uroot -p123456 -e 'create database db1;'
[root@localhost ~]# mysql -uroot -p123456 -e 'create table db1.t1(id int,name varchar(20));'
[root@localhost ~]# mysql -uroot -p123456 -e 'insert into db1.t1 values(1,"a"),(2,"b"),(3,"c");'
[root@localhost ~]# mysql -uroot -p123456 -e 'select * from db1.t1;'
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+------+
二. 安装percona-xtrabackup
1. 使用innobackup完全备份
创建backup用户:
[root@localhost ~]# mysql -uroot -p123456 -e "grant SELECT,RELOAD,SHOW DATABASES,LOCK TABLES,SUPER,REPLICATION CLIENT,CREATE TABLESPACE,PROCESS on *.* to backup@'localhost' identified by '123456';"
完全备份:
[root@localhost ~]# mkdir -p /bak/full
[root@localhost~]# innobackupex --user=backup --password=123456 --no-timestamp /mysqlbackup/full/full_`date +%F`
查看
[root@localhost full]# ls
full_2017-12-02-11:21:08
[root@localhost full]# cd full_2017-12-02-11\:21\:08/
[root@localhost full_2017-12-02-11:21:08]# ls
backup-my.cnf ibdata1 sys xtrabackup_info
db1 mysql xtrabackup_binlog_info xtrabackup_logfile
ib_buffer_pool performance_schema xtrabackup_checkpoints
继续插入数据
[root@localhost ~]# mysql -uroot -p123456 -e 'insert into db1.t1 values(4,"d");'
[root@localhost ~]# mysql -uroot -p123456 -e 'insert into db1.t1 values(5,"e");'
误操作删除
[root@localhost ~]# mysql -uroot -p123456 -e 'delete from db1.t1 where id>3;'
继续插入数据
[root@localhost ~]# mysql -uroot -p123456 -e 'insert into db1.t1 values(6,"f"),(7,"g");'
误删除数据库
[root@localhost ~]# mysql -uroot -p123456 -e 'drop database db1;'
2.过程恢复操作
1) 刷新binlog日志
[root@localhost ~]# mysql -uroot -p123456 -e 'flush logs;'
2) 查看binlog日志
方法一
[root@localhost ~]# mysql -uroot -p123456 -e "show master status;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
#一般查看前一个日志文件
mysql> show binlog events in 'mysql-bin.000002';
+------------------+------+----------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Log_name | Pos | Event_type | Server_id | End_log_pos | Info |
+------------------+------+----------------+-----------+-------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| mysql-bin.000002 | 4 | Format_desc | 1 | 123 | Server ver: 5.7.18-log, Binlog ver: 4 |
| mysql-bin.000002 | 123 | Previous_gtids | 1 | 154 | |
| mysql-bin.000002 | 154 | Anonymous_Gtid | 1 | 219 | SET @@SESSION.GTID_NEXT= 'ANONYMOUS' |
| mysql-bin.000002 | 219 | Query | 1 | 310 | create database db1
………………………
方法二:使用mysqlbinlog
#注意5.7版本,insert语句已经加密,默认看不到,查看时加上选项[root@localhost ~]# mysqlbinlog --base64-output=DECODE-ROWS –vv /var/lib/mysql/mysql-bin.000002
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#171202 13:28:13 server id 1 end_log_pos 123 CRC32 0xfbf051da Start: binlog v 4, server v 5.7.18-log created 170810 20:35:03 at startup
ROLLBACK/*!*/;
# at 123
#171202 13:29:03 server id 1 end_log_pos 154 CRC32 0x7761f86f Previous-GTIDs
# [empty]
# at 154
#171202 31:29:32 server id 1 end_log_pos 219 CRC32 0xb60eddec Anonymous_GTID last_committed=0 sequence_number=1
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 219
#171202 13:29:44 server id 1 end_log_pos 310 CRC32 0xbbe85598 Query thread_id=5 exec_time=0 error_code=0
SET TIMESTAMP=1502368628/*!*/;
SET @@session.pseudo_thread_id=5/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1/*!*/;
SET @@session.sql_mode=1436549152/*!*/;
SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
SET @@session.lc_time_names=0/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
create database db1
/*!*/;
# at 310
#171202 13:31:08 server id 1 end_log_pos 375 CRC32 0x3d54173c Anonymous_GTID last_committed=1 sequence_number=2
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 375
#171302 13:32:08 server id 1 end_log_pos 488 CRC32 0x10705617 Query thread_id=6 exec_time=0 error_code=0
SET TIMESTAMP=1502368628/*!*/;
create table db1.t1(id int,name varchar(20))
…………………………………….
…………………..
3) 根据日志文件提取全备后数据
- 基于时间点提取插入第4条和第5条数据
[root@localhost ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000002 --start-datetime="2017-12-02 13:47:41" --stop-datetime="2017-12-02 13:47:57" > time.sql
- 基于位置点提取插入第6条和第7条数据
[root@localhost ~]# mysqlbinlog /var/lib/mysql/mysql-bin.000002 --start-position="2306" --stop-position="2502" -r position.sql
3.恢复全备
应用日志
[root@localhost ~]# innobackupex --user=backup --password=123456 --apply-log /mysqlbackup/full/full_2017-12-02-13\:47\:17
[root@localhost ~]# systemctl stop mysqld
删除数据文件
[root@localhost ~]# rm -rf /var/lib/mysql/*
还原数据
[root@localhost ~]# innobackupex --user=backup --password=123456 --copy-back / mysqlbackup/full/full_2017-12-02-13\:47\:17
授权
[root@localhost ~]# chown -R mysql.mysql /var/lib/mysql
[root@localhost ~]# systemctl restart mysqld
检查全备:
[root@localhost ~]# mysql -uroot -p -e 'select * from db1.t1;'
Enter password:
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
+------+------+
4. 增量恢复
[root@localhost ~]# mysql -uroot -p < time.sql
Enter password:
[root@localhost ~]# mysql -uroot -p -e 'select * from db1.t1;'
Enter password:
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
+------+------+
[root@localhost ~]# mysql -uroot -p < position.sql
Enter password:
[root@localhost ~]# mysql -uroot -p -e 'select * from db1.t1;'
Enter password:
+------+------+
| id | name |
+------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| 4 | d |
| 5 | e |
| 6 | f |
| 7 | g |
+------+------+
Mysql-xtrabackup 与MySQL5.7 binlog 实现数据即时点恢复的更多相关文章
- Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~
导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 当然啦, ...
- 涂抹mysql笔记-数据备份和恢复
<>物理备份和逻辑备份<>联机备份和脱机备份<>本地备份和远程备份<>完整备份和增量备份<>完整恢复和增量恢复<>复制表相关文件 ...
- xtrabackup迁移mysql5.7.32
问题描述:利用外部xtrabackup工具来做迁移mysql数据库,或者恢复数据库 xtrabackup迁移mysql 1.环境 mysql源库 mysql目标迁移库 IP 192.168.163.3 ...
- Mysql中错误日志、binlog日志、查询日志、慢查询日志简单介绍
前言 数据库的日志是帮助数据库管理员,追踪分析数据库以前发生的各种事件的有力根据.mysql中提供了错误日志.binlog日志(二进制日志).查处日志.慢查询日志.在此,我力求解决下面问题:各个日志的 ...
- python脚本:在Ubuntu16系统上基于xtrabackup2.4和mysql5.7实现数据库数据的自动化备份和恢复,亲测有效!
1 安装教程 官网安装教程:https://www.percona.com/doc/percona-xtrabackup/2.4/installation/apt_repo.html -------- ...
- MySQL 利用SQL线程对Binlog操作
背景: 对于MySQL的binlog的查看都是用其自带的工具mysqlbinlog进行操作的,其实还有另一个方法来操作binlog,就是Replication中的SQL线程去操作binlog,其实bi ...
- MySQL 利用SQL线程对Binlog操作(转)
背景: 对于MySQL的binlog的查看都是用其自带的工具mysqlbinlog进行操作的,其实还有另一个方法来操作binlog,就是Replication中的SQL线程去操作binlog,其实bi ...
- 在MySQL中使用init-connect与binlog来实现用户操作追踪记录
在MySQL中使用init-connect与binlog来实现用户操作追踪记录 分类: MySQL 前言: 测试环境莫名其妙有几条重要数据被删除了,由于在binlog里面只看到是公用账号删除的,无法查 ...
- mysql中不同事务隔离级别下数据的显示效果--转载
事务是一组原子性的SQL查询语句,也可以被看做一个工作单元.如果数据库引擎能够成功地对数据库应用所有的查询语句,它就会执行所有查询,如果任何一条查询语句因为崩溃或其他原因而无法执行,那么所有的语句就都 ...
随机推荐
- postgresql data数据目录路径迁移
默认的数据库路径是/var/lib/pgsql/9.x/data 将现有的数据库文件全部拷贝到新的数据库路径下,然后重启 新建一个路径作为新的数据库数据路径,假如是/home/data sudo mk ...
- web 前端 转盘界面
http://www.cnblogs.com/arfeizhang/p/turntable.html "如果有个做转盘的需求,你准备怎么做?设计师只会提供一个转盘的图片,其余都需要你完成,不 ...
- Swift AVFoundation 二维码扫描和生成
项目最终不须要支持iOS6了(泪崩),在二维码扫描这一块,可以全然的放弃ZXing库,改用系统的AVFoundation了,拿swift写了个Demo,效果例如以下: github地址:点这里 有关A ...
- linux grub启动密码验证设置
1.认识启动配置选项 [root@server5 ~]# cat /boot/grub/grub.conf # grub.conf generated by anaconda # # Not ...
- .bss,.data,.text,.rodata
那天工作时候发现build的时候发现问题, 问题内容是:.text的空间太小了. 我一直以为写代码,就真是弄懂代码怎么写,式样书怎么写,或者弄懂代码的问题所在, 没有想到在build的时候出现问题.结 ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- 简单配置Nginx 指向本地端口,并开启SSL
简单配置Nginx 指向本地端口,并开启SSL,如果要开启SSL,必须使用域名去申请SSL key,一般是两个文件,一般是要收费的. # 在/etc/nginx/nginx.conf 的文件中有下面一 ...
- [深入理解Android卷一全文-第八章]深入理解Surface系统
由于<深入理解Android 卷一>和<深入理解Android卷二>不再出版.而知识的传播不应该由于纸质媒介的问题而中断,所以我将在CSDN博客中全文转发这两本书的全部内容. ...
- JQuery------实现鼠标摁下抬起时div背景色改变
作用:使用自定义一个按钮 代码: <div class = 'btn'>按钮</div> $(".btn").mousedown(function () { ...
- org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService: mapreduce_shuffle do
在yarn-site.xml 配置文件中增加: <property> <name>yarn.nodemanager.aux-services</name> < ...