-
2021-01-19 23:05:03
文章转自:http://www.linuxidc.com/Linux/2014-03/98710.htm
冷备份(OFF, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最安全的方法。冷备份的优点: 1.是非常快速的备份方法(只需拷贝文件)2.容易归档(简单拷贝即可)3.容易恢复到某个时间点上(只需将文件再拷贝回去)4.能与归档方法相结合,作数据库“最新状态”的恢复。5.低度维护,高度安全。冷备份的缺点: 1.单独使用时,只能提供到“某一时间点上”的恢复。2.在实施备份的全过程中,数据库必须要作备份而不能作其它工作。也就是说,在冷备份过程中,数据库必须是关闭状态。3.若磁盘空间有限,只能拷贝到磁带等其它外部存储设备上,速度会很慢。4.不能按表或按用户恢复。值得注意的是冷备份必须在数据库关闭的情况下进行,当数据库处于打开状态时,执行数据库文件系统备份是无效的 。而且在恢复后一定要把数据库文件的属组和属主改为mysql。热备份 (ON,快)热备份是在数据库运行的情况下,备份数据库操作的sql语句,当数据库发生问题时,可以重新执行一遍备份的sql语句。热备份的优点:1.可在表空间或数据文件级备份,备份时间短。2.备份时数据库仍可使用。3.可达到秒级恢复(恢复到某一时间点上)。4.可对几乎所有数据库实体作恢复。5.恢复是快速的,在大多数情况下在数据库仍工作时恢复。热备份的缺点:1.不能出错,否则后果严重。2.若热备份不成功,所得结果不可用于时间点的恢复。3.因难于维护,所以要特别仔细小心,不允许“以失败而告终”。
更多相关内容 -
Mysql冷备份(RDS冷备到本地)
2021-02-02 07:23:56一直觉得冷备毫无技术含量可言拿oracle为例,步骤无非就是关库,cp数据文件、控制文件、redolog文件(archivelog文件)到另一个关闭的oracle库就完事了然而在mysql上执行同样的操作,开启mysql之后确发现了诸如下面的...一直觉得冷备毫无技术含量可言
拿oracle为例,步骤无非就是关库,cp数据文件、控制文件、redolog文件(archivelog文件)到另一个关闭的oracle库就完事了
然而在mysql上执行同样的操作,开启mysql之后确发现了诸如下面的报错:
InnoDB: is in the future! Current system log sequence number 73 815920160.
按照网上的快餐文章说的备份ib_logfile0 ib_logfile1 根本就是然并卵
此后一直通过逻辑备份对数据库进行备份恢复,直到最近研发把一个测试库搞崩,经过一番操作之后终于理解了如何通过cp来恢复Mysql库
这里主要涉及到的知识是mysql库data路径和log路径的变更
CP拷贝主要是2个大文件夹,一个是data,一个是log
1.关闭数据库,将源路径的data和log分别拷贝到目标路径的对应文件夹下
2.修改/etc/my.cnf配置的logfile和datafile路径,将源路径修改为目标(实际)路径
3.将log下面的binlog-index进行编辑,将源路径修改为目标(实际)路径
4.修改/etc/init.d/mysql脚本中datadir的值
需要特别注意的是,拷贝时采用cp -a ,这样可以保证复制数据的属性和原来一致;保险起见完成cp之后,检查一下属主和属组是否都是mysql而不是root
而mysql的冷备就更简单了,对于目标库来说,上面的1,2,4点是不需要变动的,唯一需要修改的就是第3点里面binlog-index的路径而已了
########################################
原理已经在上面了,RDS冷备到线下库仅仅就是一个实验而已
待续…
########################################
-
MySQL 冷备份操作 + shell 脚本自动备份
2021-01-29 14:43:15个人觉得冷备份数据除了操作方法简单,最大的优点便是安全 为了对比,可参考前面整理的 —— 【MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]】 在此还是声明一下 个人觉得,冷备份也可以不在停机状态的 ...背景
-
对于概念的说明不做赘述
个人觉得冷备份数据除了操作方法简单,最大的优点便是安全
为了对比,可参考前面整理的 ——【MySQL 使用 XtraBackup 进行数据热备份指导 [全量+增量]】
-
在此还是声明一下
个人觉得,冷备份也可以不在停机状态的
只要当下没有多少更新操作业务即可 -
环境
CentOS 7.9 MySQl5.7.32
冷备份/还原全部数据
这种方式,备份了整体的
MySQL 数据
,包含默认数据库"mysql、sys、infomation_schema、performance_schema"
☞ tar 打包冷备份
- 首先,要查询到数据存放目录
可以通过查看"my.cnf"
文件,找到参数:datadir
或者,执行 sql 语句:show variables like "%datadir%";
如下结果,则我的数据存放目录为:"/var/lib/mysql/data"
- 然后,关闭
mysql
服务(模拟冷备份环境)
执行如下命令:
cd /var/lib/mysql # 进入上级目录 tar jcvf data_cold_back.tar.bz2 data/ # 打包压缩数据目录到文件 data_cold_back.tar.bz2
至此,已备份完毕,备份数据即在
"data_cold_back.tar.bz2"
文件中【提示】:
- 为了每次的备份操作方便,可以创建一个执行脚本,
并写入打包指令:touch cold_back.sh # 创建执行脚本
tar jcvf data_cold_back.tar.bz2 data
当需要进行冷备份操作时,chmod -R 755 cold_back.sh # 结予脚本权限
只需执行脚本命令即可(操作会覆盖掉之前备份的压缩文件,没啥不利影响)./cold_back.sh
☞ tar 恢复/还原数据操作
- 首先删除原来的
/var/lib/mysql/data
,或者重命名一下
mv /var/lib/mysql/data /var/lib/mysql/data_back # 为避免出错,重命名一下 tar jxvf data_cold_back.tar.bz2 data # 解压冷备份数据到 data 目录
- 然后,重启
mysql
服务,查看数据就是之前的备份
service mysql start # 普遍的 mysql 启动命令 systemctl start mysql@bootstrap.service # PXC 第一个节点的启动命令
▶▷ 总结
- 首先
我的演示操作都是在目录"/var/lib/mysql/"
下
所有生成的文件也在这里:
tar
压缩命令可以减少存储空间
待还原备份时,进行解压即可
但是要特别注意下,很可能报出这种错误: 【tar 解压缩文件报错: tar: 从成员名中删除开头的“/”解决方法】
【题外话】
个人观点 这种方式的最终目的就是拷贝了数据库 如果像是使用 宝塔管理界面 完全可以直接压缩备份操作的 感觉,这个技术含量不如 —— 使用 XtraBackup 进行数据热备
Shell 脚本自动备份
不过,这种方式需要
MySQL
服务开启,不然无法备份数据- 个人觉得有点像热备份
但是,鄙人的理解是:
因为无法操作事务更新,不同于标准的热备份
可以理解为当下不对外提供数据更新操作
或者当前时间点离开集群
☞ 脚本配置
- 首先创建脚本
touch backup.sh
- 然后,编辑如下信息
#!/bin/bash # 以下配置信息请自己修改 mysql_user="root" #MySQL备份用户 mysql_password="MT123456" #MySQL备份用户的密码 mysql_host="localhost" mysql_port="3306" mysql_charset="utf8" #MySQL编码 backup_db_arr=("test_pxc") #要备份的数据库名称,多个用空格分开隔开 如("db1" "db2" "db3") backup_location=/var/lib/mysql/backup #备份数据存放位置,末尾请不要带"/",此项可以保持默认,程序会自动创建文件夹 expire_backup_delete="ON" #是否开启过期备份删除 ON为开启 OFF为关闭 expire_days=3 #过期时间天数 默认为三天,此项只有在expire_backup_delete开启时有效 # 本行开始以下不需要修改 backup_time=`date +%Y%m%d%H%M` #定义备份详细时间 backup_Ymd=`date +%Y-%m-%d` #定义备份目录中的年月日时间 backup_3ago=`date -d '3 days ago' +%Y-%m-%d` #3天之前的日期 backup_dir=$backup_location/$backup_Ymd #备份文件夹全路径 welcome_msg="Welcome to use MySQL backup tools!" #欢迎语 # 判断MYSQL是否启动,mysql没有启动则备份退出 mysql_ps=`ps -ef |grep mysql |wc -l` mysql_listen=`netstat -an |grep LISTEN |grep $mysql_port|wc -l` if [ [$mysql_ps == 0] -o [$mysql_listen == 0] ]; then echo "ERROR:MySQL is not running! backup stop!" exit else echo $welcome_msg fi # 连接到mysql数据库,无法连接则备份退出 mysql -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password <<end use mysql; select host,user from user where user='root' and host='localhost'; exit end flag=`echo $?` if [ $flag != "0" ]; then echo "ERROR:Can't connect mysql server! backup stop!" exit else echo "MySQL connect ok! Please wait......" # 判断有没有定义备份的数据库,如果定义则开始备份,否则退出备份 if [ "$backup_db_arr" != "" ];then #dbnames=$(cut -d ',' -f1-5 $backup_database) #echo "arr is (${backup_db_arr[@]})" for dbname in ${backup_db_arr[@]} do echo "database $dbname backup start..." `mkdir -p $backup_dir` `mysqldump -h$mysql_host -P$mysql_port -u$mysql_user -p$mysql_password $dbname --skip_add_locks --skip-lock-tables --default-character-set=$mysql_charset | gzip > $backup_dir/$dbname-$backup_time.sql.gz` flag=`echo $?` if [ $flag == "0" ];then echo "database $dbname success backup to $backup_dir/$dbname-$backup_time.sql.gz" else echo "database $dbname backup fail!" fi done else echo "ERROR:No database to backup! backup stop" exit fi # 如果开启了删除过期备份,则进行删除操作 if [ "$expire_backup_delete" == "ON" -a "$backup_location" != "" ];then #`find $backup_location/ -type d -o -type f -ctime +$expire_days -exec rm -rf {} \;` `find $backup_location/ -type d -mtime +$expire_days | xargs rm -rf` echo "Expired backup data delete complete!" fi echo "All database backup success! Thank you!" exit fi
- 然后,需要对脚本赋予权限
chmod -R 755 backup.sh
- 在需要进行数据备份时,执行指令即可
./backup.sh
- 我的打印信息如下:
( 可以到生成的备份文件目录中查看检验)
[root@localhost percona-xtradb-cluster.conf.d]# /var/lib/mysql/backup.sh Welcome to use MySQL backup tools! mysql: [Warning] Using a password on the command line interface can be insecure. MySQL connect ok! Please wait...... database test_pxc backup start... mysqldump: [Warning] Using a password on the command line interface can be insecure. database test_pxc success backup to /var/lib/mysql/backup/2021-01-29/test_pxc-202101291158.sql.gz Expired backup data delete complete! All database backup success! Thank you!
【提示】:
-
如果是 PXC 集群很可能会报这种错误:
Percona-XtraDB-Cluster prohibits use of LOCK TABLE/FLUSH TABLE <table> WITH READ LOCK with pxc_strict_mode = ENFORCING
百度经验会发现,多数是类似这样的建议:【percona集群mysqldump导出数据库报错】
但是我测试是不管用的
我的做法比较简单,就是将 PXC 节点的配置参数pxc_strict_mode
修改一下
后期可以再改回去
☞
crontab
计划任务像去哪网、12306 都有一个时间段不提供服务,比如,可以设定在凌晨两点,进行自动备份数据
crontab -e
- 添加计划任务
(每天凌晨两点进行备份操作)
00 02 * * * /var/lib/mysql/backup.sh
crontab
计划任务在添加或修改后,需要保存并重启服务才能生效
systemctl restart crond
▶▷ 总结
-
如果不够合理
还是需要自己做些优化的哦 -
对于后期数据的还原其实只要找到备份文件
解压缩得到一个sql
文件
执行指令语句即可mysql -u username -p [数据库名称] < [解压后的 .sql 文件]
参考我的指令如下:
mysql -uroot -p test_pxc < /var/lib/mysql/backup/2021-01-29/test_pxc-202101291229.sql
- 参考文章 —— 【CentOS MySQL 自动备份 shell 脚本】
【题外话】
个人觉得 这种方式倒是挺适合本地测试或者小型项目 最简单的操作就是: 可以进行 .sql 文件的导出操作嘛 使用 Navicat 等数据库工具 就可以很方便的导出数据 并且 导出操作也较为方便
-
-
windows下定时执行mysql冷备份
2021-01-31 02:09:36windows下执行mysql冷备份前言由于业务需要,需要定时对mysql数据库进行备份,因为交易量不算太大,所以没用采用主从同步的方式,采用相对简单的冷备份。bat脚本这边有几个地方需要改动的地方,backup_dir 表示你要...windows下执行mysql冷备份
前言
由于业务需要,需要定时对mysql数据库进行备份,因为交易量不算太大,所以没用采用主从同步的方式,采用相对简单的冷备份。
bat脚本
这边有几个地方需要改动的地方,backup_dir 表示你要备份的文件路径,如果需要备份到其他机器,需要开启远程文件夹共享,uname用户名,这边不推荐用root,用其他账户备份也可以,password登录密码,port端口,dbname要导出的数据库名称。
remain_day 这个变量表示你要保留多少天的备份,这边我是设置为7天,cd D:\mysql-5.7.17-winx64\bin 这个地方记得改成mysql文件夹bin路径,可以先手动执行下看看有没有备份文件生成,如果没问题可以开始配置定时任务。
rem today
set day=%date:~0,4%%date:~5,2%%date:~8,2%
rem save dir
set backup_dir=D:\mysql-backup
set uname=root
set password=onepay@123
set port=3306
set dbname=onepay
rem day for dmp file remaining
set remain_day=7
rem delete files before 7 days
forfiles /p "%backup_dir%" /d -%remain_day% /c "cmd /c echo deleting @file ... && del /f @path"
rem locate mysql_home/bin
cd D:\mysql-5.7.17-winx64\bin
d:
rem export to dmp file, do not use root if not local mysql
mysqldump -h 127.0.0.1 -P %port% -u %uname% -p%password% %dbname% --skip-lock-tables --single-transaction > %backup_dir%\%day%.sql
创建执行任务
打开 田-所有程序—附件—系统工具-任务计划程序
创建任务
在常规中输入任务名称
在操作中选择执行的bat文件
在触发器中新建定时任务
新建完成
注意事项
右键查看这个定时任务属性,有2个地方要勾选,不然待机或者其他用户登录的话会导致任务不能执行下去。
还原dump文件
mysqldump -uroot -ppassword dbname < dump.sql;
-
MYSQL冷备份 恢复
2021-02-08 02:49:23MYSQL冷备份恢复1. SHOW VARIABLES LIKE '%data%' 查看datadir目录,这就是所有数据的备份目录,好像只有innodb的可以直接覆盖备份2. 停掉MYSQL服务,然后整个目录打包3. 到另一台win电脑上,同样的,找到那台电脑的... -
MySQL冷备份
2021-01-06 20:30:48我们要备份200G的MySQL数据,如果用dump备份是非常慢的,冷备简单暴力。 首先准备两台虚拟机 centos7 192.168.59.144 192.168.59.143 一、模拟一条数据 MariaDB [(none)]> create database dzw charset utf8; ... -
mysql冷备份
2019-06-01 18:12:05方法1. 注意如果 ...1.如下错误添加:–set-gtid-purged=OFF mysql5.6以后版本 2.错误如下 解决办法 虽然还有错误但是可以导出数据 原始脚本下载: 链接:https://pan.baidu.com/s/1wNoZq... -
3、MySQL冷备份及恢复
2020-10-21 20:13:48冷备份可以称为 Offline Backup(离线备份)。这种备份最为简单,一般只需要复制相关的数据库物理文件到另外的位置即可。 由于 MySQL 服务器中的数据文件是基于磁盘的文本文件,所以最简单、最直接的备份操作,就是... -
MySQL冷备份恢复
2019-10-23 13:47:54选择和备份的数据库相同的数据库版本,进行绿色安装。 拷贝备份的数据,同时将my.ini文件拷贝一份。 my.ini放在绿色安装的目录下。 [mysqld] #绿色安装的MySQL路径 basedir="C:/Users/Me/Desktop/test/mysql-5.... -
4、MySQL冷备份所需物理文件
2020-10-16 09:59:08冷备份主要通过复制相关数据文件来实现,下面主要介绍 MyISAM 和 InnoDB 存储引擎需要备份什么物理文件。 MyISAM存储引擎 MyISAM 存储引擎的所有数据默认存放在 C:/ProgramData/MySQL/MySQL Server 5.7/Data 路径下... -
MySQL冷备份过程
2016-07-29 10:17:38冷备份实际上是最简单的备份方式(好吧,第一次我就差点把数据库搞崩溃了),但由于要求停止MySQL服务来进行备份和恢复,并且只能完整备份,所以实用性并不高。 备份 首先,进入数据库并找出数据文件存放目录: ... -
MySQL 冷备份 恢复 (兼创建)
2021-02-09 19:44:15MySQL 冷备份 恢复 (兼创建)安装mariaDB 数据库数据目录为/mysql/date新机器环境为centos 7,会自带安装mariadb,首先卸载mariadb[root@localhost ~]# rpm -qa|grep mariadbmariadb-libs-5.5.60-1.el7_5.x86_64[root... -
mysql冷备份,转存sql,物理备份,xtrabackup
2019-10-20 16:47:14在用windows时,转存mysql我都是用navicat,登录远程数据库, 然后用图形界面转存sql。 在linux下,如何做呢? 1.linux下转存sql文件 表级别备份 mysqldump [OPTIONS] [database] [tables] 库级别备份 ... -
mysql数据库冷备份时需要注意_MySQL
2021-01-19 21:30:26bitsCN.commysql数据库冷备份时需要注意冷备份 指 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。的优点是: ... -
利用 docker配置mysql主从机,进行MySQL冷备份和mysql热备份
2021-06-26 16:58:34MySQL主从配置 一:主机 使用Ubuntu里的MySQL作为主机,修改配置信息 $ sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf # 以下几行都是被注释的,我们把#号去掉,让配置生效 general_log_file = /var/log/mysql/... -
mysql数据库冷备份时需要注意
2021-01-27 10:55:40进入 mysql数据库冷备份时需要注意 冷备份 指 冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。 的优点是: 1.是非欢迎进入... -
linux下mysql冷备份shell脚本
2018-05-30 10:42:07#!/usr/bin/env bash#########数据库基础信息#############DB_HOST=127.0.0.1 ----本机DB_NAME=$1 ----要备份的库名DB_USER=root ----用户名DB_PASS=root ----密码DATE=`date +%Y%m%d%... -
MySQL数据库的热备份与冷备份
2021-01-17 09:26:13冷备份(off, 慢, 时间点上恢复)冷备份发生在数据库已经正常关闭的情况下,当正常关闭时会提供给我们一个完整的数据库。冷备份是将关键性文件拷贝到另外位置的一种说法。对于备份数据库信息而言,冷备份是最快和最... -
MySQL:备份类型:热备份、温备份、冷备份
2021-01-17 16:09:07(1)热备份、温备份、冷备份 (根据服务器状态) 热备份:读、写不受影响; 温备份:仅可以执行读操作; 冷备份:离线备份;读、写操作均中止; (2)物理备份与逻辑备份 (从对象来分) 物理备份:复制... -
MySQL备份与恢复之冷备(1)
2020-09-10 07:46:17主要介绍了MySQL备份与恢复之冷备,冷备一般需要定制计划,比如什么时候做备份,每次对哪些数据进行备份等等,对冷备感兴趣的小伙伴们可以参考一下 -
mysql之数据库备份冷备份示例
2020-07-01 17:10:46mysql之数据库备份备份备份类型冷、温、热备份物理和逻辑备份冷备份操作 备份 备份类型 完全备份,部分备份 完全备份:整个数据集 部分备份:只备份数据子集,如部分库或表 完全备份、增量备份、差异备份 增量备份:... -
mysql冷热备份
2012-11-29 17:07:11冷备份要停服务操作,直接考备数据文件就可完成,回复时要应该属主和权限(直接复制回来就行了),安全性高,易操作。 以上为基本特点大家可以跟自己不同的情况进行选用!!! 转载于:https://bl... -
MySQL数据备份方式,及热备与冷备的优缺点
2021-01-14 14:43:05一、按照数据库的运行状态分类:(1) 热备:在数据库运行时,直接进行备份,对运行的数据库没有影响(2) 冷备:在数据库停止运行的时候进行备份,这种备份方式最为简单,只需要拷贝数据库物理文件即可。(3) 温备:同样... -
linux系统下实现mysql热备份详细步骤(mysql主从复制)
2020-09-10 17:25:59主要介绍了linux系统下实现MySQL主从热备份