美文网首页
阿里云 DTS 数据迁移过程中的报错记录

阿里云 DTS 数据迁移过程中的报错记录

作者: 风Boy | 来源:发表于2017-05-30 15:29 被阅读427次

    迁移准备

    终于把一个小应用放到阿里的云服务器上了,因为用的是 MySQL 5.6 的数据库,试试使用 DTS 迁移到阿里云的数据库上。购买了 MySQL 5.6 的数据库,创建好了账号和数据库,于是直接开始迁移。

    预检查报错

    • 权限错误
      迁移的账号需要具有数据复制的权限,列举下数据库中常用的权限
    权限 权限级别 权限说明
    CREATE/DROP 库表(索引) 创建删除
    ALTER/DELETE/INDEX/INSERT/SELECT/UPDATE 更改删除索引插入查询更新
    CREATE (SHOW) VIEW 视图 创建(查看)视图
    ALTER(CREATE) ROUTINE 存储过程 更改(创建)存储过程
    EXECUTE 存储过程 执行存储过程
    FILE 服务器主机上的文件访问 文件访问权
    CREATE TEMPORARY TABLES 服务器管理 创建临时表权限
    LOCK TABLES 服务器管理 锁表权限
    CREATE USER 服务器管理 创建用户权限
    PROCESS 服务器管理 查看进程权限
    RELOAD 服务器管理 执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限
    REPLICATION CLIENT 服务器管理 复制
    REPLICATION SLAVE 服务器管理 复制
    SHOW DATABASES 服务器管理 查看数据库权限
    SHUTDOWN 服务器管理 关闭数据库权限
    SUPER 服务器管理 执行kill线程权限

    而 DTS 需要的是 REPLICATION SLAVE 和 REPLICATION CLIENT 权限

    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';
    mysql> SHOW GRANTS FOR 'user'@'%';
    +------------------------------------------------------------------------------------------------------------------------------------+
    | Grants for user@%                                                                                                                   |
    +------------------------------------------------------------------------------------------------------------------------------------+
    | GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD '****' |
    | GRANT ALL PRIVILEGES ON `datebase`.* TO 'user'@'%'                                                                                     |
    +------------------------------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    
    
    • 源库server_id检查

    由于阿里云的 RDS 数据库采用的是主从架构,所以需要开启设置 server_id ,参考

    源数据库需要设置 server_id 大于 1,源库 serverid 没有设置,增量迁移不能成功拉取 binlog,设置的方式

    set global server_id=某个不为1的数
    

    建议在配置文件中,直接配置 server_id=某个不为1的数

    mysql> SHOW GLOBAL VARIABLES like 'server_id';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 0     |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    mysql> SET GLOBAL server_id=2;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> SHOW GLOBAL VARIABLES like 'server_id';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 2     |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    • 开启源库 binlog

    如果源库 binlog 没有开启,增量迁移无法拉取事务日志。
    调用命令 show global variables like 'log_bin'; 确认 log_bin=on。在源实例,更改 my.conf, 设置 log_bin,并重启MySQL后重新进行预检查

    mysql> SHOW GLOBAL VARIABLES LIKE 'log_bin';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | log_bin       | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    mysql> SHOW VARIABLES LIKE 'log_bin%';
    +---------------------------------+--------------------------------+
    | Variable_name                   | Value                          |
    +---------------------------------+--------------------------------+
    | log_bin                         | ON                             |
    | log_bin_basename                | /var/lib/mysql/my-binlog       |
    | log_bin_index                   | /var/lib/mysql/my-binlog.index |
    | log_bin_trust_function_creators | OFF                            |
    | log_bin_use_v1_row_events       | OFF                            |
    +---------------------------------+--------------------------------+
    5 rows in set (0.00 sec)
    
    
    • 源库binlog模式

    源库默认为源库 binlog format 的格式需要 raw 格式,需要在源库执行 set global binlog_format=ROW 后重新进行预检查。建议在配置文件中设置 binlog_format = ROW,重启MySQL,否则连接中的 session 可能以非ROW模式继续写入.

    #Add to DTS
    server_id = 2
    log-bin = my-binlog
    binlog_format = ROW
    
    mysql> SHOW VARIABLES LIKE 'binlog_format%';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | binlog_format | ROW   |
    +---------------+-------+
    1 row in set (0.00 sec)
    
    

    相关文章

      网友评论

          本文标题:阿里云 DTS 数据迁移过程中的报错记录

          本文链接:https://www.haomeiwen.com/subject/bkdhfxtx.html