目 录
4.1 MySQL for Windows定时备份最佳实践 7
4.2 MySQL for Linux定时备份最佳实践 13
文档信息
文件状态: [ ] 草稿 [ ] 正式发布 [√] 正在修改 | 当前版本: | 5.0 | ||
编写人: | 吴海霞 | 编写日期: | 2015-05-08 | |
审批人: | 罗强 | 审批日期: | 2015-05-11 | |
保密级别: | 秘密级 | |||
修订历史
版本 | 时间 | 撰写者 | 说明 |
V1.0 | 2014-04-30 | 吴海霞 | 初稿 |
V2.0 | 2014-08-07 | 吴海霞 | 修改版本号和部分截图,其他无变化 |
V3.0 | 2014-09-29 | 吴海霞 | 修改版本号,其他无变化 |
V4.0 | 2014-12-31 | 吴海霞 | 修改版本号,其他无变化 |
V5.0 | 2015-05-08 | 吴海霞 | 修改模块,修改版本号,其他无变化 |
[注:修订历史中的版本定义为伴随5.0.0.0第一次发布时为1.0,5.0.0.0版本第二次对外发布为V1.1,5.0.1.0第一次发布时为V2.0,以此类推。]
本文档是爱数备份容灾家族MySQL一体化备份恢复最佳实践文档,主要描述了如何正确地使用爱数备份容灾家族产品成员进行MySQL数据备份的方法, 包括部署前后的注意事项和典型部署方案。
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL引擎介绍:
MyISAM:MySQL的默认数据库引擎,最为常用。拥有较高的插入,查询速度,但不支持事务。
InnoDB:事务型数据库的首选引擎,支持ACID事务,支持行级锁定。
BDB: 源自Berkeley DB,事务型数据库的另一种选择,支持COMMIT和ROLLBACK等其他事务特性 Memory :所有数据置于内存的存储引擎,拥有极高的插入,更新和查询效率。但是会占用和数据量成正比的内存空间。并且其内容会在MySQL重新启动时丢失。
Merge: 将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用。
Archive:非常适合存储大量的独立的、作为历史记录的数据。它们不经常被读取。Archive拥有高效的插入速度,但其对查询的支持相对较差。
Federated: 将不同的MySQL服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用 Cluster/NDB :高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大,安全和性能要求高的应用。
CSV: 逻辑上由逗号分割数据的存储引擎。
BlackHole:黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继。
完全备份
将选定的数据源完全备份到指定目的地的备份集中。每次执行时,它不会根据最新的变动比较后进行备份,而是直接将所有的数据(备份内容即为MySQL的表数据)备份到OFS介质中,并产生一个时间点,用于记录备份的内容。
1.【命名规则】:用户名、任务组、任务等对象命名规则满足:不允许为空,且名称长度必须为 3~50 个字符;
2.【邮件命名规则】: Email 地址只能由字母 A~Za~z 、数字 0~9 及特殊字符 @.-_ 组成,类似于 yourname@domain.com 的形式,且最长不能超过50个字符;
3.【备注信息规范】:备注信息最大不超过255字符;
本版本支持MySQL定时备份源端重复数据删除。
功能 | 子功能 | 支持 | 备注 |
备份类型 | 完全备份 | √ | 仅支持完全备份 |
客户端自动搜索实例 | √ | ||
客户端多实例备份恢复 | √ | 单个任务可以支持选择多个实例备份 | |
浏览恢复 | √ | ||
异机恢复 | √ | ||
恢复粒度 | √ | 整个实例、单个数据库 | |
指定恢复数据库名 | √ | 支持恢复数据库时恢复为新数据库名 |
1、不支持跨系统平台的恢复(Windows、Linux不支持任意两个平台互相恢复)。
2、不支持跨MySQL版本的恢复。
3、要求备份和恢复端的实例名,用户名和密码一致,缺一不可。
1、确认系统环境变量中包含了MySQL的bin目录
在“我的电脑”上右键单击,选择属性,然后选择“高级”,单击“环境变量”,在Path变量中寻找是否包含有MySQL安装目录下的bin目录;

