简介
本文档介绍如何备份和恢复Cisco CMX 10.5及更高版本上的配置和客户端数据
先决条件
要求
需要具备CMX的一般知识。
使用的组件
所有测试均在MSE 3375设备、MacOS 10.4和Windows 10 2018年10月更新上运行的CMX 10.6.0-177上执行。
这包括安装在物理3365/3375设备和虚拟机上的CMX。可以备份CMX的以下组件:
- 数据库 — 存储配置数据,例如地图、控制器、位置和聚合分析数据
- 缓存 — 存储分析重复访问
- Cassandra — 存储位置历史数据和分析原始访问
- Influxdb — 存储系统的指标数据(默认情况下不包括)
- Consul — 存储Consul配置
- 地图 — 存储楼层图像以显示UI
- 许可证 — 存储Cisco CMX许可证信息
- 设置 — 存储CMX设置数据
- Connectimages — 在连接强制网络门户上存储映像
- Conf — 存储节点配置
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您的网络处于活动状态,请确保您了解所有命令的潜在影响。
备份过程
创建备份捆绑包
CMX无论安装在何处,都可以使用cmxos backup命令进行备份。默认情况下,备份包括数据库、缓存、cassandra、地图、许可证、设置、连接和配置。添加-all参数以同时包括Influxdb数据。默认情况下,执行备份过程时,会停止CMX服务。添加参数 — 在线以执行备份,而不停止CMX服务。系统将提示您输入要保存备份tar.gz存档的目录。目录需要具有读取、写入和执行权限。建议使用默认的/tmp目录。
在全新安装的CMX上,备份过程大约需要30秒。在满载和充分利用的CMX上,创建备份捆绑包最多可能需要一个小时。
确保在SSH客户端中启用keepalive消息,以便创建备份时会话不会超时。在PuTTY中,可以在“Connection”选项卡下完成此操作:
[cmxadmin@mse33752 ~]$ cmxos backup --online --all
Please enter the path for backup file [/tmp]:
backup name: cmx_backup_mse33752_2019_04_28_22_39
backup dir: /tmp/cmx_backup_mse33752_2019_04_28_22_39
tar file: /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
running: sudo -u cmx /opt/cmx/bin/cmxctl version
----------------------------------------------------------------------
Build Version : 10.6.0-331
Build Time : 2019-01-24 13:27:35.937025
----------------------------------------------------------------------
Image Version : 10.6.0-177
----------------------------------------------------------------------
Preparing backup of following services: ['database', 'cache', 'cassandra', 'influxdb', 'floormaps', 'licenses', 'setup', 'connectimages', 'conf']
[22:39:56] Preparing for backup...
Preparing for backup...
Database size 51226723
Cache size 7794
Cassandra size 67462961
Floormaps size 1014394
Licenses size 6
Setup size 1912
Connectimages size 6
running: sudo -u cmx /opt/cmx/bin/cmxctl dump
running locally
Dumping configuration information...
[localhost] Executing task 'dump_config_only'
Done.
.
.
.
.
.
.
.
copy snapshot took 0.804718971252 seconds
Backup Cassandra DB took: 8.50579595566 seconds
[22:40:07] Backup InfluxDb...
Backup InfluxDb...
Backup Influx DB took: 0.0411479473114 seconds
[22:40:07] Backup Floormaps...
Backup Floormaps...
Backup floor maps took: 0.055881023407 seconds
[22:40:07] Backup licenses...
Backup licenses...
Backup licenses took: 0.000136137008667 seconds
[22:40:07] Backup setup...
Backup setup...
Backup setup took: 0.00061297416687 seconds
[22:40:07] Backup connect images...
Backup connect images...
Backup connect images took: 0.000127077102661 seconds
[22:40:07] Backup node configuration...
Backup node configuration...
running: sudo -u cmx /opt/cmx/bin/cmxctl dump
running locally
Dumping configuration information...
[localhost] Executing task 'dump_config_only'
Done.
Backup configuration took: 0.383893013 seconds
[22:40:07] Creating tar file..
Creating tar file..
running: tar -chf /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz --use-compress-program=pigz -C /tmp cmx_backup_mse33752_2019_04_28_22_39
running: chmod a+rw /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
running: chown cmxadmin:cmxadmin /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
Post backup took: 0.17880988121 seconds
Done Backup. Created backup file /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
[22:40:07] Done Backup. Created backup file /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
running: /opt/apache-cassandra-3.9/bin/nodetool --ssl -h cassandra.service.consul -p 7199 clearsnapshot
Requested clearing snapshot(s) for [all keyspaces]
在输出的末尾,指定备份归档文件的名称:
[22:40:07] Done Backup. Created backup file /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
备份高可用性设置
如果高可用性当前已启动并正在运行,由于所有数据库都在主数据库和辅助数据库之间同步,从主CMX进行备份就足以保存所有客户端数据。只需运行cmxos backup —all —online命令,然后从主服务器传输文件。
如果当前未在主服务器和辅助服务器之间建立高可用性,请首先确定哪个CMX具有完整的最新数据,然后从该数据创建备份。
注意:如果建立了高可用性,则仅在主服务器上支持在线备份。如果禁用了高可用性,则主备份和辅助备份均支持联机备份和脱机备份。
将捆绑包从CMX移至另一台计算机
如果CMX的硬盘发生问题或文件在升级过程中损坏,则保存在CMX上的备份文件可能会丢失。建议使用安全复制协议(SCP)将数据从CMX移动到另一台计算机。下面您可以找到如何在Windows、MacOS和Linux PC上执行此操作的示例:
Windows 窗口版本:
在Windows上执行此操作的最简单方法是通过WinSCP程序。安装后,输入cmxadmin用户的IP地址和凭证并建立SCP连接。导航到保存备份的文件夹,找到备份文件并将其拖动到本地计算机上的所需位置(左侧窗口)。
重要信息:由于CMX 10.6.x中的根访问限制,WinSCP用于导航目录的cd不存在。在这种情况下,无法使用WinSCP。如果您想要获取根补丁的访问权限或查找备用SCP实用程序,请联系Cisco TAC。
MacOS和Linux:
MacOS和大多数Linux发行版都带有本地scp客户端。可使用简单的terminal命令移动文件:
scp cmxadmin@<cmx_ip_address>:/<file_path_and_name_on_cmx> <file_path_and_name_on_local_machine>
示例:
VAPEROVI-M-H1YM:~ vaperovi$ scp cmxadmin@10.48.71.41:/tmp/cmx_backup_mse33752_2019_04_28_19_38.tar.gz /Users/vaperovi/cmx_backup_mse33752_2019_04_28_19_38.tar.gz
cmxadmin@10.48.71.41's password:
cmx_backup_mse33752_2019_04_28_19_38.tar.gz 100% 186KB 1.4MB/s 00:00
CMX显示输入cmxadmin用户凭证的提示,之后数据将传输到本地计算机中的指定位置。
注:考虑到CMX 10.5及更高版本在CentOS 7上运行,此命令可用于将数据从一个CMX移动到新安装的CMX。由于一个无线控制器一次只能与一个CMX同步,请确保关闭从中下载备份捆绑包的CMX。
从CMX删除备份存档
在CMX版本10.5.x上,可以删除文件,方法是以root用户身份通过su命令登录,导航到保存了备份文件的/tmp目录,并通过rm -f命令将其删除:
[cmxadmin@mse33752 ~]$ su
Password:
[root@mse33752 cmxadmin]#
[root@mse33752 cmxadmin]# cd /tmp
[root@mse33752 tmp]# rm -f cmx_backup_mse33752_2019_04_28_19_38.tar.gz
从版本10.6.0开始,根访问已受到限制。如果没有只能由Cisco TAC提供的特殊补丁,则无法删除10.5上的文件。可以使用cmxos clean normal —delete命令释放一些空间:
[cmxadmin@mse33752 ~]$ cmxos clean normal --delete
Are you sure you wish to remove files? [y/N]: y
Removing files in: /opt/cmx/var/log
Remove: /opt/cmx/var/log/entropy.err
Remove: /opt/cmx/var/log/backup.log.2
Remove: /opt/cmx/var/log/techsupport/cmx_tech_support_2019-04-28.log
Removing files in: /opt/influxdb/shared
Removing files in: /tmp
重要信息:如果在运行cmxos clean normal —delete后仍没有足够的空间执行备份,则需要联系Cisco TAC以获取根目录访问权限并删除占用空间的文件。
恢复备份
如果要恢复备份,请将备份文件从远程计算机传输到CMX。在Windows中,您可以使用WinSCP直接拖放文件。在MacOS和Linux上,使用以下命令:
$ scp <file_path_and_name_on_local_machine> cmxadmin@<cmx_ip_address>:/tmp
示例:
VAPEROVI-M-H1YM:~ vaperovi$ scp /Users/vaperovi/cmx_backup_mse33752_2019_04_28_19_38.tar.gz cmxadmin@10.48.71.41:/tmp
cmxadmin@10.48.71.41's password:
cmx_backup_mse33752_2019_04_28_19_38_copy.tar.gz 100% 186KB 1.3MB/s 00:00
重要信息:必须从具有相同本地时间的设备还原Cisco CMX数据。否则,您将无法正确访问分析数据。此外,数据还会导致报告出现错误或零值。
要恢复数据,CMX的可用磁盘空间需要是备份捆绑包大小的4倍。如果空间不足,您可以尝试增加VM的空间,或者通过运行cmxos clean normal —delete命令。可以使用cmxos restore命令启动恢复过程。添加-i参数后,您只能备份某些元素(数据库、缓存、cassandra、地图、许可证、设置、会议)。建议执行完整备份。
恢复过程需要停止所有服务。确保为此过程准备足够的维护时段,因为它可能需要一个多小时。
[cmxadmin@mse33752 ~]$ cmxos restore
Please enter the backup file path: /tmp/cmx_backup_mse33752_2019_04_28_22_39.tar.gz
Please enter the path for untar backup file [/tmp]:
Stopping monit (via systemctl): [ OK ]
[23:49:19] Preparing for restore...
Restore size 30383753
Available disk space in /tmp is 1812541169664
Available disk space is 1817753817088
[23:49:19] Untarring backup file...
Backing up existing licenses on the system...
Successfully saved existing licenses
Stopping all services...
Pre restore took: 41.672647953 seconds
[23:50:00] Restoring Database...
Created temporary database temp_mse
Running command /usr/bin/sudo -u postgres pg_restore -j 8 -d temp_mse -Fc /tmp/cmx_backup_mse33752_2019_04_28_22_39/postgres/mse.dump
Restored temporary database temp_mse
Dropping database mse
Renaming database temp_mse to mse
Restarting database...
Starting database...
Restore database took: 10.2765719891 seconds
[23:50:11] Restoring Cache...
Stopping cache_6378...
Restarting cache_6378...
Stopping cache_6379...
Restarting cache_6379...
Stopping cache_6385...
Restarting cache_6385...
Stopping cache_6380...
Restarting cache_6380...
Stopping cache_6381...
Restarting cache_6381...
Stopping cache_6382...
Restarting cache_6382...
Stopping cache_6383...
Restarting cache_6383...
Stopping cache_6384...
Restarting cache_6384...
Restore Cache took: 61.1865711212 seconds
[23:51:12] Restoring Cassandra...
Stopping Cassandra...
Starting Cassandra after wipe...
starting cassandra
Creating empty cassandra schemas
Stopping Cassandra...
Starting Cassandra after restore ...
starting cassandra
Restore Cassandra took: 117.123826981 seconds
[23:53:09] Restoring floormaps...
Restore floor maps took: 0.0736980438232 seconds
[23:53:09] Restoring licenses...
Restore licenses took: 0.000176906585693 seconds
[23:53:09] Restoring setup...
Restore setup took: 0.00758194923401 seconds
[23:53:09] Restoring connect images...
Restore connect images took: 0.000188827514648 seconds
[23:53:09] Running Post Restore Tasks...
[23:53:09] Migrating Schemas...
[23:53:10] Migrating Cassandra Schemas...
stopping cassandra
Local licenses wont be retained.
Running full vacuum command on postgres
Performing cleanup of redis cache 6378 and 6383 to evict bloom filter stale entries.
Performing cleanup of redis cache 6378 to evict stale records by qlesspyworker.
Update CMX default certificate
Post restore took: 61.7358779907 seconds
[23:54:11] Starting all services...
[23:56:04] Done
Starting monit (via systemctl): [ OK ]
Additional Information
备份和恢复过程的限制
- 不能将来自CMX 10.3或更早版本的备份导入CMX 10.5.x及更高版本。可以将10.5.x的备份导入CMX 10.6.x
- 为了符合GDPR,需要执行数据库、楼层地图、许可证和设置组件的备份
- 确保端口22在CMX与用于访问它的计算机之间未被阻塞
- 如果从其他类型的CMX部署中恢复备份,请参阅下表以检查它们是否兼容:
恢复自……
|
恢复为...
|
建议
|
相同的计算机规格 |
相同的计算机规格 |
确定 |
思科MSE 3365设备 |
思科3375设备 |
确定 |
思科MSE 3365设备 |
高端MSE虚拟(vMSE) |
确定 |
高端vMSE |
Cisco 3375和Cisco MSE 3365设备 |
除非高端计算机分配的RAM比建议的规格大,否则正常 |
标准vMSE |
Cisco 3375和Cisco MSE 3365设备 |
确定 |
标准vMSE |
高端vMSE |
确定 |
低端vMSE |
Cisco 3375和Cisco MSE 3365设备 |
确定 |
低端vMSE |
高端vMSE |
确定 |
低端vMSE |
标准vMSE |
确定 |
思科3375设备 |
思科MSE 3365设备 |
不推荐 |
思科MSE 3365设备 |
标准vMSE |
不推荐 |
思科MSE 3365设备 |
低端vMSE |
不推荐 |
高端vMSE |
标准vMSE |
不推荐 |
高端vMSE |
低端vMSE |
不推荐 |
标准vMSE |
低端vMSE |
不推荐 |
备份和虚拟机快照之间的差异
虚拟机快照不能被视为备份工具,因为它们不会采取任何操作来维护虚拟机用于其数据存储的VMDK文件的完整性。
快照的操作方法是“冻结”原始VMDK存储文件,并创建其他快照文件,以捕获对原始VMDK文件(称为磁盘链)所做的更改。这样,可以及时保留磁盘文件的状态,并在进行某些更改后根据需要回滚到。
因此,如果原始(父)VMDK文件丢失或以任何方式损坏,则快照数据无法用于将其还原到其以前的状态,并且存储的数据实际上会丢失。
在vSphere环境中使用快照的VMware最佳实践提到以下内容:
- 请勿将快照用作备份(原因已列出)
- VMware建议单个快照的使用时间不要超过72小时(如果快照文件保留的时间更长,则其大小将继续增长。这可能导致快照存储位置耗尽空间并影响系统性能)。
- 一个链中最多支持32个快照。但是,为了获得更好的性能,请限制仅使用2到3个快照。
有关详细信息,请参阅VMware快照最佳实践文章。