移动大型数据库


8

我有一个centos服务器,/ var / lib / mysql /是125GB(磁盘有1GB可用空间)。

通常,我会使用mysqldump备份数据库,但是我通常不使用大型数据库,因此我需要知道将数据库复制到新服务器的最安全方法。

所有建议表示赞赏!

Answers:


3

您可以使用以下步骤

在旧服务器上

1,停止mysql服务器

2.将datadir的内容复制到磁盘上的另一个位置,作为... mysqlbackup

3.再次启动mysql服务器

4.压缩数据(tar -czvf mysqlbackup.tar.gz mysqlbackup)

5.将压缩文件复制到新服务器

在新服务器上

1.安装MySQL [MySQL版本应与旧服务器相同(不要启动MySQL服务器)

2.解压缩压缩文件(tar -xzvf mysqlbackup.tar.gz)

3.将mysqlbackup的内容移动到datadir。

4.确保datadir权限正确

5,确保你的innodb_log_file_size在新服务器上是一样的,否则请不要复制旧的日志文件(MySQL会生成这些文件)

6,启动MySQL

您还可以查看如何将数据库从一台服务器移到另一台服务器?


2

由于源数据库只有1GB,因此您没有空间在任何地方进行mysqldump。

您需要的是以下内容

  • 端口3306在源数据库服务器的防火墙中打开
  • 从目标数据库服务器运行mysqldump程序

对于IP地址为10.20.30.40的源数据库服务器,登录到目标数据库并运行

PIPE mysqldump在目标数据库服务器上进入MySQL实例

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-tranactions"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS}| mysql ${MYSQL_CONN}

将PIPE mysqldump转储到SQL文件中。从SQLFile加载MySQL

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --hex-blob --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
mysql ${MYSQL_CONN} < MySQLData.sql

最后的笔记

使用技术1,没有磁盘空间可保存SQL文件。如果要转储文件并在以后加载,请使用技术2。


0

在新服务器上,假设您已设置了公钥/私钥对

ssh root@oldserver mysqldump database | mysql database

应该可以正常工作,我认为根本不会使用任何磁盘空间


不要忘记使用ssh -C即时压缩。
2015年

0

通常,您运行mysqldump来创建数据库副本和备份,如下所示:

$ mysqldump -u user -p db-name > db-name.out

使用sftp / ssh将db-name.out文件复制到远程MySQL服务器:

$ scp db-name.out user@remote.box.com:/backup

在远程服务器上还原数据库(通过ssh登录):

$ mysql -u user -p db-name < db-name.out

要么

$ mysql -u user -p 'password' db-name < db-name.out

0

这为我工作:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/

请编辑您的文章并提供一些解释,以帮助将来的用户理解您的代码。
RLF

0

@ user2029574,您的硬件在云中吗?我也曾经偶然遇到过你在这里的同样问题。但是,我的MySQL安装是在AWS上进行的,您知道这意味着很容易附加另一个更大的磁盘。在这里,我总结一下我做了什么:

  1. 将一个更大的新磁盘连接到当前的MySQL服务器实例。
  2. 使用Percona的innobackupex可以在附加的新磁盘中准备当前MySQL数据的完整备份。
  3. 准备另一个安装了MySQL的实例。
  4. 卸下与实例1相连的磁盘。
  5. 现在,将磁盘连接到新实例2。
  6. 在实例2中停止MySQL服务。
  7. 编辑MySQL配置文件,使数据目录指向新位置。
  8. 在新实例中还原数据库。同样,innobackupex可以为您提供帮助。
  9. 在实例2中启动MySQL服务器。

这样,您可以将应用程序一直连接到该数据库,并且如果需要的话,也可以升级云实例的配置文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.