CentOS7-mysql数据迁移同步

此文档适用于源mysql数据源是原生安装,目标mysql数据源使用docker安装
使用 mysqldump 导出和导入 MySQL 数据的具体步骤
适用于小型到中型数据库
1、备份数据源,登录源myql服务器执行

#单数据库
mysqldump -u your_account -p'your_password' mydatabase > /home/mydatabase.sql
或
mysqldump -u your_account -p mydatabase > /home/mydatabase.sql
提示输入密码,这样无需在命令中暴露密码
#全数据库
mysqldump -u your_account -p'your_password' --all-databases > /home/mydatabase.sql
或
mysqldump -u your_account -p --all-databases > /home/mydatabase.sql
提示输入密码,这样无需在命令中暴露密码
#忽略mysql自带数据库
mysqldump -u your_account -p'your_password' --all-databases --ignore-database=mysql --ignore-database=information_schema --ignore-database=performance_schema --ignore-database=sys > /home/mydatabase.sql
或
mysqldump -u your_account -p --all-databases --ignore-database=mysql --ignore-database=information_schema --ignore-database=performance_schema --ignore-database=sys > /home/mydatabase.sql
提示输入密码,这样无需在命令中暴露密码

参数解释:
-u: 指定用户名。
-p: 指定密码(紧贴密码,无空格)。
mydatabase: 要导出的数据库名。
/home/mydatabase.sql: 将导出的 SQL 数据保存到 /home/mydatabase.sql 文件中
2、传输 SQL 文件到目标服务器使用 scp 或其他文件传输工具,将 SQL 文件从源服务器传输到目标服务器:(若两台服务器网络不互动,这一步手动下载本地再上传到目标服务器)

scp mydatabase.sql <目标服务器IP>:/home/

3、在目标服务器导入数据库使用 docker exec 命令进入 MySQL 容器,然后导入数据:

docker ps

#单数据库
docker exec -i mysql_container_name mysql -u 用户名 -p密码 数据库名 < /home/mydatabase.sql
或
docker exec -i mysql_container_name mysql -u 用户名 -p 数据库名 < /home/mydatabase.sql
提示输入密码,这样无需在命令中暴露密码
#多数据库
docker exec -i mysql_container_name mysql -u 用户名 -p密码 < /home/mydatabase.sql
或
docker exec -i mysql_container_name mysql -u 用户名 -p < /home/mydatabase.sql
提示输入密码,这样无需在命令中暴露密码

4、验证数据登录目标服务器的 MySQL 容器,检查数据是否正确:

docker exec -it <mysql_container_name> mysql -u 用户名 -p
SHOW DATABASES;

5、清理中间文件
导入完成后,可以删除中间文件:

rm /home/mydatabase.sql

扩展

导出和导入结构和数据分开处理
仅导出表结构
mysqldump -u root -p'your_password' --no-data mydatabase > /home/mydatabase_structure.sql
仅导出数据:
mysqldump -u root -p'your_password' --no-create-info mydatabase > /home/mydatabase_data.sql

注意事项
1、字符集问题: 如果数据库包含特殊字符,建议指定字符集:

mysqldump --default-character-set=utf8mb4 -u root -p'your_password' mydatabase > /home/mydatabase.sql

2、权限问题: 确保目标 MySQL 容器的用户有足够权限导入数据。如果导入失败,可以先赋予用户权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;

3、大文件优化: 如果 SQL 文件很大,可以使用压缩工具:

导出时压缩:
#单数据库
mysqldump -u root -p'your_password' mydatabase | gzip > /home/mydatabase.sql.gz
#多数据库
mysqldump -u root -p'your_password' --all-databases | gzip > /home/mydatabase.sql.gz
导入时解压:
#单数据库
gunzip < /home/mydatabase.sql.gz | docker exec -i mysql_container_name mysql -u root -p'your_password' mydatabase
#多数据库
gunzip < /home/mydatabase.sql.gz | docker exec -i mysql_container_name mysql -u root -p'your_password'

4、容器挂载路径问题
在 Docker 中,容器的文件系统是独立的,与宿主机隔离
查看容器路径

docker exec -it mysql_container_name bash
pwd
显示容器路径

复制备份文件到容器中

docker cp /home/mydatabase.sql mysql_container_name:/tmp/mydatabase.sql
这里 /tmp/mydatabase.sql 是容器内的路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值