在做迁移的时候,源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 |