应该怎么样备份与恢复mysql数据库
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,下文主要给大家带来应该怎么样备份与恢复mysql数据库,希望这些内容能够带给大家实际用处,这也是我编辑应该怎么样备份与恢复mysql数据库这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。数据库
千家信息网最后更新 2024年11月12日应该怎么样备份与恢复mysql数据库
下文主要给大家带来应该怎么样备份与恢复mysql数据库,希望这些内容能够带给大家实际用处,这也是我编辑应该怎么样备份与恢复mysql数据库这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。
数据库备份方式
热备份:不影响业务的正常读写温备份:对表加锁,只允许对数据库进行读操作冷备份:业务暂停物理备份:备份mysql相关的数据文件逻辑备份:将数据从mysql中导出来,一般是一个sql文件(无索引数据)全备份:完全备份增量备份:针对上一次备份进行叠加差异备份:针对上一次完全备份,选择差异进行备份
使用mysqldump备份
逻辑备份、单进程(速度慢)、锁表(一般在从库进行备份);
可以使用mysqldumper工具,进行多进程备份。
备份实例:
# mysqldump --flush-logs cacti plugin_thold_contacts plugin_thold_log plugin_thold_template_contact plugin_thold_threshold_contact thold_data thold_template >cacti_thold.sql //cacti库多表备份# mysqldump -h rds.amazonaws.com -u root -p production_sts pubkey_change_logs --where="created<'2016-05-04'" > pubkey_change_logs_0312to0503.sql //指定备份部分内容(归档时使用)# mysqldump -u root -p -d --databases treasure treasure_admin treasure_logs treasure_sts >duobao.sql //多库备份,及只备份表结构,不备份数据-d# mysqldump -u root -pxxxx -B ehr --single-transaction --master-data=2 --routines |/usr/bin/bzip2 > /data1/mysql_backup/ehr-db01/ehr_inc.sql.bz //线上使用的大库备份
恢复方法:
mysql命令直接导入、source命令、load命令
使用xtrabackup进行增量备份
热备份、物理备份,安装及介绍:https://www.percona.com/doc/percona-xtrabackup/LATEST/index.html
安装后含有xtrabackup和innobackup两个工具,此处使用用后者;
需要扫描mysql相关数据文件、配置文件,不支持远程备份(如:云数据库实例)。
备份实例:
# innobackupex --user=root -pxxxxx /data/backup/innodbbackup/ //最简单的完全备份# innobackupex --user=root -pxxxxx --incremental --incremental_basedir=/data/backup/innodbbackup/2018-02-07_17-08-31/ /data/backup/innodbbackup/ //增量备份,需要指定上次的备份位置(lsn信息)# innobackupex -u root -pxxxxx --no-timestamp --extra-lsndir=/data1/innobackup/0207/lsn_17/ --stream=tar /data1/innobackup/ |gzip > /data1/innobackup/0207-1737.tgz //打包压缩# innobackupex --user=root -pxxxxx /data/backup/innodbbackup/ --stream=tar |gzip|sshpass -p "sshpass" ssh -p 18122 root@10.10.166.176 "cat - > /data1/xtrabackup/zabbix/0207_1737.tgz" //备份并发送到远程云服务器
数据恢复:
1.云服务器准备:安装同版本mysql,初始化后,关闭mysql服务,清空mysql的数据目录
2.获取备份:也可以直接在备份的时候远程保存
3.恢复命令:
# tar -i -xf 0207_1737.tgz //如果打包了,先解包日志文件恢复(完全备份):完成事务、同步数据等操作,使数据文件达到一致性# innobackupex --defaults-file=/usr/local/mysql/my.cnf --apply-log --redo-only -u root -pxxxx /tmp/mysql/fullbackup增量日志文件恢复(如果是多个增量,按顺序依次恢复),需要指定lsn# innobackupex --defaults-file=/usr/local/mysql/my.cnf --apply-log --redo-only -u root -pxxxxx /tmp/mysql/incre-1337 --incremental-dir=/tmp/mysql/incre/1337# innobackupex --defaults-file=/usr/local/mysql/my.cnf --apply-log -u root -pxxxx /tmp/mysql/2016-04-26_13-48-39 //最后一次将增量和完全备份合并,将未提交的事物回滚,但不需要--redo-only参数。数据恢复:要保证原来的数据目录为空(如果有其他库,先移动在其他目录,后期移回来即可)# innobackupex --defaults-file=/usr/local/mysql/my.cnf --copy-back -u root -pxxxxx /tmp/mysql/2016-04-26_13-48-39
- 最后重新对mysql_data目录授权,并启动mysql服务即可。
线上使用增量备份脚本
#!/bin/bashhour=`date +%H`day=`date +%F`now=`date +%F_%H`passwd="mysqlpass"function backup(){case $1 infull) /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day}/ |gzip > /data1/innobackup/${day}/${now}.tgz ;;incre) if [ -f /data1/innobackup/${day}/lsn_${last}/xtrabackup_checkpoints ];then /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --incremental --incremental_basedir=/data1/innobackup/${day}/lsn_${last}/ --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day} |gzip > /data1/innobackup/${day}/${now}.tgz else echo "incremental_basedir not found,do a full backup" /usr/bin/innobackupex -u root -p${passwd} --no-timestamp --extra-lsndir=/data1/innobackup/${day}/lsn_${now}/ --stream=tar /data1/innobackup/${day}/ |gzip > /data1/innobackup/${day}/${now}.tgz fi ;;*) echo "nothing todo" ;;esac}case $hour in01) last=`date +%F -d -yesterday` find /data1/innobackup/ -name "${last}*" -type d -exec rm -r "{}" \; backup full ;;10) last=`date +%F_%H -d -9hours` backup incre ;;14|18|22) last=`date +%F_%H -d -4hours` backup incre ;;*) echo "not backup time"esac
复杂应用实例:打包(tar、xbstream)、压缩、远程备份、增量备份、恢复
备份:# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/2304 /backup/2304_full_remot --stream=tar |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/2304_full.tgz"# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/0000 --incremental --incremental_basedir=/backup/lsn/2304 /backup/0000_full_remot --stream=xbstream |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/0000_incr.xbstream.gz"# innobackupex --no-timestamp --extra-lsndir=/backup/lsn/0006 --incremental --incremental_basedir=/backup/lsn/0000 /backup/0006_full_remot --stream=xbstream |gzip |sshpass -p "sshpass" ssh root@192.168.183.130 "cat - >/backup/remote/0006_incr.xbstream.gz"恢复:# cd /backup/remote/# tar -i -xf 2304_full.tgz# innobackupex --apply-log --redo-only /backup/remote/# gunzip -c 0000_incr.xbstream.gz > 0000_incr/0000_incr.xbstream# xbstream -x -C 0000_incr/< 0000_incr/0000_incr.xbstream# innobackupex --apply-log --redo-only --incremental /backup/remote/ --incremental-dir=/backup/remote/0000_incr/# gunzip -c 0006_incr.xbstream.gz > 0006_incr/0006_incr.xbstream# xbstream -x -C 0006_incr/< 0006_incr/0006_incr.xbstream# innobackupex --apply-log --redo-only --incremental /backup/remote/ --incremental-dir=/backup/remote/0006_incr/
# innobackupex --copy-back /backup/remote/
对于以上关于应该怎么样备份与恢复mysql数据库,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。
备份
数据
增量
文件
数据库
内容
命令
实例
目录
服务
下文
业务
工具
差异
数据恢复
日志
服务器
物理
进程
逻辑
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库dbid什么意思
中央宜传部网络技术中心杨卫方
服务器如何显示raid
网络安全执法新闻
上海斑马网络技术有限公司地址
软件开发选取适宜的开发模型
网络安全教育影片
在js中根据id查询数据库
win10 期货软件开发
网络安全应急实战演练小结
成都零售系统软件开发
社科外文数据库
近三年来中国的数据库大会
我的世界ec服务器跳风车教程
有效的网络安全证书
服务器pc安全加固
数据库建模过程 数据需求
数据库upgrade语句
宜宾app软件开发
小数据库有什么用
asp sql数据库操作
公共场合网络安全
怎么取消数据库用户口令
启动被管理服务器命令
数据库维护工程师项目经验
王牌战争新服务器多长时间
小度软件开发
网络安全问题的感想
数据库专家招聘
一点系统的构成要素包括数据库吗