mysql 数据备份方案_MySQL常见备份方案
MySQL常见备份方案有以下三种:
mysqldump + binlog
lvm + binlog
xtrabackup
本例为方便演示,数据库里面数据为空。下面开始动手
mkdir /opt/backup #创建备份目录
mkdir-p /data/3309/{data,binlog}
cd/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/3309/data/ --basedir=/usr/local/mysql/chown mysql.mysql-R /data/3309/cp support-files/my-small.cnf /data/3309/my.cnf #提供配置文件
vim/data/3309/my.cnf #编辑配置文件
[client]
#password = your_password
port = 3309
socket = /tmp/mysql.sock4
# The MySQL server
[mysqld]
port = 3309
socket = /tmp/mysql.sock4
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1M
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 128K
datadir = /data/3309/data
server-id = 3309
log-bin=/data/3309/binlog/mysql-bin #二进制日志位置
binlog_format=mixed #二进制日志格式
log-error = /data/3309/mysql-err #错误日志位置
innodb_file_per_table = 1 #为每一个新数据表创建一个表空间文件
sync_binlog = 1 #写二进制日志的时候,同步到磁盘上面
cp /data/3309/my.cnf /opt/backup/ #备份配置文件
mysqld_safe --defaults-file=/data/3309/my.cnf & #启动mysql
1、利用mysqldump完全备份mysql,配合二进制日志备份实现增量备份
mysqldump 选项请参考http://wangweiak47.blog.51cto.com/2337362/1589304
1.1提供模拟数据
mysql -S /tmp/mysql.sock4 #连接mysql
mysql>use test;
Database changed
mysql> create table test (id int(2),comment char(30)); #创建表
Query OK,0 rows affected (0.34sec)
mysql> insert into test values (1,'yun zhonghe'); #插入数据
Query OK,1 row affected (0.16 sec)
1.2全量备份:
mysqldump -S /tmp/mysql.sock4 -A -B -F -x --events --triggers --routines --master-data=2 > /opt/backup/all_data-`date +%F--%U`.sql
1.3 模拟数据发生改变
mysql> insert into test values (2,'yun zhonghe2'); #再插入一条数据。
Query OK,1 row affected (0.11 sec)
1.4 增量备份
mysqladmin -S /tmp/mysql.sock4 flush-logs #增量备份前,先滚动一下二进制日志。
cp `cat/data/3309/binlog/mysql-bin.index | tail -n 2 | head -n 1` /opt/backup/ #备份二进制日志
1.5 数据损坏
rm -rf /data/3309/killall mysqld
1.6 恢复
上面已经提供了步骤,直接复制过来使用。
mkdir -p /data/3309/{data,binlog}
cd/usr/local/mysql/scripts/mysql_install_db --user=mysql --datadir=/data/3309/data/ --basedir=/usr/local/mysql/cp/opt/backup/my.cnf /data/3309/chown mysql.mysql-R /data/3309/mysqld_safe--defaults-file=/data/3309/my.cnf &mysql-S /tmp/mysql.sock4 #连接mysql查看数据
mysql> set sql_log_bin=0;
Query OK,0 rows affected (0.00sec)
mysql> show variables like 'sql_log_bin';+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| sql_log_bin | OFF |
+---------------+-------+
1 row in set (0.00sec)
mysql> source /opt/backup/all_data-2015-10-01--39.sql
mysql> select * fromtest.test; #还缺一个数据+------+-------------+
| id | comment |
+------+-------------+
| 1 | yun zhonghe |
+------+-------------+
1 row in set (0.00sec)
mysql> source /tmp/incres-1.sql;
mysql> select * fromtest.test; #数据已恢复+------+--------------+
| id | comment |
+------+--------------+
| 1 | yun zhonghe |
| 2 | yun zhonghe2 |
+------+--------------+
2 rows in set (0.00sec)
mysql> set sql_log_bin = 1; #打开二进制记录开关。
1.7小结,mysqldump适合于数据量较小的场合,它的优点是有众多选项,使用起来非常灵活,缺点是数据量一旦过大,非常耗时耗力。
2、使用lvm进行全备。
lvm快照卷原理参考
http://baike.baidu.com/link?url=iEpO_zm_AbHbk-ijQa8jNcFRoPPG2NdTYb_cRoQ7mjQb_ag9g-fL7yHPXV7Atp2j3J0L5xYynM9KKLIwycW_S_
2.1 数据接着上次继续开始。
2.2 全备。
需保证数据库存放在逻辑卷组上面,才行。
2.2.1首先锁表和滚动日志
mysql> flush table with read lock;
Query OK,0 rows affected (0.02sec)
mysql-S /tmp/mysql.sock4 -e 'show master status;' > /backup/master.info #记录当前日志信息
mysqladmin-S /tmp/mysql.sock4 flush-logs #滚动日志
2.2.2创建快照
lvcreate -s -n snap_data -L 500M /dev/vg_node5/mylv_data
Logical volume"snap_data" created
2.2.3 解锁表
mysql>unlock tables;
Query OK,0 rows affected (0.00 sec)
2.2.4 复制快照卷数据到备份目录下
mkdir -p /backup/lvm
mount/dev/vg_node5/snap_data /mnt/lvm
cp-R /mnt/3309/*/backup/lvm
2.2.5 删除快照
umount /mnt
lvremove/dev/mapper/vg_node5-snap_data
Do you really want to remove active logical volume snap_data? [y/n]: y
Logical volume"snap_data" successfully removed
2.3增量备份,只需和定时复制binlog到备份目录下面即可
2.4恢复,只需要直接拷贝备份目录下的文件即可
killall mysqld
rm-rf /data/3309/cp-R /backup/lvm/ /data/3309/chown mysql.mysql-R /data/3309/mysqld_safe--defaults-file=/data/3309/my.cnf &ss-tnl | grep 330LISTEN0 50 *:3309 *:*mysql> select * fromtest.test; #数据未改变+------+--------------+
| id | comment |
+------+--------------+
| 1 | yun zhonghe |
| 2 | yun zhonghe2 |
+------+--------------+
2.5小结:
lvm实现物理备份速度相对mysqldump来比较快,实现也比较简单,是不错的选择。
缺点:数据目录必须存放在lvm卷组上面
3、使用xtrabackup实现热备。
请自行到官网下载并安装对应的rpm包。
使用方法参考:详细参考:
http://www.cnblogs.com/Amaranthus/archive/2014/08/19/3922570.html
3.1创建一个具有最小权限的用户
mkdir /backup/xtrabackup
mysql> grant RELOAD, LOCK TABLES, REPLICATION CLIENT on *.* to 'bkuser'@'localhost' identified by '123456';
mysql> flush privileges;
3.2完全热备。
使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。
innobackupex --user=bkuser --password=123456 --socket=/tmp/mysql.sock4 --defaults-file=/data/3309/my.cnf /backup/xtrabackup/#相关选项自行help。
#nnobackupex: completed OK!#出现此选项代表备份完成。
ls/backup/xtrabackup/
2015-10-01_17-00-13
(1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;
每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。
(2)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。
(3)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position。
(4)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;
(5)backup-my.cnf —— 备份命令用到的配置选项信息;
3.3提供改变数据。
mysql> insert into test.test values (3,'yun zhonghe3');
Query OK,1 row affected (0.03 sec)
3.4增量备份
innobackupex --user=bkuser --password=123456 --socket=/tmp/mysql.sock4 --defaults-file=/data/3309/my.cnf --incremental /backup/xtrabackup/ --incremental-basedir=/backup/xtrabackup/2015-10-01_17-00-13/
3.5 模拟数据损坏
rm -rf /data/3309/killall mysqld
3.6增量备份恢复
innobackupex --apply-log --redo-only /backup/xtrabackup/2015-10-01_17-00-13/innobackupex--apply-log --redo-only /backup/xtrabackup/2015-10-01_17-00-13/ --incremental-dir=/backup/xtrabackup/2015-10-01_17-15-00/
#注意,多实例的话,仍然需要备份配置文件,启动的时候需要binlog目录。
mkdir -p /data/3309/{data,binlog}
chown mysql.mysql-R /data/cp/opt/backup/my.cnf /data/3309/innobackupex--copy-back /backup/xtrabackup/2015-10-01_17-00-13/ --defaults-file=/opt/backup/my.cnf #恢复数据。
3.6启动数据库查看。
mysqld_safe --defaults-file=/data/3309/my.cnf &mysql-S /tmp/mysql.sock4
mysql> select * fromtest.test; #数据修复完成。+------+--------------+
| id | comment |
+------+--------------+
| 1 | yun zhonghe |
| 2 | yun zhonghe2 |
| 3 | yun zhonghe3 |
+------+--------------+
3 rows in set (0.01 sec)
小结:
xtrabacup具有如下特点。
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;
因此建议学会熟练使用xtrabackup进行备份和还原
mysql 数据备份方案_MySQL常见备份方案相关推荐
- mysql 每日数据备份方案_mysql数据库备份方案
方案 以一天一次的频率,在每天凌晨2:00备份生产环境数据库至文件服务器.为保证备份文件不过多占用文件服务器空间,备份文件以tgz压缩包格式保存且只保存7天的备份文件.另外每次备份都保存备份日志,一旦 ...
- mysql的数据备份问题_mysql数据库备份的问题
我有一个MySQL数据库,MySQL安装环境是==============假想环境:MySQL安装位置:C:\mysqlfile论坛数据库名称为:oiptvMySQLroot密码:123456数据库备 ...
- mysql 自动备份发送_MySQL自动备份数据并通过邮箱发送
实验环境:腾讯云服务器 操作系统:CentOS 7 腾讯云.阿里云默认关闭了25端口,需要采用465端口通过smtp来发送邮件,由于个人博客一般数据量都不大,可以直接备份并通过邮件来把数据直接以附件形 ...
- mysql data目录 清空_Mysql binlog备份数据及恢复数据,学会这个,我在也不怕删库跑路啦~...
导读 我一直都主张,技多不压身(没有学不会的技术,只有不学习的人),多学一项技能,未来就少求人一次.网上经常听到xxx删库跑路,万一真的遇到了,相信通过今天的学习,也能将数据再恢复回来~~~ 介绍 记 ...
- mysql数据库备份工具_MySQL数据库备份工具和六种方法介绍
关于Mysql备份数据库的方法,烈火网小编总结了目前所有的备份方式,有以下几种:mysqldump.mysqlhotcopy.BACKUP TABLE .SELECT INTO OUTFILE,又或者 ...
- mysql 物理备份工具_mysql物理备份工具Xtrabackup安装配置
mysql物理备份工具Xtrabackup安装配置 1Xtrabackup工具介绍 Xtrabackup是一个对InnoDB做物理数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工具 ...
- mysql的增量备份方法_Mysql 增量备份,全部备份实现方法以及自动化脚本
前情摘要 自己作死干了一件特别蠢的事情(具体略) 然后开始研究如何进行增量备份 增量备份 原理 mysql 有个 binlog 的功能,会记录所有的用户的操作,可以依靠这个,配合全备份,将数据库回滚到 ...
- mysql数据库备份总结_MySQL数据库备份总结
一个企业的正常运行,数据的完整性是最关键的:所以我们需要在工作中要很熟练的掌握数据的备份与恢复方法:下面是对Mysql数据库备份的三种方法总结,希望对大家会有所帮助 备份开始前的工作环境准备: 1.创 ...
- mysql xtrabackup 保护模式_MySQL Xtrabackup备份原理和实现细节
备份原理: XtraBackup基于InnoDB的crash-recovery功能.它会复制innodb的data file,由于不锁表,复制出来的数据是不一致的,在恢复的时候使用crash-reco ...
最新文章
- 微软最强命令行工具 Windows Terminal,强势霸榜GitHub
- https证书pfx 生成 pem,crt,key
- android打不开,android加入权限应用打不开
- Java开发笔记(五十六)利用枚举类型实现高级常量
- 【PHP】PHP include()和require()方法的区别
- python教程-Python入门教程完整版(懂中文就能学会)
- 2015年最好的员工心态培养 -- 我们需要把简单的事情做到极致
- git init github
- 计算机硬件基本常识面试,硬件工程师面试题集(含答案_很全)要点
- 【转载】20款密码破解工具
- 汉字按笔画书写 生成动画 ,svg (使用Hanzi Writer)
- 在线matlab,亲测好用
- 打开计算机后无法缩小怎么办,电脑打开窗口小怎么办
- 大数据apache-spark问题总结
- 2022-2028全球及中国电动直线执行器行业研究及十四五规划分析报告
- docker部署微服务项目
- 关于等值连接,自然连接的理解
- 基于单片机的电子钟/万年历系统设计教程(#0418)
- Vue仿饿了么app项目总结
- 关于apm飞控烧bootloader