精华内容
下载资源
问答
  • 服务器 mysql数据库备份服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让...

    dc25a6aed567a1f78fbd189afc43525a.png

    服务器 mysql数据库备份

    云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。

    选择云服务器ECS,您可以轻松构建具有以下优势的计算资源:

    无需自建机房,无需采购以及配置硬件设施。

    分钟级交付,快速部署,缩短应用上线周期。

    快速接入部署在全球范围内的数据中心和BGP机房。

    成本透明,按需使用,支持根据业务波动随时扩展和释放资源。

    提供GPU和FPGA等异构计算服务器、弹性裸金属服务器以及通用的x86架构服务器。

    支持通过内网访问其他阿里云服务,形成丰富的行业解决方案,降低公网流量成本。

    提供虚拟防火墙、角色权限控制、内网隔离、防病毒攻击及流量监控等多重安全方案。

    提供性能监控框架和主动运维体系。

    提供行业通用标准API,提高易用性和适用性。

    有关云服务器ECS的更多信息,参见 云服务器ECS帮助文档。

    展开全文
  • 一,基于LVM的mysql数据库物理备份与还原:这种情况要求,我们的msyql数据库必须安装在逻辑卷上。一下方法可以实现几乎热备份(之所以这么说是因为当我们创建快照的时候不能往数据库中写数据),要通过LVM的快照来实现...

    一,基于LVM的mysql数据库物理备份与还原:

    这种情况要求,我们的msyql数据库必须安装在逻辑卷上。一下方法可以实现几乎热备份(之所以这么说是因为当我们创建快照的时候不能往数据库中写数据),要通过LVM的快照来实现。

    1,完全备份

    进入数据库对所有表施加读锁,此时数据库中的数据只能读不能写。

    mysql> flush tables with read lock;

    我们通过滚动日志的方式(即再创建一个新的二进制日志)来实现即时点恢复:

    mysql> flush logs;

    查看当前二进制日志的名字和position,以便实现即时点恢复:

    mysql> show master status;

    +------------------+----------+--------------+------------------+

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

    +------------------+----------+--------------+------------------+

    | mysql-bin.000005 |      107 |              |                  |

    +------------------+----------+--------------+------------------+

    mysql>\q

    我们的mysql数据文件存放在/dev/myvg/lv_mydata这个逻辑卷上,我们要创建这个逻辑卷的快照,以便备份。执行这个步骤的时候不能有写操作,这就是我们在数据库中加读锁的原因:

    #lvcreate –L 100M –n data-snap –s –p r /dev/myvg/lv_mydata

    进入mysql数据库对解锁,我们的数据库可以正常被访问了(而在此之后影响数据库的所有操作都将被记录进二进制日志中,所有:完全备份+二进制日志=我们所有的数据):

    mysql>unlock tables;

    如下操作备份数据库:

    #mkdir /snap

    #mount /dev/myvg/data-snap /snap

    #tar jcf /tmp/all_data-`date +%F-%H-%M-%S`.tar.bz2 /snap/

    这就生成了我们的备份文件:all_data-2012-03-18-09-39-06.tar.bz2

    #umount /snap

    #rm -rf /snap

    #lvremove /dev/myvg/data-snap

    好了,我们的数据库文件备份成功了。

    1,备份还原

    当数据库产生故障,我们可以用如下方法把备份还原。

    为了模拟故障,我删除了一个数据库。

    mysql< drop database jiaowu;

    我们可以通过以上的备份进行恢复:

    对完整备份的还原必须停止mysql服务器:

    #service mysqld stop

    把我们备份时新建的二进制日志文件复制走,我们需要用其进行即时点恢复:

    #cp /mydata/data/mysql-bin.000005 /tmp

    #cd /tmp

    #tar xf all_data-2012-03-18-09-39-06.tar.bz2

    把我们的原数据库文件移走:

    #mv /mydata/data /mydata/data.bak

    把我们备份的数据库放在/mydata目录:

    #mv snap/data /mydata

    如果属组属主改变,则更改属主属组为mysql:

    #cd /mydata

    #chown mysql:mysql /mydata/data

    #chown mysql:mysql /mydata/data/*

    重启服务,我们的完全备份以恢复:

    #service mysqld start

    即使点的恢复:

    #mysqlbinlog /tmp/mysql-bin.000005

    如下所示,最后显示的为:

    # at 97404

    #120318 10:07:13 server id 1  end_log_pos 97489 Querythread_id=454exec_time=0error_code=0

    SET TIMESTAMP=1332036433/*!*/;

    drop database jiaowu

    /*!*/;

    # at 97489

    #120318 10:07:36 server id 1  end_log_pos 97508 Stop

    DELIMITER ;

    # End of log file

    ROLLBACK /* added by mysqlbinlog */;

    /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

    因为到97404这个点以后我做的是删除数据库jiaowu操作,也就是我自己模拟的故障,不能让其恢复,故要定义终止点97404:

    #mysqlbinlog -–stop-position=97404 /tmp/mysql-bin.000005 > /tmp/jiaowu.sql

    先临时关闭二进制文件,避免下面执行的恢复即时点操作被记录进二进制日志:

    mysql> set sql_log_bin=0;

    加载这个文件,使恢复到即时点:

    mysql> source /tmp/jiaowu.sql

    二,使用Xtrabackup进行MySQL备份

    一、安装

    1、简介

    Xtrabackup是由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对innodb和xtradb数据库进行热备的工具。特点:

    (1)备份过程快速、可靠;

    (2)备份过程不会打断正在执行的事务;

    (3)能够基于压缩等功能节约磁盘空间和流量;

    (4)自动实现备份检验;

    (5)还原速度快;

    2、安装

    其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得。本文基于RHEL5.4的系统,因此,直接下载相应版本的rpm包安装即可,这里不再演示其过程。

    二、完全备份的实现及恢复

    1、完全备份

    我们首先建立一个目录,用于存放备份的数据:

    #mkdir /backup

    完全备份:

    # innobackupex --user=DBUSER --password=DBUSERPASS /backup

    # ls /backup (会生成一个时间戳的目录,里面就是备份的数据文件)

    2012-03-18_12-51-23

    如果要使用一个最小权限的用户进行备份,则可基于如下命令创建此类用户:

    mysql> CREATE USER ’bkpuser’@’localhost’ IDENTIFIED BY ’s3cret’;

    mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM ’bkpuser’;

    mysql> GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO ’bkpuser’@’localhost’;

    mysql> FLUSH PRIVILEGES;

    使用innobakupex备份时,其会调用xtrabackup备份所有的InnoDB表,复制所有关于表结构定义的相关文件(.frm)、以及MyISAM、MERGE、CSV和ARCHIVE表的相关文件,同时还会备份触发器和数据库配置信息相关的文件。这些文件会被保存至一个以时间命令的目录中。

    在备份的同时,innobackupex还会在备份目录中创建如下文件:

    (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 —— 备份命令用到的配置选项信息;

    在使用innobackupex进行备份时,还可以使用--no-timestamp选项来阻止命令自动创建一个以时间命名的目录;如此一来,innobackupex命令将会创建一个BACKUP-DIR目录来存储备份数据。

    2、如果要恢复数据,则需要准备(prepare)一个完全备份

    一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

    innobakupex命令的--apply-log选项可用于实现上述功能。如下面的命令:

    # innobackupex --apply-log /backup/2012-03-18_12-51-23

    如果执行正确,其最后输出的几行信息通常和如下类似:

    120318 12:52:12  innobackupex: completed OK!

    在实现“准备”的过程中,innobackupex通常还可以使用--use-memory选项来指定其可以使用的内存的大小,默认通常为100M。如果有足够的内存可用,可以多划分一些内存给prepare的过程,以提高其完成速度。

    3、从一个准备好的完全备份中恢复数据

    innobackupex命令的--copy-back选项用于执行恢复操作,其通过复制所有数据相关的文件至mysql服务器DATADIR目录中来执行恢复过程。innobackupex通过backup-my.cnf来获取DATADIR目录的相关信息。

    #service mysqld stop

    做即时点恢复:

    #cd /backup/2012-03-18_12-51-23/

    找到我们做好完全备份时的二进制日志的终止点,这个可以作为我们恢复即时点的起始点:

    # cat xtrabackup_binlog_info

    mysql-bin.000001153681

    生成一个sql脚本:

    #mysqlbinlog --start-position=153681 /mydata/data/mysql-bin.000001 > /tmp/data.sql

    注意要想恢复,则存放数据库数据的目录必须为空,我的为/mydata/data:

    # rm -rf /mydata/data/*

    # innobackupex --copy-back /backup/2012-03-18_12-51-23/

    如果执行正确,其输出信息的最后几行通常如下:

    120318 12:39:12  innobackupex: completed OK!

    请确保如上信息的最行一行出现“innobackupex: completed OK!”。

    当数据恢复至DATADIR目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如mysql,否则,在启动mysqld之前还需要事先修改数据文件的属主和属组。如:

    # chown -R  mysql:mysql  /mydata/data/

    让服务上线:

    #service mysqld start

    mysql> set sql_log_bin=0;

    加载这个文件,使恢复到即时点:

    mysql> source /tmp/data.sql

    三,使用innobackupex进行增量备份

    1,先进行完全备份:

    新建我们要存放备份数据的目录:

    #mkdir /backup

    完全备份:

    # innobackupex --user=DBUSER --password=DBUSERPASS  /backup

    查看生成的备份文件:

    # ls /backup/

    2012-03-18_12-58-31

    2,每个InnoDB的页面都会包含一个LSN信息,每当相关的数据发生改变,相关的页面的LSN就会自动增长。这正是InnoDB表可以进行增量备份的基础,即innobackupex通过备份上次完全备份之后发生改变的页面来实现。

    要实现第一次增量备份,可以使用下面的命令进行:

    # innobackupex --incremental /backup/ --incremental-basedir=/backup/2012-03-18_12-58-31/

    查看生成的备份的文件:

    # ls /backup/

    2012-03-18_12-58-31  2012-03-18_13-00-00

    第二次增量备份:

    # innobackupex --incremental /backup/ --incremental-basedir=/backup/2012-03-18_13-00-00/

    查看生成的备份的文件:

    # ls /backup/

    2012-03-18_12-58-31  2012-03-18_13-00-00  2012-03-18_13-00-50

    其中,--incremental-basedir指的是完全备份所在的目录,此命令执行结束后,innobackupex命令会在/backup目录中创建一个新的以时间命名的目录以存放所有的增量备份数据。另外,在执行过增量备份之后再一次进行增量备份时,其--incremental-basedir应该指向上一次的增量备份所在的目录。

    需要注意的是,增量备份仅能应用于InnoDB或XtraDB表,对于MyISAM表而言,执行增量备份时其实进行的是完全备份。

    3,还原数据的时候,做准备工作

    “准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:

    (1)需要在每个备份(包括完全和各个增量备份)上,将已经提交的事务进行“重放”。“重放”之后,所有的备份数据将合并到完全备份上。

    (2)基于所有的备份将未提交的事务进行“回滚”。

    于是,操作就变成了:

    # innobackupex --apply-log --redo-only /backup/2012-03-18_12-58-31/  (完全备份的目录)

    redo-only的作用是:让已经提交的事物同步到数据文件中,没有提交的事物不做回滚;

    接着执行:

    # innobackupex --apply-log --redo-only /backup/2012-03-18_12-58-31 --incremental-dir=/backup/2012-03-18_13-00-00/

    --incremental-dir指的是第一次增量备份的目录

    而后是第二个增量:

    # innobackupex --apply-log --redo-only /backup/2012-03-18_12-58-31 --incremental-dir=/backup/2012-03-18_13-00-50/

    --incremental-dir指的是第二次增量备份的目录,其它依次类推,即如果有多次增量备份,每一次都要执行如上操作;

    这些操作做完之后,就把所有增量备份中的数据合并到了完全备份的数据中了,这些增量备份的数据文件就可以删除了,恢复的时候直接恢复完全备份数据即可。

    4,数据的恢复:

    即时点恢复:

    #cd /mydata/data

    查找我们最后一次做增量备份的终止点:

    # cd 2012-03-18_13-00-50/

    # cat xtrabackup_binlog_info

    mysql-bin.0000012275   (说明我们的增量备份的终止点是2275,我们做即时点恢复的时候从这个点开始就好了)

    生成一个sql文件,用于即时点恢复:

    #mysqlbinlog --start-position=2275 /mydata/data/mysql-bin.000001 > /tmp/data.sql

    #service mysqld stop

    模拟破坏

    #rm -rf /mydata/data/*

    从完全备份的数据文件恢复:

    # innobackupex --copy-back /backup/2012-03-18_12-58-31

    #chown -R mysql:mysql  /mydata/data

    #service mysqld start

    临时设置二进制文件关闭:

    mysql> set sql_log_bin=0;

    加载这个文件,使恢复到即时点:

    mysql> source /tmp/data.sql

    展开全文
  • --备份环境:把数据库服务器(192.168.1.8)的数据库(TEST)备份到(192.168.1.145)的C$下 --首先,做一个与客户端的映射exec master..xp_cmdshell'net use z: \\192.168.1.145\ "" /user:192.168.1.145\administrator'...

    declare @sql varchar(500)select @sql='\\192.168.2.73\TestFolder\'+'_db_'+convert(varchar(10),getdate(),112) + substring(convert(varchar(10),getdate(),108),1,2) + substring(convert(varchar(10),datepart(minute,getdate())),1,2) +'.bak'exec master..xp_cmdshell 'net use \\192.168.2.73\TestFolder "" /user:192.168.2.73\JaymeZhang'backup database master to disk=@sqlgo

    要用远程数据库可以备份本地。本地数据库也可以备份到远程。

    --备份环境:把数据库服务器(192.168.1.8)的数据库(TEST)备份到(192.168.1.145)的C$下

    --首先,做一个与客户端的映射exec master..xp_cmdshell'net use z: \\192.168.1.145\ "" /user:192.168.1.145\administrator'/*--说明:z: 是映射网络路径对应本机的盘符,与下面的备份对应\\192.168.1.145\c$    是要映射的网络路径192.168.1.145\administrator   192.168.1.145是远程的计算机名,administrator是登陆的用户名密码                        上面指定的administrator用户的密码--*/

    --其次,进行数据库备份backup database TEST to disk='z:\Test.bak'

    --最后.备份完成后删除映射exec master..xp_cmdshell 'net use z: /delete'--来自网络

    --以下代码放在作业里做调度,自动备份、自动删除4天前备份

    --创建映射exec master..xp_cmdshell 'net use w: \DatabaseBackup$  "password"/user:Roy',NO_OUTPUTgo-----2000用游标:declare @s nvarchar(200),@del nvarchar(200)select  @s='',@del=''

    declare datebak cursor forselect    [bak]='backup database  '+quotename(Name)+'  to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak''  with init',    [del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output'from master..sysdatabases where dbid>4 --不备份系统数据库open datebak

    fetch next from datebak into @s,@delwhile @@fetch_status=0    begin        exec (@del)        exec(@s)        fetch next from datebak into @s,@del    endclose datebakdeallocate datebakgo--删除映射exec master..xp_cmdshell 'net use w: /delete'

    go

    --用JOB.--SQL SERVER2000为例

    企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键 选—>新建

    常规选项页—>输入作业名称—>选中所有者。

    步骤选项页—>新建—>输入步骤名—>类型 TSQL脚本—>选择需要执行的数据库—>在命令框里输入你的SQL 脚本:

    如:update tb set 状态= ...  where 日期...........

    你可以点左下角的【分析】按钮,分析一下语法,分析无误,按确定。

    调度选项页—>新建调度—>输入调度名称—>调度类型 你可以选择也可以点右下角的【更改】按钮进行更改,确定。

    任务栏 SQL SERVER服务器的小图标 双击 服务 选中 SQL SERVER AGENT,点【开始/继续】,选中当启动OS时,自动启动服务,就可以了。

    到你定的那个时间点,SQL SERVER会自动去执行你的脚本的。

    如果需要生成脚本的话,企业管理器—>数据库服务器—>管理目录—>SQL SERVER代理—>作业—>右键你刚完成的作业—>所有任务

    —>生成SQL脚本,即可生成你需要的脚本。

    展开全文
  • MySQL数据备份

    2021-03-16 02:44:17
    MySQL的两种备份策略两种备份策略指的是逻辑备份:分别是全量备份和增量备份。除了逻辑备份外,我们还可以选择通过复制原始数据备份数据,这种方式也称为物理备份。关于逻辑备份和物理备份,它们有如下的特点:...

    MySQL的两种备份策略

    两种备份策略指的是逻辑备份:分别是全量备份和增量备份。除了逻辑备份外,我们还可以选择通过复制原始数据来备份数据,这种方式也称为物理备份。关于逻辑备份和物理备份,它们有如下的特点:

    物理备份的特点

    因为是直接复制文件系统上面的数据,因此备份文件和数据文件完全一致

    物理备份比逻辑备份速度要快

    数据还原后不保证table层面的一致性(不同存储引擎行为不一样)

    除了数据外,物理备份也同时备份了一些其他文件,例如日志文件

    物理备份最好在服务器停止的情况下备份,确保数据一致性,否则需要在锁表的前提下进行备份

    无法备份内存表,因为内存表没有写入硬盘

    物理备份可移植性较低,例如在Linux下备份的文件还原到windows下是就可能会有问题

    逻辑备份的特点

    逻辑备份只能在服务器online的情况下备份,因为需要运行sql语句

    逻辑备份速度比物理备份慢

    不管数据库是什么引擎,保证数据在database层面和table层面的一致性

    只能备份数据,不能备份配置文件或者日志文件

    备份文件可能会比物理备份的大

    逻辑备份可以在不锁表的情况下进行备份(针对innoDB引擎)

    逻辑备份可移植性比物理备份高

    逻辑备份的两种方式

    可以对数据进行全量备份和增量备份,它们各有长短,最好的方式是两者结合使用,以确保数据的安全性和一致性。

    全量备份的好处是数据完整,还原方便,但坏处是备份时间长;而增量备份的好处是备份时间短,缺点是数据不完整,还原比全量备份麻烦。在实际情况中,我们应该定期为数据库做全量备份,然后分时段做增量备份

    使用mysqldump程序备份数据

    一般来说,我们都是使用mysqldump来进行数据备份;除非你使用的是企业版的数据库,那么,你有更好的选择(mysqlbackup)。

    mysqldump虽然使用简单,但是还是有很多地方需要注意的,尤其有些参数可能会造成理解上的错误。

    基本备份命令

    例如要备份名称为wordpress的数据库,可以使用下面的命令

    root@ubuntu-server:~# mysqldump -uUser -pPassword wordpress > wordpress.sql

    mysqldump数据默认输出到标准输出,因此要把输出重定向到指定文件中。执行完命令后,wordpress数据库的内容就会备份到wordpress.sql文件中。

    备份某个指定表

    mysqldump还可以单独备份某个指定的表,例如要备份wordpress下的article表

    root@ubuntu-server:~# mysqldump -uUser -pPassword wordpress article > article.sql

    除了用户名和密码外,mysqldump会把第一个给出的参数作为数据库,其他的则作为表来备份,因此,上面语句的意思是:备份wordpress数据库中的article表到article.sql文件。如果需要备份多个表(article、user、comment),只需要把表的名称添加上即可,例如:

    root@ubuntu-server:~# mysqldump -uUser -pPassword wordpress article user comment > backup.sql

    备份多个数据库

    通过--databases选项(短形式为-B),可以同时备份多个数据库,例如备份wordpress数据库和mysql数据库

    root@ubuntu-server:~# mysqldump -uUser -pPassword --databases wordpress mysql > backup.sql

    --databases后面跟着的参数都被当做数据库来处理,除此之外,这个选项还会在备份文件中添加上create database和use database命令。因此,在还原数据库的时候就不需要手动处理这些工作。

    备份所有数据库

    使用的选项是--all-databases(短形式为-A)

    root@ubuntu-server:~# mysqldump -uUser -pPassword --all-databases > all.sql

    这个选项和--databases一样,也会在备份文件中添加create database和use database命令。

    备份innoDB数据库

    innoDB数据库的特点是支持事务,通过--single-transaction选项,可以在不锁表的情况下备份innoDB数据库,确保数据一致性。另外需要注意的是,在备份过程中,任何ALTER TABLE、CREATE TABLE、DROP TABLE、RENAME TABLE、TRUNCATE TABLE命令都不允许被运行。--single-transaction选项会通过start transaction新建一个事务,然后把数据库隔离级别设置为REPEATABLE READ。

    root@ubuntu-server:~# mysqldump --single-transaction -uUser -pPassword --databases wordpress > wordpress.sql

    备份myisam数据库

    --single-transaction选项不支持myisam数据库,因此,如果要确保myisam数据库备份时候的一致性,需要对数据库进行锁表操作。锁表选项是--lock-tables。

    root@ubuntu-server:~# mysqldump --lock-tables -uUser -pPassword --databases tempdb > tempdb.sql

    备份数据库以建立slave服务器

    建立主从服务器的一个关键点是binary log,因此,如果希望通过备份数据库来建立主从关系,那么如何处理binary log是关键。

    通过--flush-logs(-F)选项,可以在备份的时候同时刷新bniary log。另外,--flush-logs选项通常会结合-lock-all-tables、--master-data或--single-transaction选项使用,针对不同的数据库引擎,使用不同的选项。

    --master-data选项的作用是在备份文件中添加change master to命令,当该选项的值为2,则change master to命令被注释,1则没有注释。

    root@ubuntu-server:~# mysqldump --all-databases --lock-all-tables --master-data=1 --flush-logs -uUser -pPassword > all.sql

    备份好后,需要到从服务器中还原all.sql,以及flush-logs选项生成的binary log文件。以确保数据的一致性。

    通过mysqladmin增量备份数据

    增量备份数据需要mysql开启binary log模式,增量数据都被储存到binary log中。做增量备份之前请确保已经做好全量备份。具体可以通过上面介绍的方法。

    通过mysqladmin生成增量备份其实非常简单,通过flush-logs命令就可以创建增量备份,假设在全量备份之前,mysql数据目录内容如下:

    root@ubuntu-server:/var/lib/mysql# ls -l

    total 244736

    ......

    drwxr-x--- 2 mysql mysql 4096 4月 26 06:06 mysql

    -rw-r----- 1 mysql mysql 91332 6月 20 11:03 mysql-bin.000001

    -rw-r----- 1 mysql mysql 6233676 6月 20 13:39 mysql-bin.000002

    -rw-r----- 1 mysql mysql 1843408 6月 20 14:35 mysql-bin.000003

    -rw-r----- 1 mysql mysql 39375931 6月 21 07:35 mysql-bin.000004

    -rw-r----- 1 mysql mysql 10037135 6月 21 11:44 mysql-bin.000005

    -rw-r----- 1 mysql mysql 95 6月 21 07:35 mysql-bin.index

    -rw-r--r-- 1 root root 6 4月 26 06:06 mysql_upgrade_info

    drwxr-x--- 2 mysql mysql 4096 4月 26 06:06 performance_schema

    drwxr-x--- 2 mysql mysql 12288 3月 26 10:53 sys

    drwxr-x--- 2 mysql mysql 4096 6月 21 10:50 wordpress

    drwxr-x--- 2 mysql mysql 12288 5月 28 13:44 zabbix

    一共有5个binary log文件,那么,在使用下面的备份命令之后,结果会怎样

    root@ubuntu-server:~# mysqldump --all-databases --lock-all-tables --master-data=1 --flush-logs -uUser -pPassword > all.sql

    然后再ls一下该目录

    root@nas-share:/var/lib/mysql# ls -l

    total 322452

    ......

    drwxr-x--- 2 mysql mysql 4096 4月 26 06:06 mysql

    -rw-r----- 1 mysql mysql 91332 6月 20 11:03 mysql-bin.000001

    -rw-r----- 1 mysql mysql 6233676 6月 20 13:39 mysql-bin.000002

    -rw-r----- 1 mysql mysql 1843408 6月 20 14:35 mysql-bin.000003

    -rw-r----- 1 mysql mysql 39375931 6月 21 07:35 mysql-bin.000004

    -rw-r----- 1 mysql mysql 10095733 6月 21 11:45 mysql-bin.000005

    -rw-r----- 1 mysql mysql 6013 6月 21 11:46 mysql-bin.000006

    -rw-r----- 1 mysql mysql 114 6月 21 11:45 mysql-bin.index

    -rw-r--r-- 1 root root 6 4月 26 06:06 mysql_upgrade_info

    drwxr-x--- 2 mysql mysql 4096 4月 26 06:06 performance_schema

    drwxr-x--- 2 mysql mysql 12288 3月 26 10:53 sys

    drwxr-x--- 2 mysql mysql 4096 6月 21 10:50 wordpress

    drwxr-x--- 2 mysql mysql 12288 5月 28 13:44 zabbix

    发现多了一个日志mysql-bin.000006,这个日志其实就是第一个增量备份,mysqladmin的flush-logs命令和mysqldump的差不多,也就是说,如果你希望在特定时候创建增量备份,就可以使用下面的命令:

    root@ubuntu-server:~# mysqladmin -uUser -pPassword flush-logs

    结果是目录下面增加了mysql-bin.000007日志,这也是最新的增量备份数据。

    通过mysqlbinlog还原增量备份

    假如前面的完全备份(all.sql)是在mysql-bin.000006之前创建的,如果有一天数据意外丢失,那么你可以先把完全备份还原,然后再分别还原两个增量备份,分别是mysql-bin.000006和mysql-bin.000007。具体步骤如下:

    还原完全备份

    root@ubuntu-server:~# mysql -uUser -pPassword < all.sql

    还原增量备份

    先查看一下增量备份有哪些,6和7就是我们还原的目标

    mysqlbinlog有一个选项比较重要,它就是--disable-log-bin,它可以防止还原过程产生额外的日志记录,从而避免了数据循环写入。

    root@ubuntu-server:/var/lib/mysql# ls

    auto.cnf ibdata1 mysql mysql-bin.000004 mysql-bin.index restore.sh zabbix

    backall.sql ib_logfile0 mysql-bin.000001 mysql-bin.000005 mysql_upgrade_info restore.sql

    debian-5.7.flag ib_logfile1 mysql-bin.000002 mysql-bin.000006 performance_schema sys

    ib_buffer_pool ibtmp1 mysql-bin.000003 mysql-bin.000007 restore2.sql wordpress

    接下来使用mysqlbinlog进行还原,当需要还原被意外删除的数据之前,需要先确保日志中的drop语句被移除,可以先把日志文件中的内容导出到普通的文件当中,然后把相关的drop语句删除,这样才能保证数据可以正确还原。

    root@ubuntu-server:/var/lib/mysql# mysqlbinlog mysql-bin.000006 >> bak.sql #导出后删除drop语句(如果有的话)

    root@ubuntu-server:/var/lib/mysql# mysqlbinlog mysql-bin.000007 >> bak.sql #导出后删除drop语句(如果有的话)

    root@ubuntu-server:/var/lib/mysql# cat bak.sql | mysql -u root -p #最后进行数据还原

    其他选项

    mysqlbinlog有些选项在还原数据的时候非常有用,分别是

    --start-position和--stop-position

    --start-datetime和--stop-datetime

    第一对选项用于指定开始还原的位置和结束还原的位置。如果只指定start-position,则数据从start-position一直还原到日志文件的末尾,相反如果只指定stop-position,那么数据从日志开头一直还原到stop-position位置。

    第二对选项则用来指定还原的起始时间,其作用和start-position类似。

    使用mysqlbinlog查看日志内容

    由于binary log日志是二进制形式的,我们无法像普通文件一样查看它里面的内容,不过MySQL提供了mysqlbinlog工具来操作binary log。

    root@ubuntu-server:/var/lib/mysql# mysqlbinlog mysql-bin.000007

    BINLOG '

    QSIrWxMBAAAAPAAAAP0BAAAAAAQCAAAAAAEABnphYmJpeAAMaGlzdG9yeV91aW50AAQIAwgDAAAD

    ESAf

    QSIrWx4BAAAAVQAAAFICAAAAAAQCAAAAAAEAAgAE//B8XQAAAAAAAEAiK1sAAAAAAAAAAGNL/hvw

    6FoAAAAAAABAIitbAAAAAAAAAABZegEcDUyQpA==

    '/*!*/;

    # at 594

    #180621 11:57:53 server id 1 end_log_pos 625 CRC32 0x7a2c64d6 Xid = 539263

    COMMIT/*!*/;

    默认情况下,日志会输出到标准输出,且数据以base64方式加密,如果希望查看具体内容,可以使用--base64-output和-v选项解密。--base64-output选项可以抑制加密信息的输出,而-v选项可重构日志中的sql语句

    root@ubuntu-server:/var/lib/mysql# mysqlbinlog --base64-output=decode-rows -v mysql-bin.000007 > decode.sql

    解密后的内容部分显示如下,已经可以看到具体的sql语句操作:

    # at 389

    #180621 7:35:22 server id 1 end_log_pos 449 CRC32 0x43f149b1 Write_rows: table id 272 flags: STMT_END_F

    ### INSERT INTO `zabbix`.`history`

    ### SET

    ### @1=23301

    ### @2=1529537721

    ### @3=26.818599999999999994

    ### @4=995065421

    当然,通过-v选项输出的文件不能用来进行数据的还原,因为该选项会把任何insert、update语句都注释掉。

    展开全文
  • mysql数据备份

    2021-02-05 23:34:57
    mysql数据备份服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用...
  • 这篇文章写的要将服务器 A 中的 MySQL 数据库中的数据备份到另一个服务器 B 中的 MySQL 数据库中。一、准备条件两台环境基本一致、拥有 MySQL 的 Linux 服务器(我在下面的描述中会将他们称为服务器 A,服务器 B)备注...
  • 为了避免数据丢失,需要做数据备份,但是不能影响mysql运行。所以这里采用xtrabackupxtrabackup介绍对于MySQL数据库的热备,xtrabackup是除了MySQL enterprise backup之外的不二之选。该工具提供了基于innodb存储...
  • docker在运行MySQL镜像的时候把容器内部的数据已经挂载到Linux系统上,这还不够,还需要对挂载出来的文件进行备份操作 备份的脚本如下,将用户名、密码、IP、端口、备份存放地址等改为自己的即可 #!/bin/bash # 设置...
  • 项目要结束了...至少开发要结束了...回头看看自己就这么一个人埋头开发了4个月,以及手上拿到的与自己...由于我都是把项目部署在自己的电脑上开发的,现在要把系统以及数据库转移到移动的服务器上了,我知道又有新...
  • MySQL 数据备份与还原

    2021-01-21 09:00:55
    一、数据备份1、使用mysqldump命令备份mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本...
  • MySQL数据备份与恢复

    2021-01-19 21:33:26
    1.数据库备份与恢复的概述数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本。数据库恢复则是当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库从错误状态恢复到备份时的正确...
  • 一、mysql数据库备份的前因后果1、备份的概念:将数据收集并保存至另外的多个副本,其目的是将数据还原恢复至备份数据时那个状态。2、备份数据的原因1)做灾难恢复使用,要将数据副本做到异地多份备份;2)数据库数据...
  • 1.windows系统下备份mysql数据库,.bat代码@echo offset "Ymd=%date:~,4%%date:~5,2%%date:~8,2%"C:\"Program Files"\MySQL\"MySQL Server 5.6"\bin\mysqldump --opt -u root --password=root -h127.0.0.1 yadong &...
  • mysql实现两台服务器双向备份(window系统)假设有两台服务器A和B,IP地址如下:192.168.10.122(A)192.168.10.123(B)先保证这mysql的版本是一致的1.在两台mysql上创建用户,设置权限,我这里用的是root用户A上添加:...
  • MySQL 数据备份与还原的示例代码这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下一、数据备份1、使用mysqldump命令备份...
  • 网站数据库对一个网站的最重性是不可言喻的,如果数据异常而你又没有做好备份那是很难恢复的,今天领航教你将两台服务器mysql数据库同步备份配置,这样子如果我们网站出了问题,我们就可以用最快的速度进行切换,...
  • MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导入的速度。 -e 使用包括几个VALUES列表的多行INSERT语法; --max_allowed_...
  • MySQL 数据备份与同步

    2021-01-19 07:02:00
    用mysqldump每天备份全量数据然后传输到另外一台机器上这种方式进行数据备份,久而久之越来越慢。于是开始研究如何利用mysql的主从同步功能实现自动备份。如果实现自动备份,主从服务器之间只需要在有数据更新时同步...
  • Mysql数据库备份1 . 备份数据库//远程登陆服务器ssh root@公网ip//mysqldump -u数据库名 -p [-h host] --databases 数据库名 > xxx.sql//备份数据库test到xxx.sql中mysqldump -uroot -p --databases test > ...
  • 解释 mysqldump 数据备份命令 -uroot 数据库的用户 -pgood 数据库的用户密码 good 备份的数据库 /usr/good/data/mysql/ 备份的文件路径 $(date +%Y%m%d)/discuz_$(date +%Y%m%d_%H%M%S).sql #以日期文件夹时间名的...
  • 可想而知,随着数据量的增加和备份的频率都会导致备份服务器的硬盘资源使用率也会直线攀升;为了解决这个问题,我们就需要,定时清理备份内容;而我还是简单的使用了个shell脚本,通过crontab定时去清理; 注意这里...
  • mysql 数据备份与还源

    2021-02-01 21:24:11
    一、数据备份1、使用mysqldump命令备份mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本...
  • 如何在服务器备份mysql数据库文件 内容精选换一换“数据导入”章节适用于MRS 3.x及后续版本。Loader是实现MRS与外部数据源如关系型数据库、SFTP服务器、FTP服务器之间交换数据和文件的ETL工具,支持将数据或文件从...
  • 网上已经有部分关于Linux下定期备份mysql的方法,但是很多步骤不够详细,不适合新手,自己琢磨了很久,终于搞定了。1.Linux服务器一般是ssh协议,如果本地也是Linux环境,可以直接通过shell连接,命令:ssh -l root ...
  • MYSQL的事务处理主要有两种方法。1、用begin,rollback,commit来实现begin 开始一个事务rollback 事务回滚commit 事务确认2、直接用set来改变mysql的自动提交模式MYSQL默认是自动提交的,也就是你提交一个QUERY,它就...
  • 上一节中我们介绍了如何在CentOS 7上配置MySQL的主从复制模式,今天Lesca将介绍如何备份和还原MySQL的从服务器,平台仍然是CentOS 7。使用mysqldump进行备份和还原使用mysqldump进行备份mysqladmin stop-slave -u...
  • 原理:Mysql备份有三个步骤:作为主服务器的Master,会把数据库每一次的变动(每条sql语句)都记录到二进制日志Binarylog中。作为从服务器Slave, 使用master上的用户登陆到 master上,读取master的Binarylog,写入到...
  • 在实例存活的情况,可以在实例状态中查询ALL_GTID。在实例崩溃的情况,无法在实例状态中查询ALL_GTID...与ALL_GTID相关的变量Previous-GTIDsPrevious-GTIDs格式如下(环境为MySQL5.7,日志手动flush binary logs获得)...
  • 最快的MySql数据库备份方法...一、数据备份捷径因为这个方法没有得到官方正式文档的验证,我们暂称为试验吧。目的:备份hostA主机中一个mysql数据库TestA,并恢复到到hostB机中试验环境:操作系统:WinNT4.0,Mysql3...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,666
精华内容 58,266
关键字:

服务器mysql数据备份

mysql 订阅