购买了一台MBP,2021款M1 Pro,快速实现将旧电脑几百个数据库导入到新电脑,Homebrew安装MySQL

avatar 2024年05月31日22:37:52 0 59 views
博主分享免费Java教学视频,B站账号:Java刘哥 ,长期提供技术问题解决、项目定制:本站商品点此

最近新入手一款2021 M1 Pro的MBP,将跟自己征战五年的2019 intel i5 MBP 说再见了。

据说intel到M1性能有巨大提升,终于要试试了。

首先用迁移助理把用户目录同步过去了,剩下的就是安装各种软件了。

其中MySQL数据对我来说还是挺有用的,200多个数据库呢,怎么快速迁移过去?

一、旧机器上mysqldump

旧机器是brew安装的5.6版本,端口3307

1、先将数据库名存下来

排除 mysql、information_schema、performance_schema、sys这几个数据库

mysql -u root -p -P 3307 -h 127.0.0.1 -e "SHOW DATABASES;" | grep -Ev "(Database|mysql|information_schema|performance_schema|sys)" > databases.txt

 

2、导出文件

mysqldump -u root -p -P 3307 -h 127.0.0.1 --databases $(cat databases.txt) > all_databases_backup.sql

大概450MB

通过投送到新电脑上,默认到下载目录

二、新机器安装MySQL8.0 - 官网下载安装(不推荐)

M1芯片,即Arm64架构的。

不要下载最新的8.4版本,安装会失败

我就下的8.0版本。

0、先下载安装包直接安装即可

然后待会儿修改配置,并重新初始化

也可以使用Homebrew安装

1、准备配置文件 my.cnf,可以放到 /etc下面

[client]
default-character-set=utf8
password = 123456
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
port        = 3306        # 我修改了默认端口
socket      = /tmp/mysql.sock
lower_case_table_names = 1    # 是否对sql语句大小写敏感,1表示不敏感,即不区分大小写,如果无法启动就改成2
skip-external-locking
max_allowed_packet=64M
key_buffer_size = 16K
table_open_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 256K   
server-id = 1

[mysqldump]
quick
max_allowed_packet=1600M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M

[mysqlhotcopy]
interactive-timeout

2、几个必要的配置

默认是没有配置文件的,咱们新建 my.cnf 也是为了方便以后要修改配置。

 

三、Homebrew安装mysql8.0(推荐)

安装后会自动配置环境变量,即可以直接使用 mysql 命令

如果因为配置了my.cnf导致无法启动,很可能原因是 lower_case_table_names = 1  配置问题,可以删除这行或者改成成2

具体可以看err文件

1、新建 my.cnf 同上

不新建也可以

附上最新的my.cnf

[client]
default-character-set=utf8
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
port        = 3306        # 确认端口设置一致
socket      = /tmp/mysql.sock
lower_case_table_names = 2    # 是否对sql语句大小写敏感,1表示不敏感,即不区分大小写
skip-external-locking
max_allowed_packet=64M

# 增加缓冲区大小,以适应现代系统
key_buffer_size = 16M
table_open_cache = 200
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 2M
net_buffer_length = 16K
thread_stack = 192K

# MySQL 8.0 新增的或推荐的设置
innodb_buffer_pool_size = 128M  # 根据系统内存适当调整
innodb_log_file_size = 64M
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

server-id = 1

[mysqldump]
quick
max_allowed_packet=1600M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 16M  # 增加缓冲区大小
sort_buffer_size = 2M

[mysqlhotcopy]
interactive-timeout

2、常用命令

安装命令:brew install mysql@8.0

启动命令:brew services restart mysql@8.0

data目录:/opt/homebrew/var/mysql

安装目录:/opt/homebrew/opt/mysql@8.0

查看安装信息:brew info mysql@8.0

3、设置密码

默认是没有密码

mysql -u root -p
直接回车
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
exit

 

 

四、导入sql数据

/usr/local/mysql-8.0.37-macos14-arm64/bin/mysql -u root -p < ~/Downloads/all_databases_backup.sql 

mysql -u root -p < ~/Downloads/all_databases_backup.sql 

中间可能出现一些报错,根据提示处理sql脚本

比如 ROW_FORMAT=COMPACT 替换为 ROW_FORMAT=DYNAMIC

删除一些行乱码内容,可以搜 0JFIF

 

经过九牛二虎努力终于成功!

  • 微信
  • 交流学习,有偿服务
  • weinxin
  • 编程爱好者交流群
  • 资源分享,问题解决,技术交流。QQ群:424285828(新群)
  • weinxin

发表评论

avatar 登录者:匿名
匿名评论,评论回复后会有邮件通知

  

已通过评论:0   待审核评论数:0