在“开始”中运行“cmd”,然后输入:echo %path%确定,在输出信息中查找是否包含有MySQL安装目录下的bin目录。
提示:MySQL安装完毕后系统路径可能不会包含bin目录,此时需手动添加。
2、确认要备份的数据库可以正常连接使用
在进入MySQL命令窗口后,可输入几条常用的命令来检查数据库是否可以正常使用。如:
show databases;-----查看数据库列表
use aaa;-----使用aaa数据库
show tables;-----查看当前数据库下的所有表

在进入MySQL命令窗口后,可输入几条常用的命令来检查数据库是否可以正常使用。如:
MySQL -uroot -ppas----连接数据库
show databases;-----查看数据库列表
use aaa;-----使用aaa数据库
show tables;-----查看当前数据库下的所有表
为保证备份任务可正常执行,在创建备份任务前,请检查介质服务器是否正常。检查方法,可以在登录控制台后,在存储管理,介质服务器管理中查看介质服务器状态及可用空间。
1.【命名规则】:用户名、任务组、任务等对象命名规则满足:不允许为空,且名称长度必须为 3~50 个字符。
2.【邮件命名规则】: Email 地址只能由字母 A~Za~z 、数字 0~9 及特殊字符 @.-_ 组成,类似于 yourname@domain.com 的形式,且最长不能超过50个字符。
3.【备注信息规范】:备注信息最大不超过255字符。
登录管理控制台,点击标签栏【数据保护】【备份管理】选项卡,在操作界面,选择【新建】,点击【定时备份】选择MySQL数据库,在向导中填写任务基本信息。
2、根据需要设置选项,数据库锁选项默认选中状态,点击【下一步】。
【重复数据删除选项】默认为不勾选;勾选该选项可以启动源端重复数据删除的功能;重删属性开启后,默认数据分块范围为4~64KB。数据分块可选值:4、8、16、32、64、128、256、512,单位为KB;但最小数据块不能大于或等于最大数据块值,即可调范围为4~512KB;该选项,在建立任务后,不能通过修改任务的方式更改此属性;

3、添加数据源,数据源支持自动发现实例,需要给实例授权之后才可继续展开实例。授权时,依次输入实例正确的用户名、密码和端口号,确定保存后即可成功展开实例。选择要备份的数据库后,继续点击【下一步】。
1.支持自动发现此备份服务器下所有的MySQL实例,以实例名呈现。
2.必须要给实例添加正确的授权信息,实例才能进一步展开。
3.实例的用户名一般默认为root。
4.当后台数据库的密码包含有特殊字符,例如*,此时展开实例会失败。因为我们向后台传输数据是基于web的,这种情况下,会将发送的数据里面的html的特殊符号自动转变成具有语义的字符。所以实际传到后台的密码已经不是真正意义上的密码。当出现这种情况时,目前只能手动修改数据库密码后重新添加实例解决。
5.后台数据库的密码中包含有~、@、#、¥、%、(、)、!是可以支持展开实例的。
6.端口号默认为3306,可以支持手动修改。
添加前:

点击设置,授权实例:

展开实例:

注意:
1.支持备份单个数据库或整个实例。
2.支持选择多个实例备份。
3.不支持同一个数据库出现在多个任务中,创建任务会失败,提示如:选中的【MySQL】在用户【admin】的任务【mmmm】中已存在。
4.展开数据源时,能够浏览到系统数据库MySQL,test和其他后期自定义的数据库,浏览不到系统数据库information_schema和performance_schema。
information_schema确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等。在information_schema中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
MySQL 5.5新增一个存储引擎:命名performance_schema,主要用于收集数据库服务器性能参数。MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表,故在数据源中将其屏蔽掉。
4、计划的推荐配置。
在爱数产品中,有多种任务计划可以进行选择,比如每天、每周、每月、一次性。设置方法如下:
进入任务设置计划向导,选择备份类型、备份计划、开始时间。

