服务器Mysql数据库迁移

服务器Mysql数据库迁移

因公司云服务器即将到期并准备更换与平台,所以对云服务器数据库做迁移。

准备工具

  • Docker
  • Navicat

迁移思路

  1. 新旧数据库同步,保证迁移过程中在不影响服务的情况下将新增的数据及时添加到新数据库。
  2. 旧数据备份,预防迁移旧数据过程中出现意外。
  3. 迁移旧数据,将旧数据库中的数据整体迁移到新数据库并切换服务。

原数据库信息记录

  • 原数据库:120.79.1XX.XX(果园服务器)

  • 端口:1234

  • 用户名:root

  • 密码:9ApHXXXXX

  • 需要迁移的库:

    • orchard_hc
    • orchard_prod
    • orchard_yudu
    • orchard_test
    • nangfeng_orchard

新数据库创建及配置

  • 新数据库:122.9.1XX.XXX (Yufeng-DB1)
  • 端口:1234
$ docker load < mysql-5.7.tar  # 本地进行,无本地则docker pull mysql:5.7

$ mkdir -p /opt/software/mysql/GuoyuanDB/conf
$ mkdir -p /opt/software/mysql/GuoyuanDB/data
$ mkdir -p /opt/software/mysql/GuoyuanDB/logs

$ vim /opt/software/mysql/GuoyuanDB/conf/my.cnf  # 下方文件为基础内容,innodb优化等内容自行配置。

$ docker run -d  -p 1234:3306 --privileged=true -v /opt/software/mysql/GuoyuanDB/logs:/var/log/mysql -v /opt/software/mysql/GuoyuanDB/data:/var/lib/mysql -v /opt/software/mysql/GuoyuanDB/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=helloword --name GuoyuanDB mysql:5.7

$ docker ps -a # 检查容器是否启动
$ docker logs GuoyuanDB  # 若未成功启动查看日志

my.cnf

#############################################
[mysqld]

port=3306

# server_id,本容器为主数据库
server_id=101

# 开启二级制日志功能
log-bin=maill-mysql-bin

# 设置二进制日志使用内存大小(事务)
binlog_cache_size=5M

# 设置使用的二进制日志格式(mixed, statement, row)
binlog_format=mixed

## 二进制日志过期清理时间。默认值为0;表示不自动清理。
# expire_logs_days=7

## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断。
## 如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

# 支持联合查询
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
################################################

新旧数据库结构与表同步

  • 使用Navicat工具,连接新数据库。

    连接不上就检查服务器是否开放连接ip和1234端口。

  • 使用Navicat新建需要迁移的5个同名库。

  • 工具 --> 结构同步 :选择同名库,进行表结构同步。

新旧数据库同步配置

  • 服务器登录主数据库,创建同步账号并授权。
# 原数据库确保开启二进制日志后,创建同步账号并授权
$ mysql -u root -p
create user 'db1'@'122.9.1XX.XXX' identified by '123';
grant replication slave, replication client on *.* to 'db1'@'122.9.1XX.XXX';
flush privileges;
show master status;

# 记录同步开始文件及位置
file:mysql-bin.000072
positions:408
  • 服务器登录从数据库,选择master并开始同步
change master to
master_host='120.79.1XX.XX',
master_port=1234,
master_user='db1',
master_password='123',
MASTER_LOG_FILE='mysql-bin.000072',
MASTER_LOG_POS=408;

start slave;
show slave status \G;
# Slave_IO_Running:Yes
# Slave_SQL_Running:Yes
# 这两个状态为YES为配置成功

过程中出现Slave_IO_Running:No的问题:

检查后为原服务器未对新服务器ip添加白名单,开放后成功同步。

原数据库数据备份

$ mysqldump -uroot -p9ApHXXXXX --databases nangfeng_orchard orchard_test orchard_hc orchard_prod orchard_yudu > /data/db_backup/bak.sql

数据迁移

Navicat : 工具 --> 数据传输

选择相同的两个库,进行数据传输,完成迁移。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值