记一次Mysql数据库迁移
MySQL提供了一个mysqldump命令,它可以实现数据的备份。mysqldump命令可以备份单个数据库、多个数据库和所有数据库,具体如下:
备份单个数据库:
1 | mysqldump -uroot -proot test>back.sql |
test
是要备份的数据库名称,sql存放地址默认当前目录
有的情况下你可能会报错,像这个样子:
1 | Warning: Using a password on the command line interface can be insecure. |
==>>//警告:在命令行界面上使用密码可能不安全。
淡定,不要着急,你这样就好了
1 | mysqldump -uroot -p test>back.sql |
注意下,-p那里,在这里我不输入密码,然后直接回车,让系统提示你输入密码,这个时候你再输入密码就可以了。
1 | Enter password: **** |
在使用mysqldump
命令备份数据库的时候,直接在小黑窗(DOS)命令下执行该命令就可以了,不需要登录到MySQL数据库。
备份全部数据库:
介绍完了单个数据库的备份,该说说备份全部数据库了,命令如下:
1 | mysqldump -uroot -p --all-databases>backall.sql |
注意了,这里的--all
是--,--all
和-databases
之间是没有空格的,如果有空格将会报错如下:
1 | mysqldump: ambiguous option '--all' (all-databases, allow-keywords) |
恢复备份:
注意:你需要先创建一个数据库,然后将备份文件恢复到创建的这个数据库当中,注意<
符号,与备份时的>
恰恰相反,命令如下:
1 | mysql -uroot -p test<back.sql |
然后提示输入密码
1 | Enter password: **** |
恢复成功后没有任何提示,这是正常的。
全部备份的恢复如下
1 | mysql -uroot -p <backall.sql |
当你使用--all-databases
参数备份所有的数据库后,在还原数据库时,你不需要再创建数据库并指定要操作的数据库,因为,对应的备份文件中包含了CREATE DATABASE
语句和USE
语句。
第二种恢复数据方法
1 | source 备份文件的路径+备份文件名称 |
1.先登录数据库,然后切换到要操作的数据库,我们还是先进行单个数据库的恢复。
1 | mysql -uroot -proot -hlocalhost |
2.在该数据库下进行恢复:
1 | mysql> source back.sql |
全部备份的恢复方法:
1 |
|
SCP传输sql文件
scp【参数】本地文件 远程账户@远程IP地址:远程目录
参数 | 作用 |
---|---|
-v | 显示详细的连接进度 |
-P | 指定远程主机的sshd端口号 |
-r | 用于传送文件夹 |
-6 | 使用IPv6协议 |
示例
1 | scp backup.sql root@192.168.3.99:/root |
将backup.sql
传至root
文件夹下