有时候我们需要将本地数据库拷贝到服务器上,我们就需要用到数据库的备份和还原,一般备份分为 逻辑备份和 物理备份,这里我们使用逻辑备份比较简单的方式。
逻辑备份
在 MySQL 中,逻辑备份的最大优点是对于各种存储引擎都可以用同样的方法来备份;而物理备份则不同,不同的存储引擎有着不同的备份方法,因此,对于不同存储引擎混合的数据库,逻辑备份会简单一点。
// 备份指定的数据库或者数据库中的某些表
[root@longer] mysqldump [options] db_name [tables]
// 备份指定的一个或多个数据库
[root@longer] mysqldump [options] --database DB1 [DB2,DB3...]
// 备份所有数据库
[root@longer] mysqldump [options] --all-database
如果没有指定数据库中的任何表,默认导出所有数据库中的所有表。
具体步骤
1.备份数据库 local_database,一般备份文件采用.sql
[root@longer]mysqldump -uroot -p local_database > local_database.sql
2.将导出的local_database.db 具体拷贝到远程服务器,使用scp,具体命令网上搜
3.登陆服务器,还原local_database.db文件
[root@longer]mysql -uroot -p db_name < local_database.sql
注意,将备份恢复后数据并不完整,还需要将备份后执行的日志进行重做:
mysqlbinlog binlog-file | mysql -uroot -p
数据还原的时候可能会遇到以下问题,是备份和还原没有设置编码
ERROR: ASCII '\0' appeared in the statement, but this is not allowed unless option --binary-mode is enabled and mysql is run in non-interactive mode. Set --binary-mode to 1 if ASCII '\0' is expected. Query: ''.
改正
[root@longer]mysqldump -uroot -p --default-character-set=utf8 local_database > local_database.sql
[root@longer]mysql -uroot -p --default-character-set=utf8 db_name < local_database.sql
这样就大功告成。