MySQLbackup备份MySQL主从_mysql扩展:xtrabackup备份和做主从
xtrabackup 只能备份引擎为innodb的数据
后来innobackeupex 则可以备份mysiam
(使用mysqldump 备份大量数据时会很慢,使用xtrabackup则很快,且把所有数据文件都会备份ls /data/mysql)
备份前保证mysql服务开启
mysql 的数据目录我的放在/data/mysql
一、使用xtrabackup全量备份过程:
1.安装
1.1 安装rpm包(只有下载这个rpm,才能)
rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
1.2 使用yum 下载xtrabackup
yum list |grep xtrabackup (过滤所需的包)
安装: yum install -y percona-xtrabackup
(安装完后使用备份的命令:innobackupex)
2.mysql中创建备份用户:
mysql -uroot -p123456
2.1 GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'backuser'@'localhost' identified by '123456';
2.2 刷新权限操作(创建完用户时操作)
flush privileges;
(刷新完后退出mysql)
3.备份操作:
3.1 创建备份目录:
mkdir /data/backup
3.2 执行备份命令:
innobackupex --defaults-file=/etc/my.cnf --user=backer --passwork='123456' /data/backup
(--defaults-file=/etc/my.cnf 这个选项是要放在所有的参数之前,文件路径由每个人设定的配置文件为主,且只有指定它才可以找到datadir
的路径,就是mysql服务的数据目录文件。)
执行命令后报错:
问题原因是它自动的去找它默认的.sock(/var/lib/mysql/mysql.sock)文件。所以在命令中我们要指定我们定义的.sock文件路径。
innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock /data/backup
(/tmp/mysql.sock是我在配置文件my.cnf中定义的)
3.3查看备份文件:
cd /data/backup/
ls
du -sh *
原文件和备份文件对比:
(备份出来的文件不能直接复制至mysql的数据文件直接使用。因为备份文件是有自带格式的。)
4.数据恢复
4.1 停止mysql服务:
/etc/init.d/mysqld stop
4.2删除mysql数据库文件(datadir的路径文件)
删除原数据:(为了安全还是先把原数据目录文件复制移动)
mv /data/mysql /data/mysql.bak
mkdir /data/mysql
chown -R mysql:mysql /data/mysql //指定属主和属组,因为原来文件的属主和属组都是mysql
(不/data/mysql/下的所有文件的属主和属组修改成mysql,则在启动服务时无法启动,出现下图的错误:(chown -R ,-R是针对目录,作用是级联更改)
)
4.3恢复数据:
(1)相当初始化步骤:
innobackupex --use-memory=512M --apply-log
2018-05-13_11-05-07
(
--use-memory= 这个选项是为了加快备份速度的,分配大小主要看我们机器内容的大小而定,--apply-log 指定具体备份数据文件,因为我们备份的数据文件是以时间点命名的。)
(2)真正备份命令:
innobackupex --defaults-file=/etc/my.cnf --copy-back /data/backup/
2018-05-13_11-05-07
(--copy-back 指定备份文件路径,备份目录为全量备份)
(ibdatal是绝对不能删除的,真正存储数据的文件)
恢复完数据后,数据的属主和数组要修改为mysql 否则启动不了服务。
chown -R /data/mysql
一般业务操作:先备份后做主从,备份尽量在凌晨操作.
!!!!以上这种操作的备份方式是全量备份执行过程!!
二、增量备份
启动mysql服务:且同用上面操作的mysql备份用户。
1.创建备份目录:mkdir /data/backup/
2.先全量备份:
innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock /data/backup
3.模拟增量备份:
3.1 创建 一个数据库,并导入数据:
mysql -uroot -p123456 -e "create database dbbackup"
mysqldump -uroot -p123456 zrlog >/tmp/zrlog.sql
mysql -uroot -p123456 dbbackup
3.2 增量备份:
3.2.1 第一次增量备份
innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/全量备份文件(2018-05-13_15-09-13)
(要注意的是--incremental和--incremental-basedir,--incremental-basedir后面加的是全量备份文件的路径)
执行命令后在/data/backup/生成一个文件,大小为新创数据库内容大小:
3.2.1 第二次增量备份
(
创建 一个数据库,并导入数据:
mysql -uroot -p123456 -e "create database dbbackup2"
mysql -uroot -p123456 dbbackup2
)
备份命令:(和第一次增量备份的命令基本一样,但是最后备份目录是基于第一次增量备份目录之上的)
innobackupex --defaults-file=/etc/my.cnf --user=backuser --password='123456' -S /tmp/mysql.sock --incremental /data/backup --incremental-basedir=/data/backup/第一次增量备份目录
此时就有了一个全量备份文件和两个增量备份文件:
4.数据恢复
4.1 停止mysql服务:/etc/init.d/mysqld stop
4.2 删除mysql 原数据
rm -rf /data/mysql/*
4.3 数据恢复加载初始化(类似初始化过程)
4.3.1 先全备初始:
innobackupex --apply-log --redo-only /data/backup/全量备份目录
(innobackupex --apply-log --redo-only /data/backup/2018-05-13_15-09-13 >/tmp1.log 2> /tmp/1.log)
注意:比仅仅全量备份初始化多了 --redo-only 选项,>/tmp1.log 2> /tmp/1.log是把输出放置一个文件(正确或错误输出)
4.3.2 第一次增量备份初始:
innobackupex --apply-log --redo-only /data/backup/全量备份目录 --incremental-dir=/data/backup/第一次增量备份目录
4.3.2 第二次增量备份初始:
innobackupex --apply-log /data/backup/全量备份目录 --incremental-dir=/data/backup/第二次增量备份目录
(这一步的时候不需要--redo-only选项)
4.3.3 执行应用操作:
innobackupex --apply-log /data/backup/全量备份目录
4.4真正备份命令:
innobackupex --copy-back /data/backup/全量备份文件
(执行完命令后可以发现我们增量的数据量文件)
最后执行一下 chown -R mysql:mysql /data/mysql 修改属主和数组,否则启动不了mysql服务。
注意:
1.在进行增量备份的时候,第一次增量备份应基于全量备份之上,第二次基于第一增量备份之上,依次类推。
2.当我们增量备份都是在增加数据没有删除数据的情况下,我们恢复数据时可以直接初始化全量备份和最后一次增量备份即可。最后执行innobackupex --apply-log /data/backup/全量备份目录和innobackupex --copy-back /data/backup/全量备份文件
一般企业mysql的架构用的是哪一种呢?
主从
innobackex 要求数据库版本在5.6以上
使用 Xtrabackup 在线对MySQL做主从复制
1.主库操作:
1.1 创建复制账号:
mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_ali'@'192.168.5.%' IDENTIFIED BY 'slave_ali_pass';
mysql> FLUSH PRIVILEGES;
1.2 赋予备份用户权限:
mysql> CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkppass';
mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT,PROCESS,SUPER ON *.* TO 'bkpuser'@'localhost';
mysql> FLUSH PRIVILEGES;
1.3.全量备份
innobackupex --defaults-file=/opt/mysql/my.cnf --host=localhost --port=3306 --user=bkpuser --password=${BKP_PASS} /data/backup/mysql
把全量备份目录复制到(做从库)的目录,rsync
2.全量备份(从库上操作)
在恢复的数据库服务器(从库)上:
2.1 恢复准备
$ innobackupex --use-memory=16G --apply-log 全量备份文件
2.2 确认数据库是关闭的,并且datadir,目录下为空
$ innobackupex --defaults-file=/opt/mysql/my.cnf --use-memory=16G --copy-back全量备份文件
2.3数据执行copy-back完成数据恢复后
修改数据文件的属性:
chown -R mysql.mysql /opt/mysql_data
3.启动从库
3.1 启动数据库,注意看日志
/opt/mysql/bin/mysqld_safe --defaults-file=/opt/mysql/my.cnf &
提示:如果你不确定这个库是谁的从库,保守起见加上--skip-slave-start启动,兴许能防止数据不一致。
3.2change master
登录数据库:
$ mysql -uslave_ali -p'slave_ali_pass' -S /opt/mysql_data/mysql.sock
mysql> change master to master_host=MASTER_HOST, master_port=3306,
master_user='slave_ali',master_password='slave_ali_pass', master_log_file='mysql-bin.000135', master_log_pos=262484673;
上面的 master_log_file 和 master_log_pos 即是输出的值,也可以在新的数据目录下xtrabackup_binlog_info找到信息。
3.3验证同步延迟
从库执行 show slave status\G
MySQLbackup备份MySQL主从_mysql扩展:xtrabackup备份和做主从相关推荐
- 刘子佼 mysql 下载_MySQL数据管理之备份恢复案例解析 23讲 Mysql备份恢复实战 视频教程...
课程名称:MySQL数据管理之备份恢复案例解析 23讲 Mysql备份恢复实战课程简介: 课程独家解析MySQL 5.6最新特性,课程讲师刘子佼讲课风格幽默,善于与人沟通,善于组建和协调团队攻克技术难 ...
- mysql增量_mysql实时增量备份
采用binlog日志的好处 掌控所有更改操作,必要时可用于恢复数据 数据库主从复制的必要条件 [linyouyi@localhost~]# vim /etc/my.cnf [mysqld] .. .. ...
- linux差异备份mysql出错_MySQL备份可能遇到的坑
MySQL备份工具,支持各种参数选项,使用不同的选项极有可能影响备份处理过程.本文使用我们常规认为合理的备份参数,测试/验证是否存在容易忽视的坑 # 常规备份参数 # mysqldump shell& ...
- java 备份 mysql 日志_MySQL 数据备份与还原
点击上方"Java知音",选择"置顶公众号" 技术文章第一时间送达! 作者:逆心 链接:https://www.cnblogs.com/kissdodog 公众 ...
- mysql集群会备份数据吗_MySQL 集群备份2-功能分析
角色划分 控制节点:调度备份任务的节点 数据库节点:需要执行备份的数据库服务节点 存储节点:统一存放备份文件的节点(参考),可以是文件系统或者存储 备份验证节点:恢复备份文件,验证备份的有效性 备份I ...
- mysql 备份命令行_mysql命令行备份方法
一.mysql备份 1.备份命令 格式:mysqldump -h主机IP -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql # 本地备份可以不添加端口和主机IP ...
- mysql双机备份最简单_MySQL的本地备份和双机相互备份脚本
先修改脚本进行必要的配置,然后以root用户执行. 1. 第一执行远程备份时先用 first参数. 2. 本地备份用local参数 3. 远程备份不用参数注意1 注意:需要在另一主机上的Mysql用户 ...
- qldump 备份所有表_MySQL中的备份和恢复是怎样执行的?
- 点击上方"中国统计网"订阅我吧!-MySQL备份 MySQL中的逻辑备份是将数据库中的数据备份为一个文本文件,备份的文件可以被查看和编辑.在MySQL中,使用mysaldump ...
- 定时备份mysql脚本_每天自动备份mysql脚本
下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. 1.执行 crontab -e 00 00 * * * /bin/bash yourpat ...
最新文章
- php 请求方式,PHP发起HTTP请求有哪几种方式?
- 图片分类赛官方baseline解读!
- 马斯克Neuralink联合创始人宣布离职,此前尚未推出上市产品
- BZOJ4350: 括号序列再战猪猪侠
- 初始化栈的代码_数据结构中的栈,你知道多少?
- Android自定义组合布局,Android 流式布局 + 自定义组合控件
- Failed to connect to 127.0.0.1 port 1080: Connection refused package:git
- mysql datasource.url_SpringBoot配置数据源DataSource
- utilities(C++)——错误提示
- String 类实现 以及 流插入/流提取运算符重载
- K8s如何在不重新打版本号的情况 更新镜像
- 使用js替换数组中元素
- 在线JSON格式化-工具栈
- 几个冷门linux与BSD发行版中文学习论坛
- 【零样本知识蒸馏】(六)NeutIPS 2019:Zero-shot knowledge transfer via adversarial belief matching
- linux chsh命令参数及用法详解(linux设置系统shell命令) 详细出处参考:http://www.jb51.net/LINUXjishu/57945.html
- 关于Flex布局属性详解
- ProtonMail邮箱
- Elastic-Job开发指南
- c语言中if(a字节4),【鲁班】的意思是什么?【鲁班】是什么意思?