应该怎么样备份与恢复mysql数据库
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,下文主要给大家带来应该怎么样备份与恢复mysql数据库,希望这些内容能够带给大家实际用处,这也是我编辑应该怎么样备份与恢复mysql数据库这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。数据库
千家信息网最后更新 2024年11月24日应该怎么样备份与恢复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安全错误
数据库的锁怎样保障安全
学校学校网络安全管理制度
数字安全与证书服务器
网络技术小组名字
媒体服务器 华为
服务器提交数据库
网络安全漫画手绘a4纸
删除数据库用户提示有链接
rust社区服务器的配置
西安大华软件开发加班
河北服务器备案云服务器
dede的数据库
宣城安卓软件开发定制公司
武汉移动网络技术岗位
以网络安全为主题的漫画
沈腾网络安全
数据库不建索引能进行查找吗
海事网络安全管理体系
南京软件开发培训班推荐就业
植物大战僵尸2服务器打不开了
scapy网络安全设计
简单的数据库分库分表
苹果有服务器吗
18年网络安全的主题是
软件开发工程项目划分
服务器被炸的mc主播
闲置电脑能做服务器吗
服务器管理口有亮但ping不通
服务器生存模式没有命令
天津钢材行业仓储软件开发
2042哪个服务器