【发布时间】:2014-04-22 06:17:08
【问题描述】:
我想将我的 mysql 数据库从我的计算机复制到另一台计算机。我该怎么做?
【问题讨论】:
-
使用export db并导入
-
@homen,看看我的明确参考问题...
-
如果你得到答案,你应该点击勾选按钮并像点击这个链接meta.stackexchange.com/a/5235/255001一样投赞成票
我想将我的 mysql 数据库从我的计算机复制到另一台计算机。我该怎么做?
【问题讨论】:
如何使用mysqldump将Mysql数据库从一台计算机复制到另一台/备份数据库
我们可以使用以下命令将 MySQL 数据库从一台 PC 转移到另一台 PC mysqldump 命令。
我们必须创建数据库的转储文件来传输数据库 一台 PC 到另一台 PC。
MySQL 数据库不是可移植数据库,即我们无法转移它 通过复制和粘贴从一台 PC 到另一台 PC。
我们可以使用以下方法来传输数据库。
从数据库创建转储文件/备份 MySQL 数据库:
打开命令提示符。
执行以下命令更改目录
>c: “press enter”
>cd program files/MySQL/MySQL Server 5.1/ bin “press enter”
>mysqldump -u root -p database_name > database_name.sql “press enter”
Enter password: password of MySQL
复制sql文件并将其粘贴到您要传输数据库的PC中。
2. Dumping sql file into database:-
- Open MySQL command line client command prompt.
- Execute following command to create database.
创建数据库database_name;
“按 Enter” 数据库名称必须与您的 database_name 相同。
将该 sql 文件复制到位置“c:/program files/MySQL/MySQL Server 5.1/bin”
*- Now open command prompt and execute following commands.*
>C: “press enter”
>cd program files/MySQL/MySQL Server5.1/bin “press enter”
>mysql –u root –p database_name < database_name.sql “press enter”
Your database is created on PC.
Now in MySQL command prompt check your database.
另一个:1
最好和最简单的方法是使用数据库工具(SQLyog)
http://www.webyog.com/product/downloads
使用此工具,您可以连接 2 个数据库服务器,只需将服务器 a 上的一个数据库复制到服务器 b。
更多信息
另一个:2
对于名为“lbry”的数据库,试试这个:
mysqldump -u root -p lbry > dump-lbry.sql
在您希望将数据库内容复制到的计算机上创建一个同名数据库(本例中为“lbry”)
然后导入:
mysql -u root -p lbry < dump-lbry.sql
【讨论】:
您可以使用 MySQL WorkBench 逐步完成此过程。
希望这会有所帮助。
【讨论】:
将数据库从一台机器复制到另一台机器的唯一安全方法是首先静默数据库(确保没有客户端正在修改它),然后使用mysqldump 命令创建模式的文本表示和你的桌子。然后将该文本文件复制到另一台机器并通过将其指定为mysql 命令的输入来读取它。
试图复制实际的 mysql 数据目录是自找麻烦,因为它们依赖于运行 mysql 的机器的体系结构,并且可能依赖于 mysql 的版本和正在使用的任何存储引擎。
【讨论】:
4.1 在源服务器上运行 mysqldump:这将为目标服务器构建一个 MySQL 可执行脚本。 在此期间,MySQL 服务器将对查询进行排队 4.2 将转储文件复制到目标服务器 4.3 清空目标服务器 4.4 在目标服务器上执行转储文件
服务器 A(源服务器) 服务器 B(目标服务器)
案例 1:服务器 A
root@source$ mysql --defaults-file=/etc/mysql/debain.cnf
mysql>show databases;
mysql>use testdb;(The database to dump)
mysql>show tables;(To Check the tables)
mysql>^c
-- 现在转储数据库
root@surce$ mysql --defaults-file=/etc/mysql/debain.cnf --all-databses | gzip -c > dump.sql.gz
root@surce$ gzip -dc dump.sql.gz
要复制文件,请在源服务器上创建一个 ssh 密钥
root@surce$ ssh-keygen
root@surce$ cat /root/.ssh/id_rsa.pub
select and copy all the ssh key string
root@surce$ scp dump.sql.gz ubuntu@destination:
转到目标服务器
最后一步复制debain.cnf文件的内容
root@surce$ cat /etc/mysql/debain.cnf
[client]
host = localhost
user = debain-sys-maint
password = mysecret
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debain-sys-maint
password = mysecret
socket = /var/run/mysqld/mysqld.sock
basedir = /usr
全选并将此文件复制到目标服务器。
注意:sockey 路径在你的机器上可能不同。使用 locate 命令找到确切的路径
案例 2. 服务器 B 删除所有数据库
root@destination$ echo show databases | mysql --defaults-file=/etc/mysql/debian.cnf --skip-column-names | awk '{print "drop database "$1";"}'
如果此命令不删除数据库,请使用 -force 选项
root@destination$ echo show databases | mysql --defaults-file=/etc/mysql/debian.cnf --skip-column-names | awk '{print "drop database "$1";"}' | mysql --defaults-file=/etc/mysql/debian.cnf -f
复制目标服务器上的 ssh 密钥
root@destination$ echo "在此处粘贴密钥" >> /home/ubuntu/.ssh/authorised_keys
转到源服务器并使用 scp 命令移动目标服务器上的转储
(注入文件)
root@destination$ gzip -dc /home/ubuntu/dump.sql.gz | mysql --defaults-file=/etc/mysql/debain.cnf
root@destination$ > /etc/mysql/debain.cnf
root@destination$ nano /etc/mysql/debain.cnf
在此处粘贴来自源服务器的 .cnf 文件的内容并保存文件 :x
root@destination$ mysql --defaults-file= /etc/mysql/debain.cnf
如果你得到 mysql 提示,那么一切都应该是工作文件
mysql>
【讨论】:
我能够恢复在此线程之后与我共享的备份,特别是 @jmail 的答案,但是,我认为我可以为未来的用户提供更简洁的答案。我收到了一个带有 .sql 扩展名的转储文件,而不是我预期的 .dump 扩展名。
我试图将它放在我的项目文件夹中并恢复它,但我收到错误 22,指的是访问权限。我把它移到“c:/program files/MySQL/MySQL Server 5.1/bin”,然后运行它:
1) 在命令提示符下启动 MySQL。
2) 创建我想要恢复到的新数据库
3) 切换到数据库
USE new_DB;
4) 运行
source c:/program files/MySQL/MySQL Server 5.1/bin/backup.sql
我不确定 backup.sql 文件是如何创建的,但这适用于在我的 Windows 10 系统上恢复它。
【讨论】:
mysqldump --databases dbname -hsource_server_ip -usource_server_userName -psource_server_passcode | mysql
-udest_server_user_name -pdest_server_user_passcode &
调用mysqldump的一般方式有3种:
shell> mysqldump [options] db_name [tbl_name ...]
shell> mysqldump [options] --databases db_name ...
shell> mysqldump [options] --all-databases
如果您没有在 db_name 之后命名任何表,或者如果您使用 --databases 或 --all-databases 选项,则会转储整个数据库。
mysqldump 默认不转储INFORMATION_SCHEMA 数据库。如果您在命令行上明确命名,MariaDB 会转储 INFORMATION_SCHEMA,但目前您还必须使用 --skip-lock-tables 选项。
要查看您的 mysqldump 版本支持的选项列表,请执行 mysqldump --help。
【讨论】: