一、前言
新的 mac 是苹果芯片,老 mac 的 inter 芯片安装的 homebrew 不太适用。数据直接同步过来之后,很多软件都重装了。其中,本地数据库始终无法进去,因此只能对其进行复制迁移。
二、过程
1. 通过 docker 拉取新的 mysql
这里需要注意,直接拉取的 mysql 会报错。
# 直接docker pull mysql:5.7 会报错:
# no matching manifest for linux/arm64/v8 in the manifest list entries
# 要通过以下命令来拉取
docker pull --platform linux/x86_64 mysql:5.7
2. 生成容器
这里一定要挂载数据库地址。 把 data 挂载出来。
docker run \
--name mysql \
-d \
-p 3306:3306 \
--restart unless-stopped \
-v /Users/anan/workSoftWare/mysql5.7/log:/var/log/mysql \
-v /Users/anan/workSoftWare/mysql5.7/data:/var/lib/mysql \
-v /Users/anan/workSoftWare/mysql5.7/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
mysql:5.7
3. 停止容器
先通过 docker stop xxx 命令把容器给停止。
执行复制
1. 新数据库
在新数据库的 data 文件夹中,除了performance_schema其他全部删除
2. 旧数据库
除了 performace_schema、iblogfile_0,iblogfile_1,其他全部复制到新数据库中。
4. 启动容器
通过 docker start xxx 命令来启动容器。
三、文件解析
- performace_schema
性能监控,它在5.6及其之前的版本中,默认没有启用,从5.7及其之后的版本才修改为默认启用。 - 数据库目录
具体存储数据的目录,每个数据库对应一个文件夹,文件夹的名字和数据库的名称一致。 - ibdata1: 用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffer和双写buffer。
- iblogfile_0,iblogfile_1
新,日志文件,被删除了,重启后会重新生成。
2 条评论
建议标注关键步骤的注意事项。
不错不错,我喜欢看 https://www.jiwenlaw.com/