回答
通常你运行的mysqldump创建一个数据库复制和备份如下:使用SFTP/SSH远程MySQL服务器
$ mysqldump -u user -p db-name > db-name.out
复制DB-name.out文件:
$ scp db-name.out [email protected]:/backup
还原数据库在远程服务器(通过ssh登录):
$ mysql -u user -p db-name < db-name.out
OR
$ mysql -u user -p 'password' db-name < db-name.out
如何将MySQL数据库从一台计算机/服务器复制到另一台计算机/服务器?
简而言之,您可以使用ssh或mysql客户端将数据库从一台计算机/服务器复制到另一台计算机/服务器。
您可以运行在一个通用mysqldump和mysql命令所有上述3个命令(不安全的方法,只使用,如果您使用VPN或信任网络):
$ mysqldump db-name | mysql -h remote.box.com db-name
使用SSH,如果你不”吨有远程MySQL服务器(安全法)直接访问:
$ mysqldump db-name | ssh [email protected] mysql db-name
OR
$ mysqldump -u username -p'password' db-name | ssh [email protected] mysql -u username -p'password db-name
你ç一个只是复制称为酒吧使用相同的语法表名为foo到远程数据库(和远程MySQL服务器remote.box.com):
$ mysqldump db-name foo | ssh [email protected] mysql bar
OR
$ mysqldump -u user -p'password' db-name foo | ssh [email protected] mysql -u user -p'password' db-name foo
几乎所有的命令都可以通过下水管运行UNIX/Linux oses。
更多来自Reference
问候,
请确保您在转储中使用扩展插入选项(我认为它可能默认启用,但不是肯定的),否则恢复速度将显着下降。 – 2012-02-28 21:20:50
*从这里取:http://www.cyberciti.biz/tips/howto-copy-mysql-database-remote-server。html – 2013-09-16 22:08:30
如果你有根,你可能会发现它更快避免mysqldump
。您可以在目标服务器上创建数据库,并直接复制数据库文件。假设user
访问目标服务器的mysql目录:
[[email protected]]# /etc/init.d/mysqld stop
[[email protected]]# cd /var/lib/mysql/[databasename]
[[email protected]]# scp * [email protected]:/var/lib/mysql/[databasename]
[[email protected]]# /etc/init.d/mysqld start
重要的事情是:复制DB文件之前停止这两个服务器上的mysqld,确保文件的所有权和权限在目标正确的启动mysqld前目标服务器。
[[email protected]]# chown mysql:mysql /var/lib/mysql/[databasename]/*
[[email protected]]# chmod 660 /var/lib/mysql/[databasename]/*
[[email protected]]# /etc/init.d/mysqld start
随着时间的推移在这儿你的优先级,压缩的使用将取决于时间是否失去了等待的压缩/解压缩(喜欢的东西gzip
)会比浪费传输未压缩数据的时间更大;也就是连接的速度。
这是迄今为止最简单的方法。不知道为什么这不是更高。然后,MySQL服务器就是原件的复印件。我在5分钟内将整个网络服务器克隆到了一台独特的服务器上。 – David 2013-09-27 15:12:13
我做了上述步骤,但我得到“错误1146(42S02):表'sample.user'不存在”,当我尝试打印用户表。任何想法 ?? – Bathakarai 2013-11-06 08:39:08
想法:错误路径下用户表的文件,错误的文件权限或配置不同的服务器。 – Umbrella 2013-11-08 15:48:18
对于一个自动化的方式来备份你的MySQL数据库:
的先决条件做任何形式的备份是找到一天的理想的时间来完成任务,而不妨碍运行系统的性能或用户造成干扰。在这个笔记中,必须考虑数据库的大小以及驱动器的I/O速度 - 随着数据库的增长,数据库的规模变得越来越重要(想到的另一个因素是驱动器的数量,因为有一个由于磁头不执行读写操作,数据库不存储的备用驱动器会提高速度。)为了保持这种可读性,我假设数据库具有可管理的大小(100MB),并且工作环境是上午9点至下午5点的工作,没有真正的压力或其他非工作时间系统。
第一步是使用root权限登录到本地计算机。一旦在根shell中,MySQL用户将需要创建具有只读权限。要做到这一点,使用以下命令输入MySQL的外壳:
mysql -uroot -ppassword
接下来,用户需要具有只读的权限需要进行备份的数据库中创建。在这种情况下,如果稍后使用脚本或进程,则不需要将特定数据库分配给用户。要在MySQL外壳创建拥有完全的读取权限的用户,输入以下命令:
grant SELECT on *.* TO [email protected] IDENTIFIED BY ' backuppassword';
FLUSH PRIVILEGES;
随着创建的MySQL用户,就可以安全退出MySQL的外壳,并使用出口回落到root的shell。从这里开始,我们需要创建我们想要运行备份命令的脚本,这很容易使用BASH完成。该脚本可以在任何地方进行存储,因为我们将使用一个cron作业每晚运行脚本,这个例子的目的,我们将放置脚本在新目录中,我们创建了一个名为“backupscripts。”要创建该目录,在root shell中使用这个命令:
mkdir /backupscripts
我们还需要创建一个目录来存放我们的本地备份。我们将这个目录命名为“backuplogs”。在root shell中发出以下命令来创建目录:
mkdir /backuplogs
下一个步骤将是登录到远程机器的根证书,并创建一个“备份用户”使用以下命令:
useradd -c "backup user" -p backuppassword backupuser
为备份创建一个目录:
mkdir /backuplogs/
您注销之前,使用命令抓取远程主机的IP地址,以供将来参考:
ifconfig -a
eth0是有线网络连接的标准接口。注意这个IP_ADDR。
最后,注销远程服务器,并返回到原来的主机。
下一步,我们将创建一个是我们的主机本地机器,而不是在遥控器上我们的脚本文件。我们将使用VIM(如果你是一个纳米或Emacs风扇不记仇我 - 但我不会列出如何使用VIM编辑在这里一个文件,)首先创建文件,并使用mysqldump ,备份你的数据库。我们也将使用scp来创建数据库后,压缩文件以进行存储。将文件读取到STDOUT以满足说明。最后,检查7天以前的文件。删除它们。要做到这一点,你的脚本将是这样的:
vim /backupscripts/mysqldbbackup.sh
#!/bin/sh
# create a temporary file for the schema to be stored
BACKUPDIR = /backuplogs/
TMPFILE = tmpout.sql
CURRTIME = $(date +%Y%m%d).tgz
#backup your database
mysqldump -ubackupdbuser -pbackuppassword databasename > $BACKUPDIR$TMPFILE
#compress this file and store it locally with the current date
tar -zvcf /backuplogs/backupdb-$CURRTIME $BACKUPDIR$TMPFILE
#per instructions - cat the contents of the SQL file to STDOUT
cat $BACKUPDIR$TMPFILE
#cleanup script
# remove files older than 7 days old
find $BACKUPDIR -atime +7 -name 'backup-db-*.tgz' -exec rm {} \;
#remove the old backupdirectory from the remote server
ssh [email protected] find /backuplogs/ -name 'backup-db-*.tgz' -exec rm {} \;
#copy the current backup directory to the remote server using scp
scp -r /backuplogs/ [email protected]:/backuplogs/
#################
# End script
#################
有了这个脚本的地方,我们需要安装SSH密钥,所以,我们不是提示我们每个脚本运行时输入密码。我们将使用SSH-keygen和命令执行此操作:
ssh-keygen -t rsa
在提示时输入密码 - 这会创建您的私钥。不要分享这个。
你需要分享的是你的公钥,它被存储在文件current_home /的.ssh/id_rsa.pub文件。下一步是将此公钥传输到远程主机。要获得密钥,请使用以下命令:
cat current_home/.ssh/id_rsa.pub
复制文件中的字符串。接下来使用以下命令进入远程服务器ssh:
ssh [email protected]
输入您的密码,然后编辑文件/.ssh/authorized_keys。将从id_rsa.pub文件中获取的字符串粘贴到authorized_keys文件中。使用编辑器将更改写入文件,然后退出编辑器。注销远程服务器并通过使用先前的ssh命令尝试再次登录到远程服务器来测试RSA密钥的工作情况。如果没有要求密码,它工作正常。再次注销远程服务器。
我们需要做的最后一件事是建立一个cron作业的用户已注销后,每天晚上运行此。使用crontab,我们将编辑当前用户文件(root)以避免所有权限问题。 *注 - 这可能产生严重的影响,如果有在脚本中包括删除数据,安全漏洞等错误 - 仔细检查所有的工作,并确保你信任你自己的系统,如果这是不可能的,那么备用的用户和应该在当前服务器*上设置权限。要修改当前的crontab,我们将发出命令:
crontab -e
虽然在crontab编辑器(它会在您的默认文本编辑器打开),我们要设置我们的脚本在运行12每晚:30AM。输入一个新行到编辑器:
30 0 * * *庆典/backupscripts/mysqldbbackup.sh
保存此文件并退出编辑器。为了让你的cronjob正常运行,我们需要重新启动crond服务。要做到这一点,发出命令:
/etc/init.d/crond restart
- 1. 什么是升级Magento数据库的最快和最简单的方法?
- 2. 从MySQL数据库获取行和数据的最快方法?
- 3. 将数据移动到其他数据库的最简单方法
- 4. 最快的方式MySQL的
- 5. 将PostgreSQL数据库迁移到SQL Server的最简单方法
- 6. 最快的方式,以显示MySQL数据库记录
- 7. MYSQL:最简单的方式,以表2
- 8. 最简单的方法来复制MySQL数据库?
- 9. 更新mysql数据库的最简单方法?
- 10. 在php中订购mysql输出的最简单/最快的方式
- 11. 向移动设备传递数据的最轻/最快的方式是什么?
- 12. 什么是将表单数据写入MYSQL数据库的最快也是最安全的方式
- 13. 如何备份MongoDB GridFS数据库是最简单的方法?
- 14. 使用psql命令创建数据库,最简单的方式
- 15. 部署网站和数据库的最简单的方法
- 16. 平均ARGB颜色整数的最快/最简单的方法?
- 17. C#将数据插入SQL数据库的最快方式
- 18. 将数据插入到MySQL/MariaDB中的最快和最简单的方法是什么?
- 19. 将数千行插入mysql数据库的最快方法?
- 20. 在MySQL数据库中增加计数器的最快方法
- 21. 最简单的方式来检测移动设备
- 22. 用C++将数据插入mysql数据库的最简单方法是什么?
- 23. 什么是简单合并文件的最快捷方式,什么是分割数组的最快捷方式?
- 24. Sqlalchemy,python,用数据填充数据库的最简单方法
- 25. 快速读取POST数据的最简单方法
- 26. C#如何连接WPF和SQLITE数据库最简单的方法
- 27. 最快和并发的NOSQL数据库
- 28. 最佳方式为数据存储在简单的数据
- 29. angluarjs最快/最简单的后端?
- 30. 以最简单,最简单的方式编辑一个页面
我想这样的问题属于上http://dba.stackexchange.com/我希望移居迁移,但我没有代表:P或可能http://www.Superuser.com但我会怀疑前者,因为它是数据库特定的。 – Jordan 2012-02-28 21:17:33