一、前言

新的 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 命令来启动容器。

三、文件解析

  1. performace_schema
    性能监控,它在5.6及其之前的版本中,默认没有启用,从5.7及其之后的版本才修改为默认启用。
  2. 数据库目录
    具体存储数据的目录,每个数据库对应一个文件夹,文件夹的名字和数据库的名称一致。
  3. ibdata1: 用来构建innodb系统表空间的文件,这个文件包含了innodb表的元数据、undo日志、修改buffer和双写buffer。
  4. iblogfile_0,iblogfile_1
    新,日志文件,被删除了,重启后会重新生成。
最后修改:2023 年 11 月 08 日
感恩的心,感谢有你!