阿里云 DTS 數(shù)據(jù)遷移過程中的報錯記錄


遷移準備

終于把一個小應(yīng)用放到阿里的云服務(wù)器上了,因為用的是 MySQL 5.6 的數(shù)據(jù)庫,試試使用 DTS 遷移到阿里云的數(shù)據(jù)庫上。購買了 MySQL 5.6 的數(shù)據(jù)庫,創(chuàng)建好了賬號和數(shù)據(jù)庫,于是直接開始遷移。

預(yù)檢查報錯

  • 權(quán)限錯誤
    遷移的賬號需要具有數(shù)據(jù)復(fù)制的權(quán)限,列舉下數(shù)據(jù)庫中常用的權(quán)限
權(quán)限 權(quán)限級別 權(quán)限說明
CREATE/DROP 庫表(索引) 創(chuàng)建刪除
ALTER/DELETE/INDEX/INSERT/SELECT/UPDATE 更改刪除索引插入查詢更新
CREATE (SHOW) VIEW 視圖 創(chuàng)建(查看)視圖
ALTER(CREATE) ROUTINE 存儲過程 更改(創(chuàng)建)存儲過程
EXECUTE 存儲過程 執(zhí)行存儲過程
FILE 服務(wù)器主機上的文件訪問 文件訪問權(quán)
CREATE TEMPORARY TABLES 服務(wù)器管理 創(chuàng)建臨時表權(quán)限
LOCK TABLES 服務(wù)器管理 鎖表權(quán)限
CREATE USER 服務(wù)器管理 創(chuàng)建用戶權(quán)限
PROCESS 服務(wù)器管理 查看進程權(quán)限
RELOAD 服務(wù)器管理 執(zhí)行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的權(quán)限
REPLICATION CLIENT 服務(wù)器管理 復(fù)制
REPLICATION SLAVE 服務(wù)器管理 復(fù)制
SHOW DATABASES 服務(wù)器管理 查看數(shù)據(jù)庫權(quán)限
SHUTDOWN 服務(wù)器管理 關(guān)閉數(shù)據(jù)庫權(quán)限
SUPER 服務(wù)器管理 執(zhí)行kill線程權(quán)限

而 DTS 需要的是 REPLICATION SLAVE 和 REPLICATION CLIENT 權(quán)限

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 數(shù)據(jù)庫采用的是主從架構(gòu),所以需要開啟設(shè)置 server_id ,參考

源數(shù)據(jù)庫需要設(shè)置 server_id 大于 1,源庫 serverid 沒有設(shè)置,增量遷移不能成功拉取 binlog,設(shè)置的方式

set global server_id=某個不為1的數(shù)

建議在配置文件中,直接配置 server_id=某個不為1的數(shù)

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 沒有開啟,增量遷移無法拉取事務(wù)日志。
調(diào)用命令 show global variables like 'log_bin'; 確認 log_bin=on。在源實例,更改 my.conf, 設(shè)置 log_bin,并重啟MySQL后重新進行預(yù)檢查

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 格式,需要在源庫執(zhí)行 set global binlog_format=ROW 后重新進行預(yù)檢查。建議在配置文件中設(shè)置 binlog_format = ROW,重啟MySQL,否則連接中的 session 可能以非ROW模式繼續(xù)寫入.

#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)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容