Mysql备份和恢复

在做迁移的时候,源mysql的配置和目标mysql的配置尽量要是一样的,不一样的没有测过。。。可按照下面的方法自行测试

一、迁移所有数据库 (这部分比较简单,就摘抄了一下),主要看第二节
迁移前,源端有以下数据库:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| dan |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
迁移前,目标端的有以下数据库:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)

源端比目标端多一个dan数据库。

--目标端是刚安装好的mysql,默认就有这4个数据库。

在源端备份所有数据库:指令

[root@target_pc databasefile]# mysqldump -u root -p --all-databases > /backup/databasefile/all_databases_20150325.bak

拷贝备份文件到目标端

[root@target_pc databasefile]# scp all_databases_20150325.bak 192.168.8.225:/backup/databasefile/
The authenticity of host '192.168.8.225 (192.168.8.225)' can't be established.
RSA key fingerprint is ed:ee:f6:e6:f5:3b:76:ed:18:fa:2d:eb:73:83:0e:13.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.8.225' (RSA) to the list of known hosts.
root@192.168.8.225's password:
all_databases_20150325.bak 100% 598KB 598.3KB/s 00:00
[root@target_pc databasefile]#
在目标端还原所有数据库

[root@source_pc databasefile]# mysql -u root -p < all_databases_20150325.bak

Enter password:

自行查看数据迁移结果

当迁移所有数据库时,不用提前在目标端创建好所有数据库。

二、迁移某个数据库
源端的所有数据库:(引擎都是用的innodb)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ERP01 |
| HS |
| TA02 |
| TA03 #迁移这一个,里面是含有数据的 |
| db1 |
| fundlx |
| mysql |
| performance_schema |
| test |
| test1 |
| xzszm_2_data |
| xzszm_data |
+--------------------+

在源端先备份需要迁移的这个数据库:

1.在源端创建一个文件夹:/home/backup/
2.执行指令:[root@mysql2 wuchao]# mysqldump -uroot -p -B -F -R -x --master-data=2 TA03 | gzip > /home/wuchao/backup/bak_$(date +%F).sql.gz
查看:

[root@mysql2 wuchao]# ls /home/wuchao/backup/
bak_2018-01-05.sql.gz #文件存在了

然后将文件迁移到目标服务器:

[root@mysql2 wuchao]# scp /home/wuchao/backup/bak_2018-01-05.sql.gz wuchao@192.168.111.111:/home/wuchao/backup #注意要在目标服务器上提前创建好该文件夹,并且调整该文件夹的权限,不能为root用户权限,因为scp是基于ssh的,而mysql默认是
不允许root远程链接的,将文件夹权限改为wuchao这个用户

wuchao@192.168.111.111's password: #填写密码 目标服务器
bak_2018-01-05.sql.gz #生成文件
复制代码

在目标服务器上要提前将TA03这个数据库创建,注意名称要和源的数据库名称相同,只需要创建这个数据库,不需要其他的操作

然后查看创建成功:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| TA03 #创建好了 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)

mysql> use TA03;
最后将备份来的文件解压,然后导入:

[wuchao@redis01 ~]$ sudo gzip -d /home/wuchao/backup/bak_2018-01-05.sql.gz
[sudo] password for wuchao:
[wuchao@redis01 ~]$ mysql -u root -p TA03 < /home/wuchao/backup/bak_2018-01-05.sql
Enter password:
[wuchao@redis01 ~]$
再到目标数据库中查看:数据迁移成功

mysql> show tables;
+-----------------------------------------+
| Tables_in_TA03 |
+-----------------------------------------+
| TA03_allholiday |
| TA03_clearingprograminformation |
| TA03_clearingprogramtype |

原文地址:https://www.cnblogs.com/Nayears/p/12107706.html