支持继续添加、修改、删除或暂停计划

1.添加每月计划任务的时候,尽量避免选择31号、30号、29号进行定时备份,考虑到有的月份特殊,可选择28号及其之前的任何一个日期进行备份,这样可以保证每月都有任务执行。
2.在设置【开始时间】时,建议您尽量在服务器空闲时进行备份操作;另外,在设置【最大保存完全副本数】时,可在综合考虑您的存储空间和数据需求等因素后进行合理的设置。(保留副本数策略:保留n个副本数,至少需要n+1个副本的空间)
5、计划设置完毕,如果资源足够,请立即开始一次完全备份。选中任务,点击【发起】按钮,点击【备份】,选择需要的备份类型,即可开始备份操作。


无
请参考MySQL for Windows定时备份最佳实践4.1.1章节。
请参考MySQL for Windows定时备份最佳实践4.1.2章节。
特别提示:在Linux环境下MySQL的实例名以端口号来标识,如MySQL3306,MySQL3307等。
Q:redhat6-64bit下MySQL5.6-64bit定时备份,当数据库密码为空时,任务备份失败。

A:此现象属于正常情况。由于MySQL5.6数据库的安全性提高了,本身并不支持密码为空时的备份。需要设置数据库的密码,删除原先的任务,重新创建任务备份即可(也可以编辑原先的任务,重新授权实例选择数据源,保存后再次备份)
Q:MySQL for Linux的环境,创建MySQL定时备份任务,未添加实例授权,直接展开实例节点,提示连接实例失败(而非提示实例未授权)?
A:此现象属于正常情况。虽然没有手动添加,但是此时实际上客户端安装目录bin目录下的MySQLserver.config文件已存在(Linux平台下的特殊实现,为了通过实例名和socket文件来自动获取实例),且文件中只有实例名和port信息(port里面保存的是socket文件路径),user和 password都是空的,待手动配置后才会更新写入。
定时备份异机恢复时,务必保证异机的数据库实例名、用户名、密码和端口号均与源机保持一致,否则恢复失败。
定时备份恢复时,务必启动MySQL数据库服务,否则恢复失败。
不支持跨系统平台恢复(Windows恢复到Linux,Linux恢复到Windows)。
不支持Windows平台跨数据库版本恢复。
不支持Linux平台跨数据库版本恢复。
支持最小粒度为数据库级别的恢复,也支持整个实例的恢复。
支持选择多个实例恢复。
备份或恢复时,详细信息中的”执行信息、已完成数据量、当前速度”需要等待备份完成一个数据库或恢复完成一个数据库之后才会有信息显示。(所以如果有数据量较大的数据库正在备份或恢复,此三项信息显示为空白,属于正常现象)。
MySQL定时备份恢复,目前支持恢复整个实例级别,也支持恢复单个数据库。
备注:Windows和Linux只有恢复端的操作系统不一致,控制台的操作步骤一样。故具体的恢复流程均可参考下述恢复步骤。
1.点击【任务管理】中的【发起】【浏览恢复】

2.选择要恢复的时间点及数据

