MySQL导出导入实现备份还原

2024年 1月 10日 37.6k 0

背景说明:一套旧环境上的小型云上的MySQL数据库,要迁移到实体机上。

旧环境的MySQL是5.7.33

新环境的MySQL是8.0.26

一、导出

1、创建备份目录

mkdir -p 备份文件存储路径

2、使用mysqldump导出

cd /mysql安装路径/bin

./mysqldump -u用户名 -p -P端口号--socket=sock完整路径 --master-data=2 --flush-logs --set-gtid-purged=off --triggers --routines --events --databases 数据库名 > /备份文件存储路径/数据库名.sql

注意事项:导出前,检查一下sql_mode有没有8.0不支持的,先去掉。比如我遇到的“NO_AUTO_CREATE_USER”,懒得重新导了,手动处理一下:

sed -i "s/NO_AUTO_CREATE_USER//g" /备份文件存储路径/数据库名.sql

二、导入

cd /mysql安装路径/bin

./mysql -u 用户名 -p --socket=sock完整路径 -P端口号 < /备份文件存储路径/数据库名.sql

三、增量数据处理

注意:当增量数据量极少时,可以采用此方法,当增量数据特别大时,该方法效率反而比整库备份更差。(如果新增的binlog超过一个文件,则不建议采用此方法)

1、查询上次备份后的位置点信息

head -n 100 /备份文件存储路径/数据库名.sql | grep "CHANGE MASTER TO "

2、在备份的源服务器上生成binlog对应的sql文件

cd /mysql安装路径/bin

./mysqlbinlog --start-position=步骤1中的MASTER_LOG_POS 步骤1中的MASTER_LOG_FILE --skip-gtids > /备份文件存储路径/binlog.sql

注意:--skip-gtids:意思是不把gtid信息写到binlog中,否则导入会报错:“ERROR 1782 @@SESSION.GTID_NEXT cannot be set to ANONYMOUS when @@GLOBAL.GTID_MODE = ON”

3、binlog对应的sql文件传输到新服务器上,并将其导入

cd /mysql安装路径/bin

./mysql -uroot -p < /备份文件存储路径/binlog.sql

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论