使用sql server 备份与还原这块很方便,一直拒绝MYSQL,效率很低,备份和还原也特别的慢,所以单独整理研究一篇关于MYSQL的备份与还原,基于mysql8的版本。
总结:目前发现还是官方自带的mysqldump是好用的,虽然速度比较慢,最少风险也小
一、Sql Server 同步到 MySql
SqlServer MDF文件大小为4.28G,使用 Navicat Premium 12,将本地的SqlServer 2008 R2数据导入本地的MySql 8数据库,环境为本机WIN10。
2千1百万条数据耗时快一个小时了。
二、Win MySql数据目录 复制到 Linux MySql 数据目录(失败,等Copy LInux To Linux在试)
# 1.使用putty自带的pscp程序将本地的数据库文件上传到服务器
pscp "C:\Program Files\mysql-8.0.19-winx64\data\syyz.rar" root@124.239.148.216:/mysql8
# 2.查看Linux下的MySql的数据目录
mysql> show global variables like '%datadir%';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
# 3.操作上传的数据文件
service mysqld stop #停止Mysql服务
mv /mysql8/syyz.rar /var/lib/mysql #移动上传的数据库文件
rar x syyz.rar #解压到当前目录
service mysqld start #启动报如下错误,应该是Win下的data文件COPY到LINUX下不行,所以以后在试这种方式吧。
Redirecting to /bin/systemctl start mysqld.service
Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.
三、mysqldump工具备份
# 1. Windows 环境备份
cd C:\Program Files\mysql-8.0.19-winx64\bin #进入bin目录
mysqldump -u root -h 127.0.0.1 -p syyz > backdb.sql #备份syyz库,3.75G备份了5分钟多,好慢
# 2. 上传Linux 还原
pscp "C:\Program Files\mysql-8.0.19-winx64\bin\backdb.rar" root@124.239.148.216:/mysql8 #上传
rar x backdb.rar #解压
mysql -uroot -p syyz</mysql8/backdb.sql #还原耗时11分钟(syyz库必须存在,会覆盖数据)
### 常用命令 ###
# 备份整个数据库
$> mysqldump -u root -h host -p dbname > backdb.sql
#备份数据库中的某个表
$> mysqldump -u root -h host -p dbname tbname1, tbname2 > backdb.sql
#备份多个数据库
$> mysqldump -u root -h host -p --databases dbname1, dbname2 > backdb.sql
#备份系统中所有数据库
$> mysqldump -u root -h host -p --all-databases > backdb.sql
网上说使用这两个参数备份,恢复会快(打脸,参考 )
mysqldump -uroot -p123456 syyz --max_allowed_packet=67108864 --net_buffer_length=16384 > syyz.sql #备份耗时3分钟
mysql -uroot -p syyz</mysql8/syyz.sql 恢复结果耗时50分钟,如果不加那两个参数恢复用13分钟,为啥?
四、Xtrabackup工具使用
下载很慢(我使用WIN下载):
wget https://www.percona.com/downloads/Percona-XtraBackup-LATEST/Percona-XtraBackup-8.0.10/binary/redhat/7/x86_64/Percona-XtraBackup-8.0-10-r94f9645-el7-x86_64-bundle.tar
下载成功后,打开将第一个文件上传服务器
pscp C:\percona-xtrabackup-80-8.0.10-1.el7.x86_64.rpm root@124.x.x.x:/mysql8
安装
yum install percona-xtrabackup-80-8.0.10-1.el7.x86_64.rpm
判断是否安装
rpm -qa | grep -i xtrabackup
查看版本
xtrabackup --version
我MYSQL安装的是8.0.19难道不支持?
先不管了,备份试试
xtrabackup --backup --target-dir=/mysql8/back/ -uroot -p
结果备份完后,MYSQL就停止了,启动也启动不了了,不知道是备份版本的问题,还是什么问题
重启linux服务器后,发现又自动启动了。
恢复全库备份(删除其中的一个表)
service mysqld start #停止服务
mv /var/lib/mysql /var/lib/mysql-bak
xtrabackup --copy-back --target-dir=/mysql8/back/ 覆盖数据文件
chown -R mysql:mysql /var/lib/mysql 组
chmod -R 755 /var/lib/mysql 权限
service mysqld start #启动服务
被删除的表,确实也回来了,但是这个工具貌似只能全库备份,和增量备份,到Sql Server的备份功能差的太远太远,性能就更不说了,这也是我一直排斥mysql的原因。
五、Centos 7.5 安装rar工具
# 1. 下载,比较慢
wget https://www.rarlab.com/rar/rarlinux-x64-5.5.0.tar.gz
# 2. # rar软件不需要安装,直接解压到/usr/local 下
tar fx rarlinux-x64-5.5.0.tar.gz -C /usr/local/
# 3.设置环境变量(以下操作需要有root权限)
ln -s /usr/local/rar/rar /usr/local/bin/rar
ln -s /usr/local/rar/unrar /usr/local/bin/unrar
# 4.用法(解压 xx.rar 到当前目录)
rar x xx.rar
# 5.所有参数使用方法:
a 添加文件到压缩档案
c 添加压缩档案注释(注释的大小最大不能超过62000字节)
cf 添加文件备注( 当使用'v'参数时显示文件备注,最大不能超过32767字节)
ch 改变压缩档案参数
cw 向指定文件写入档案备注
d 从档案中删除文件
e 解压缩文件到当前目录(不创建任何子目录)
f 刷新档案中的文件(更新这些文件自它们被打包之后产生的变化,不在压缩档案中增加新的)
i[par]=<str> 在档案中查找特定字符
k 锁定档案(任何试图改变压缩档案中内容的命令都会被忽略)
l[t,b] 列出档案[technical, bare]
m[f] 移动到压缩档案中[只针对文件]
p 打印文件到标准输出
r 修补压缩档案
rc 重建丢失的分卷
rn 重命名压缩档案中的文件
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[name|-] 压缩档案与SFX(自解压文档)之间的转换
t 测试压缩档案文件
u 更新压缩档案中的文件
v[t,b] 列出压缩档案的详细信息[technical,bare]
x 解压缩到完整路径