注意:如果是要恢复到最新状态,推荐选择最新时间点。
选择恢复位置,默认为恢复至原客户端原位置,恢复为原数据库名称
注意:
当同时选择多个数据库时,只可以恢复至原位置(或异位置)的原数据库名称,不支持恢复至指定目标数据库名称(此时“目标数据库名称”选项为灰色禁用状态);
当选择单个数据库时,可以恢复至原位置(或异位置)的原数据库名称,也可以恢复至指定数据库名称。
支持选择多个实例恢复。
![]() |
选择恢复策略,默认为覆盖现有的数据库。可根据实际需求填写执行备注信息。
![]() |
确定完成后,即启动了恢复任务。可以在任务监控和任务历史记录中查看当前任务的执行状态和最终执行结果。
Q:恢复失败,报错:error connecting to database,too many connections?
![]() |
A:此现象是由于MySQL的最大连接设置数小于实际选择要恢复的数据库个数。需要修改MySQL配置文件中的max_connections数目大于等于要恢复的数据库个数并重启MySQL服务。再次恢复即可成功。
Q:当环境出现备份或恢复速度较慢,怎样解决?
首先查看存储柜的cached值,如果cached值小于6GB时,可以使用以下方法进行性能调优。

1.打开/etc/sysctl.conf文件。
#vi /etc/sysctl.conf
2.修改如下参数的值为下方参数对应的值,如参数名不存在则新增。
vm.min_free_kbytes = 0
vm.swappiness = 0
vm.vfs_cache_pressure = 0
vm.dirty_background_ratio = 50
vm.dirty_ratio = 80
vm.dirty_writeback_centisecs = 10000
3.保存/etc/sysctl.conf文件,并执行sysctl -p命令。
Q:进行MySQL恢复过程中,出现异常,任务未能成功结束(错误提供者:mysqlBackup,错误值:e0410009,错误位置:ncMySQLRestoreExec.cpp:319)(附加信息:恢复数据发生异常.(错误提供者:mysqlBackup, 错误值:e041000e,错误位置:ncMySQLCore.cpp:1069)(附加信息:MySQL server has gone away))
分析原因:此问题可能是表结构、内容较大,块大小超过了max_allowed_packet;或者是等待重连时间很长,时长超过了wait_timeout。mysql根据配置文件会限制server接受的数据包大小。有时候大数据量的插入和更新会被max_allowed_packet 参数限制掉,导致失败。一般来说,max_allowed_packet值需要修改的概率更大。
解决方法:
1)查看和修改max_allowed_packet
查看目前配置
show VARIABLES like '%max_allowed_packet%';
如显示的结果为:
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 1048576 |
+--------------------+---------+
以上说明目前的配置是:1M
修改方法
一、 方法1
可以编辑my.cnf来修改(windows下my.ini),在[mysqld]段或者mysql的server配置段进行修改。
如max_allowed_packet = 20M
如果找不到my.cnf可以通过mysql --help | grep my.cnf去寻找my.cnf文件。
root@localhost usr]# mysql --help | grep my.cnf
在linux下会发现上述文件可能都不存在。
1)先确定使用的配置文件的路径(如果未启动,可先启动)
[root@localhost usr]# ps aux |grep mysql
找到mysqld或mysqld_safe的那一行,看下basedir=/path/file ,那个/path/file就是配置文件路径;
2)也可以直接创建 /etc/my.cnf, 或者从你安装的mysql的相关目录中(可能是/usr/include/mysql或/usr/share/mysql)找一个my.cnf 或 my-small.cnf 拷贝为/etc/my.cnf,mysql启动时会优先使用这个配置文件。
可以用如下命令在/etc目录下查找my.cnf类似的文件名:
[root@localhost usr]# find -name "my*.cnf"
3)有了配置文件,在配置文件中的[mysqld]下边加些常用的配置参数。重启mysql服务器后,该参数即可生效。
二、 方法2
进入mysql server,在mysql 命令行中运行:
set global max_allowed_packet = 2*1024*1024*10;
退出mysql命令行,然后重新登录。
show VARIABLES like '%max_allowed_packet%';
查看下max_allowed_packet是否编辑成功。
注:方法2中,如果重启mysql服务,max_allowed_packet的值会还原成默认的初始值,命令行里设定的值不会生效。
2)查看和修改wait_timeout
mysql>show global variables like‘wait_timeout’;
修改全局wait_timeout值
set global wait_timeout=28800;
单位为毫秒;
查看修改之后的值










