我们经常会有这样的需求,将某个服务器上的mysql数据库完整拷贝到其他机器上,比如数据库迁移。要想做到这点最简单的就是使用mysql提供的现成工具:mysqldump。
使用mysqldump的时候需要指定账号、密码、主机等信息。
例如:mysqldump -h 10.10.8.12 -u backup -P 6071 -p backup_db >backup_db.mysql
以上命令把10.10.8.12 主机的backup_db 数据库保存在backup_db.mysql文件中。-u backup表示用户名,-P 6071表示端口,-p表示密码,这里我们用命令行输入,所以此处密码是空白的。backup_db是我们要复制的数据库名字。执行完这条命令后我们会得到backup_db.mysql文件,这个文件实际就是mysqldump输出的重定向到的文件。这个文件里边保存了复制数据库需要的mysql语句。之后我们把这个文件复制到我们要复制到的目标机器上,然后进入mysql命令行,进入一个数据库,再执行source
backup_db.mysql即可完成数据库的复制。执行完后你会发现其实复制数据库的过程就是执行了一些列sql语句,mysqldump做的工作就是把数据库的内容以sql语句的形式导出出来。
还有一点需要注意的是,mysqldump的时候你有可能会遇上下面问题:
mysqldump: Got error: 1044: Access denied for user ‘backup‘@‘10.10.4.42‘ to database ‘backup‘ when using LOCK TABLES
出现这个问题是由于mysqldump企图对整个表上锁而引起的。只需要加上--skip-lock-tables选项就可以解决上述问题。