案例说明:
4月初时,企业通知停止中间推数服务器需要停止,换掉一台,需要我将MySQL数据备份起来,然后备份的数据保存好,以便新服务器到时恢复数据。
目录
企业级数据备份案例
前期准备工作:
1、通知停止数据推送
备份前通知各单位停止数据推送,确定都停止数据推送
2、备份前记录备份数据量
在备份之前,需要检查所有库所有表的数据量,主要是记录表的行数,还有记录MySQL所占用空间大小(340G)。以便后期数据恢复到新的服务器,恢复数据时,与原始数据量进行对比,来验证是否成功恢复。
在这一步操作时犯了一个大错:
就是通过执行这个命令来记录表行数:
SELECT
TABLE_NAME AS `表名`,
TABLE_ROWS AS `记录条数`
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = '这里填数据库名'
ORDER BY
TABLE_ROWS DESC;
执行该命令虽然可以帮我一次查出整个库所有表的行数出来,但是查出来的行数和表中实际的行数的不一致的。这样导致在恢复数据后不能确认是否正常恢复备份的数据了(这里让人头大)!!!
如果需要记录准确的表的行记录数,需要执行count(*)来一张表一张表的去查:
select count(*) from 表名;
3、执行数据备份
准备一个移动硬盘用来存储备份数据,我通过离线备份的方式来备份数据的。MySQL的数据备份,是通过执行这个命令:
mysqldump -uroot -p密码 --all-databases > ~/BackupName.sql
该命令是备份整个MySQL库的数据,这个命令执行后会生成一个sql文件,用于后期数据恢复使用的。
4、数据恢复
在恢复数据前需要将存有备份数据库sql文件的硬盘挂载到新的服务器上,可是在挂载的过程中,出现这个问题:
数据的恢复我是执行该命令来一键执行备份数据sql文件来恢复整个库:
nohup mysql -uroot -p'输入密码' < /mnt/usb/BackupName.sql > mysql_import.log 2>&1 &
遇到的问题:
因为我用的是Windows电脑自带的cmd客户端通过ssh作为MySQL的远程连接客户端,在没有用nohup命令来执行数据恢复时,会出现断网导致客户端和服务器连接断掉,运行的命令进程也会停掉:
mysql -uroot -pNFCMbi@20241# < /root/BackupName.sql
解决的办法:
用nohup来执行该命令:这样即使关闭远程连接的客户端,服务器也会在后台将恢复sql数据的命令执行完:
nohup mysql -uroot -p'密码' < /mnt/usb/BackupName.sql > mysql_import.log 2>&1 &
注意:在执行该命令后,关闭cmd时,需要用exit命令退出cmd客户端和服务器的连接,否则一样会停掉后台执行的命令!!!只有在exit的退出连接时,才会将该命令正常的放在后台执行完。
硬盘挂载问题:
当硬盘格式挂载Linux目录出问题时,比如:
挂载sdb1,执行mount /dev/sdb1 /mnt/usb时报这些错误,则需要安装: