mysql数据库拷贝
我们常常会有这种需求,将某个server上的mysql数据库完整复制到其它机器上,比方数据库迁移。要想做到这点最简单的就是使用mysql提供的现成工具:mysqldump。
使用mysqldump的时候须要指定账号、password、主机等信息。
比如: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表示username。-P 6071表示port。-p表示password,这里我们用命令行输入,所以此处password是空白的。
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选项就能够解决上述问题。