CentOS7下mysql数据库的迁移

CentOS7下mysql数据库的迁移,第1张

想知道你的mysql装在哪里吗?CentOS7一般是装在/var/lib/mysql中的

在完成迁移之前,先用下面的指令来停止mysqld服务

service mysqld stop,或者直接点sudo systemctl stop mysqld

然后用df-h指令看服务器上剩余空间是多少,假设我们新挂了一块500G的硬盘到/data上

那么请把mysql整个文件夹拷贝到/data中,像下面这样:

sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原来的mysql文件夹就可以删除了

然后再修改/etc/my.cnf,这个也是需要su的:

sudo vi /etc/my.cnf

里面有一个字段叫[mysqld],将datadir和socket修改成这样:

datadir=/data/mysql

socket=/data/mysql/mysql.sock

接下来,有的人说要修改/etc/init.d/mysqld,但我的服务器不需要,直接通过

service mysqld start就可以启动SQL服务了,远程也可以连接上,但是:

当你使用终端mysql -u root -p的时候,就会报下面这个错:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

这个时候,你有两种解决办法,一种是造一个软连接

ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock,原因是你已经删掉之前的mysql目录了

另外一种办法,是在/etc/my.cnf下面新建一个新字段:

[mysql]

socket=/data/mysql/mysql.sock

第一种方法不需要重启mysql server,第二种方法需要重启mysql server,

然后,你就可以成功地从终端里进入mysql了

敲黑板,不要在[mysql]下面自做主张地写上datadir=/data/mysql,这样会导致本地命令行登录时报错:Unknown Variable: datadir=/data/mysql

具体 *** 作步骤如下:

1.首先格式化磁盘,并将数据盘挂载在mnt目录下

mkdir -p /mnt/data

2.用mysqldump命令导出您项目所有的数据,命令参考如下:

mysqldump -p --all -datebases>all.sql

3.停止mysql

/etc/init.d/mysqld stop

4.vim/etc/init.d/mysqld 将文件中“datadir = /server/mysql/data”中的目录地址更改为您迁移至数据盘中的目录地址,即“datadir=/mnt/data”。

5.然后用以下命令初始化一个全新的数据库环境:

/server/mysql/scripts/mysql_install_db --basedir =/server/mysql--datadir = mnt/data -- user =mysql

值得注意的是datadir为您mysql的数据目录。

6.启动mysql,然后将数据还原至新的数据盘中:

/etc/init.d/mysqld start

mysql <all.sql

/etc/init.d/mysqld restart

这个估计没办法简单的一条 sql 语句完成了。

你可能创建几个 新旧id 关联表, 来存储数据。

还不能确定, 你的 id 是不是自动增长的.

例如

信息表a(id,name)

创建一个表 old_to_new_a ( oldid , newid)

以下处理逻辑, 是假设你的 id 是 自增长的情况。

你旧库 a -->新库 a 的时候。

如果 新旧 id 与 name 都一样, 那么简单去 old_to_new_a 插入一行关联数据。

旧系统的 id 与新系统的id 是相同的。

如果 name 已存在, 那么去 old_to_new_a 插入一行关联数据。

也就是 old_to_new_a ( 旧系统的 id , 新系统的id)

如果 name 不存在

那么先去 a 插入一行新的数据。 获取新的 自增id.

然后再去 old_to_new_a 插入一行关联数据。

旧库 b -->新库 b 的 处理, 和 a 差不多一样。

就是要去折腾个 old_to_new_b ( oldid , newid)

----

最后就是折腾 关系表e。

一行一行判断 aid 和 bid

用 aid 去 old_to_new_a 表, 查询出新系统的 aid

用 bid 去 old_to_new_b 表, 查询出新系统的 bid

然后去新系统的 e 表中查询。数据是否已存在。

不存在就插入一行。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8314771.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存