全部產品
Search
文件中心

Data Transmission Service:為自建MySQL建立帳號並設定binlog

更新時間:Sep 13, 2025

當您DTS任務的源庫為自建MySQL時,為滿足預檢查階段對源庫的要求,保障任務的順利執行,在正式配置之前,您需要在自建MySQL資料庫上建立帳號並設定binlog。

適用情境及許可權參考

情境

許可權參考

源庫為自建MySQL,且要執行增量資料移轉。

  • 待遷移對象的SELECT許可權。

  • REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW許可權。

  • 建庫建表的許可權,以允許DTS建立庫test,用於推進Binlog位點。

資料同步的源庫為自建MySQL。

  • 待同步對象的SELECT許可權。

  • REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW許可權。

  • 建庫建表的許可權,以允許DTS建立庫test,用於推進Binlog位點。

資料訂閱的源庫為自建MySQL。

  • 待訂閱對象的SELECT許可權。

  • REPLICATION CLIENT、REPLICATION SLAVE、SHOW VIEW許可權。

  • 建庫建表的許可權,以允許DTS建立庫test,用於推進Binlog位點。

影響

執行該操作需要重啟MySQL服務,為避免影響您的業務使用,請在業務低峰期操作。

操作步驟

  1. 登入自建MySQL資料庫。

  2. 在自建MySQL資料庫中建立用於資料移轉/同步的帳號。

    CREATE USER 'username'@'host' IDENTIFIED BY 'password';
    說明
    • username:待建立的帳號。

    • host:允許該帳號登入的主機,如果允許該帳號從任意主機登入資料庫,可以使用百分比符號(%)。

    • password:帳號的密碼。

    例如,建立一個帳號,帳號名為dtsmigration,密碼為Dts123456,並允許從任意主機登入資料庫,命令如下。

    CREATE USER 'dtsmigration'@'%' IDENTIFIED BY 'Dts123456';
  3. 對帳號進行授權操作,所需授與權限請參見適用情境及許可權參考

    • 對帳號授予指定庫表的許可權。

      GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
    • 對帳號授予建庫建表的許可權。

      GRANT CREATE ON *.* TO 'username'@'host' WITH GRANT OPTION;
    說明
    • privileges:授予該帳號的操作許可權,如SELECT、INSERT、UPDATE等,如果要授予該帳號所有許可權,則使用ALL。

    • databasename:資料庫名。如果要授予該帳號具備所有資料庫的操作許可權,則使用星號(*)。

    • tablename:表名。如果要授予該帳號具備所有表的操作許可權,則使用星號(*)。

    • username:待授權的帳號。

    • host:允許該帳號登入的主機,如果允許該帳號從任意主機登入,則使用百分比符號(%)。

    • WITH GRANT OPTION:授予該帳號使用GRANT命令的許可權,該參數為可選。

    例如,授予dtsmigration帳號具備所有資料庫和表的所有許可權,並允許從任意主機登入資料庫,命令如下。

    GRANT ALL ON *.* TO 'dtsmigration'@'%';
  4. 開啟並設定自建MySQL資料庫的binlog。

    Linux命令

    1. 使用vim命令,修改設定檔my.cnf中的如下參數。

      log_bin=mysql_bin
      binlog_format=row
      
      # MySQL 8.0以下版本通過expire_logs_days設定binlog儲存時間長度,預設為0(永不到期)
      # MySQL 8.0以上版本通過binlog_expire_logs_seconds設定binlog儲存時間長度,預設為2592000秒(30天)
      # 如果您修改過MySQL中Binlog保留時間長度且小於7天,可以通過以下參數重新設定Binlog儲存時間長度為7天及以上
      # expire_logs_days=7
      # binlog_expire_logs_seconds=604800
      
      # 建議設定為大於1的整數
      server_id=2
      
      # 當自建MySQL的版本大於5.6時,則必須設定該項。
      binlog_row_image=full
      
      # 當自建資料庫為雙主叢集時,需開啟此參數
      # log_slave_updates=ON
    2. 修改完成後,重啟MySQL進程。

      /etc/init.d/mysqld restart

    Windows命令

    1. 修改設定檔my.ini中的如下參數。

      log_bin=mysql_bin
      binlog_format=row
      
      # MySQL 8.0以下版本通過expire_logs_days設定binlog儲存時間長度,預設為0(永不到期)
      # MySQL 8.0以上版本通過binlog_expire_logs_seconds設定binlog儲存時間長度,預設為2592000秒(30天)
      # 如果您修改過MySQL中Binlog保留時間長度且小於7天,可以通過以下參數重新設定Binlog儲存時間長度為7天及以上
      # expire_logs_days=7
      # binlog_expire_logs_seconds=604800
      
      # 建議設定為大於1的整數
      server_id=2
      
      # 當自建MySQL的版本大於5.6時,則必須設定該項。
      binlog_row_image=full
      
      # 當自建資料庫為雙主叢集時,需開啟此參數
      # log_slave_updates=ON
    2. 修改完成後,重啟MySQL服務。 您可以通過Windows中的服務管理員重啟服務,或使用如下命令重啟服務:

      net stop mysql
      net start mysql