背景
TDSQL-C for MySQLのデータベースバージョンMySQL 8.0は、完全な管理制御サービスと新しいTXTQLカーネルを組み合わせ、より速く、より安定したエンタープライズ級サービスと豊富な業界シナリオを提供します。現在、TDSQL-C for MySQLコンソールは、データベースのバージョンを直接MySQL 8.0へアップグレードすることをまだサポートしていません。データベースのバージョンをアップグレードする必要がある場合、同じTencent Cloudアカウントを使用して、ソースクラスタのリージョンでデータベースバージョンがMySQL 8.0のクラスタを新しく作成できます。その後、DTSを通じてソースクラスタのデータを新しいクラスタへ同期します。最後に、データに誤りがないことを確認した後、ソースクラスタを削除し、業務を新しいクラスタに切り替えます。これにより、データベースのバージョンアップグレードを実現します。
操作シナリオ
|
TDSQL-C for MySQL → TDSQL-C for MySQL | TDSQL-C for MySQL MySQL 5.7 同一のTencent Cloudメインアカウント下でのデータベース間同期 | TDSQL-C for MySQL MySQL 8.0 |
注意事項
DTSはフルデータ同期を実行する際、一定のソースインスタンスのリソースを占有するため、ソースインスタンスの負荷上昇を引き起こし、データベース自体の負荷を増加させる可能性があります。データベースの設定が低い場合は、業務の低ピーク時間帯に実施することをおすすめします。
データ重複を避けるため、同期対象のテーブルに主キーまたはNOT NULLユニークキーが存在することを確認してください。
デフォルトではロックフリー方式を採用します。同期プロセス中、ソースデータベースにはグローバルロック(FTWRL)をかけず、主キーのないテーブルのみテーブルロックをかけ、その他にはロックをかけません。
データ同期時、DTSは同期タスクを実行するアカウントを使用して、ソースデータベースにシステムライブラリ__tencentdb__を書き込み、同期タスクプロセス中のデータ比較情報を記録します。
後続のデータ比較問題のトラブルシューティングが可能であることを保証するため、同期タスク終了後もソースデータベース内の__tencentdb__は削除されません。
__tencentdb__システムライブラリの占有スペースは非常に小さく、ソースデータベースのストレージスペースの1000分の1から10000分の1程度です(例:ソースデータベースが50GBの場合、__tencentdb__システムライブラリは約5MB-50MB)。また、シングルスレッドの接続待機メカニズムを採用しているため、ソースデータベースのパフォーマンスにほとんど影響を与えず、リソースを占有することもありません。
ソースデータベースに対して以下の権限が必要です:
GRANT RELOAD,LOCK TABLES,REPLICATION CLIENT,REPLICATION SLAVE,SHOW VIEW,PROCESS,SELECT ON *.* TO 'アカウント'@'%' IDENTIFIED BY 'パスワード';
GRANT ALL PRIVILEGES ON `__tencentdb__`.* TO 'アカウント'@'%';
FLUSH PRIVILEGES;
ターゲットデータベースに対して以下の権限が必要です:ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE USER, CREATE VIEW, DELETE, DROP, EVENT, EXECUTE, INDEX, INSERT, LOCK TABLES, PROCESS, REFERENCES, RELOAD, SELECT, SHOW DATABASES, SHOW VIEW, TRIGGER, UPDATE。
適用上の制限
ベーステーブル、ビュー、ストアドプロシージャ、および関数の同期のみをサポートしています。
ビュー、ストアドプロシージャ、および関数を同期する際、DTSはソースデータベース内のDEFINERに対応するuser1([DEFINER = user1])と同期アカウントuser2が一致するかどうかを確認します。一致しない場合、同期後DTSはターゲットデータベース内のuser1のSQL SECURITY属性を変更し、DEFINERからINVOKER([INVOKER = user1])に変換します。同時にターゲットデータベース内のDEFINERを同期アカウントuser2([DEFINER = 同期アカウントuser2])に設定します。ソースデータベースのビュー定義が過度に複雑な場合、タスクが失敗する可能性があります。
ソース側が非GTIDインスタンスの場合、DTSはソース側のHA切り替えをサポートしていません。ソースインスタンスで切り替えが発生した場合、DTSの増分同期が中断する恐れがあります。
サポートされるデータベースエンジンはInnoDB、MyISAM、TokuDBの3種類のみです。これら以外のエンジンを使用するテーブルはデフォルトでスキップされ、同期されません。なお、ソースデータベースに圧縮モードのTokuDBエンジンデータが存在する場合、ターゲットデータベースが圧縮モードの同期をサポートしている必要があります。サポートされていない場合、タスクはエラーを報告します。
相互に関連するデータオブジェクトは同時に同期する必要があります。そうしないと同期エラーが発生します。一般的な関連関係には、ビューがテーブルを参照する場合、ビューが別のビューを参照する場合、主キーと外部キーで関連付けられたテーブルなどがあります。
増分同期プロセス中に、ソースデータベースでSTATEMENT形式のBinlogステートメントが生成された場合、同期が失敗する可能性があります。
ソースデータベースのBinlogにおけるGTIDに空白が存在する場合、同期タスクのパフォーマンスに影響を与え、タスクが失敗する可能性があります。
DDL文とDML文が同一トランザクション内に混在するシナリオはサポートしていません。このような状況に遭遇した場合、タスクはエラーを報告します。
Geometry関連のデータタイプはサポートしていません。このタイプのデータに遭遇した場合、タスクはエラーを報告します。
ALTER VIEW文はサポートしておらず、この文に遭遇した場合、タスクはスキップし、同期しません。
操作制限
同期プロセス中は以下の操作を行わないでください。そうしないと同期タスクが失敗する恐れがあります。
ソースデータベースおよびターゲットデータベースのユーザー情報(ユーザー名、パスワード、権限を含む)とポート番号を変更または削除しないでください。
ソースデータベースにBinlogフォーマットがSTATEMENTのデータを書き込まないでください。
ソースデータベースでBinlogのクリア操作を実行しないでください。
増分同期フェーズでは、システムデータベーステーブル__tencentdb__を削除しないでください。
サポートされる同期SQL操作
|
DML | INSERT、UPDATE、DELETE |
DDL | CREATE DATABASE、DROP DATABASE、ALTER DATABASE、CREATE TABLE、ALTER TABLE、DROP TABLE、TRUNCATE TABLE、RENAME TABLE、CREATE VIEW、DROP VIEW、CREATE INDEX、DROP INDEX |
説明:
CREATE TABLE テーブル名 AS SELECT 文は現在サポートしていません。
環境要件
|
ソースデータベースの要件 | ソースデータベースとターゲットデータベースのネットワークは接続可能です。 インスタンスパラメータの要件: ソースデータベーステーブルのrow_formatはFIXEDに設定できません。 Binlogパラメータの要件: ソース側のbinlog_format変数はROWに設定する必要があります。 ソース側のbinlog_row_image変数はFULLに設定する必要があります。 do_db、ignore_dbは設定できません。 ソースデータベースのBinlogログは少なくとも3日以上保持することを推奨します。保持期間がこれより短い場合、タスクの一時停止/中断時間がBinlogログ保持期間を超える可能性があり、タスクの再開ができず失敗する原因となります。 外部キー依存: 外部キー依存はNO ACTION、RESTRICTの2種類のみ設定可能です。 一部のデータベーステーブルの同期を行う場合、外部キー依存関係のあるテーブルはすべて含まれている必要があります。 環境変数 innodb_stats_on_metadata は OFF に設定する必要があります。 |
ターゲットデータベースの要件: | ターゲットデータベースのバージョンはソースデータベースのバージョン以上である必要があります。 ターゲットデータベースには十分なストレージスペースが必要です。初期化タイプとして「フルデータ初期化」を選択する場合、ターゲットデータベースのスペースはソースデータベースの同期対象テーブルスペースの1.2倍以上である必要があります。 ターゲットデータベースには、ソースデータベースと同名のテーブル、ビューなどの同期オブジェクトが存在してはいけません。 ターゲットデータベースのmax_allowed_packetパラメータ設定値は4M以上である必要があります。 |
ステップ1:同期タスクの作成
|
サービスタイプ | データ同期を選択する |
作成モード | 新規タスクの作成を選択する |
課金モード | 年/月単位サブスクリプションと従量課金をサポートしています。 |
ソースインスタンスタイプ | TDSQL-C MySQLを選択します。購入後は変更できません。 |
ソースインスタンスリージョン | ソースインスタンスのリージョンを選択します。購入後は変更できません。 |
ターゲットインスタンスタイプ | TDSQL-C MySQLを選択します。購入後は変更できません。 |
ターゲットインスタンスリージョン | 目的インスタンスのリージョンを選択します。購入後は変更できません。 |
仕様 | 業務ニーズに応じて仕様を選択してください。仕様が高いほど性能が優れます。詳細は課金概要をご参照ください。 |
2. 購入完了後、データ同期リストに戻ると、作成したばかりのデータ同期タスクが表示されます。作成したばかりの同期タスクは設定が必要です。 3. データ同期リストで、操作列の設定をクリックすると、同期タスク設定ページに進みます。
4. 同期タスク設定ページで、ソースインスタンス、アカウントとパスワードを設定し、ターゲットインスタンス、アカウントとパスワードを設定し、接続テストを実行した後、次へをクリックします。
|
タスク設定 | タスク名称 | DTSは自動的にタスク名称を生成し、ユーザーは実情に応じて設定できます。 |
| 実行モード | 即時実行とスケジュール実行の2つのモードをサポートします。 |
| 自動再試行 | 設定後、移行タスクがネットワーク異常などによる一時的な中断が発生した場合、DTSは設定した時間範囲内で自動的に再試行およびタスクを復旧します。ユーザーが手動で操作する必要はありません。
設定可能な時間範囲は5分~720分です。 |
ソースの設定 | ソースインスタンスタイプ | 購入時に選択したソースインスタンスタイプは変更できません。 |
| ソースインスタンスリージョン | 購入時に選択したソースインスタンスのリージョンは変更できません。 |
| アクセスタイプ | クラウドデータベースを選択します。 |
| インスタンスID | ソースインスタンスID。 |
| アカウント | ソースインスタンスのアカウント。アカウント権限は要件を満たす必要があります。 |
| パスワード | ソースインスタンスのアカウントのパスワード。 |
ターゲットデータベース設定 | ターゲットインスタンスタイプ | 購入時に選択したターゲットインスタンスタイプは変更できません。 |
| ターゲットインスタンスリージョン | 購入時に選択したターゲットインスタンスリージョンは変更できません。 |
| アクセスタイプ | クラウドデータベースを選択します。 |
| インスタンスID | ターゲットインスタンスIDを選択する。 |
| アカウント | ターゲットインスタンスアカウントは、アカウント権限が要件を満たす必要があります。 |
| パスワード | ターゲットインスタンスアカウントのパスワード。 |
5. 同期オプションと同期オブジェクトページの設定で、データ初期化オプション、データ同期オプション、同期オブジェクトオプションを設定します。設定完了後、保存して次へをクリックします。
説明:
初期化タイプで全データ初期化のみを選択した場合、システムは対象データベースにテーブル構造が既に作成されているとみなし、テーブル構造の同期は行わず、ソースと対象データベースの同名テーブル有無もチェックしません。したがって、ユーザーが同時に既存の同名テーブルで事前チェックとエラー報告を選択しても、チェックとエラー報告機能は有効になりません。
ユーザーが同期プロセス中に特定のテーブルに対してrename操作を実行する場合(例:table Aをtable Bにリネーム)、同期オブジェクトではtable Aが属するデータベース全体(またはインスタンス全体)を選択する必要があります。table Aのみを選択すると、リネーム操作後にtable Bのデータは対象データベースに同期されません。
|
データ初期化オプション | 初期化タイプ | 構造初期化:同期タスク実行時には、まずソースインスタンスのテーブル構造を対象インスタンスに初期化します。 フルデータ初期化:同期タスク実行時には、まずソースインスタンスのデータを対象インスタンスに初期化します。フルデータ初期化のみを選択する場合、ユーザーは事前に対象データベースにテーブル構造を作成しておく必要があります。 デフォルトでは両方にチェックが入っています。実際の状況に応じてチェックを外すことができます。 |
| 既存同名テーブル | 事前チェックとエラー報告:同名テーブルが存在する場合はエラーを報告し、処理を中止します。 無視して続行:フルデータとインクリメンタルデータを対象インスタンスのテーブルに直接追加します。 |
データ同期オプション | 競合処理メカニズム | 競合エラー:同期時にテーブルの主キー競合が検出された場合、エラーを報告しデータ同期タスクを一時停止します。 競合無視:同期時にテーブルの主キー競合が検出された場合、対象データベースの主キーレコードを保持します。 競合上書き:同期時にテーブルの主キー競合が検出された場合、ソースデータベースの主キーレコードでターゲットデータベースの主キーレコードを上書きします。 |
| 同期操作タイプ | サポートされる操作:Insert、Update、Delete、DDL。「DDLカスタマイズ」にチェックを入れると、必要に応じて異なるDDL同期ポリシーを選択できます。詳細については、SQLフィルタリングポリシーの設定を参照してください。 |
同期オブジェクトオプション | 同期オブジェクト | 指定オブジェクトを選択し、基本テーブル、ビュー、ストアドプロシージャ、および関数をサポートします。 |
| 高度な移行オブジェクト | 高度な移行オブジェクトの同期は一回限りのアクションであり、タスク開始前にソースデータベースに存在していた高度なオブジェクトのみが同期されます。タスク開始後に新しく追加された高度なオブジェクトはターゲットデータベースに同期されません。 |
6. 検証タスクページで、検証が完了し、すべての検証項目が合格した後、タスクを開始をクリックします。
説明:
検証タスクが不合格となった場合、検証不合格の対処方法を参考に問題を修正した後、再度検証タスクを開始してください。 同期タスクはソースデータベースとターゲットデータベースのインスタンス負荷を増加させる可能性があります。業務の低ピーク時間帯に操作を実行してください。
同期タスク開始後、ソース側およびターゲット側のパスワードを変更しないでください。
ソース側でddl操作を行わないでください。
ネットワークの切断とソース側の切り替えを行わないでください。
失敗:検証項目のチェックに合格せず、タスクがブロックされたことを示します。問題を修正後、検証タスクを再実行する必要があります。
警告:検査項目のチェックが要求に完全に合致していないことを示します。タスクを続行できますが、業務に一定の影響があります。ユーザーはプロンプトに基づいて、警告項目を無視するか、問題を修正してから続行するかを自ら評価する必要があります。
7. データ同期タスクリストに戻り、タスクは実行中状態に入り始めます。
説明:
操作列のその他 > 終了を選択すると同期タスクを終了できます。データ同期が完了してからタスクを終了するようご確認ください。
8. (オプション)タスク名をクリックすると、タスク詳細ページに移動し、タスクの初期化状態と監視データを確認できます。
ステップ2、DMCを通じてデータを能動的に検証する
データ同期タスクの作成が成功すると、ソースクラスタから新クラスタへのデータ同期リンクは継続的に同期を行います。今後、業務をデータベースバージョン8.0のクラスタに接続する必要があるため、ソースデータベースへの増分データの書き込みを行わないでください。これにより、ソースデータベースと新データベースの検証が一致することを保証します。
2. クラスタリストでデータ同期を行うソースクラスタを検索してクリックし、そのクラスタ詳細の右上にあるログインをクリックします。
3. ポップアップでアカウントとパスワードを入力し、ソースクラスタのDMC管理ページにアクセスします。
5. クラスタリストでデータ同期を行うターゲットクラスタを検索してクリックし、そのクラスタ詳細の右上にあるログインをクリックします。
6. ポップアップでアカウントとパスワードを入力し、ターゲットクラスタのDMC管理ページにアクセスします。
7. DMC管理ページでソースクラスタとターゲットクラスタのデータベースやテーブルなどのデータを比較し、データがすべて同期完了していることを確認します。
ソースクラスタのDMC管理ページ
ターゲットデータベースのDMC管理ページ
ステップ三、業務の新クラスタへの切り替え
データ同期が完了し検証が一致した後、ソースクラスタが不要であることを確認したら、実際のアプリケーション側で業務接続を手動で新クラスタの接続アドレスに更新できます。その後、DTS側のデータ同期リストで該当データ同期タスクを終了し、最後にTDSQL-C for MySQLコンソールでソースクラスタを削除します。 同期タスクを終了する:
説明:
サービス終了前に、この同期サービスに業務依存がなくなったことをご確認ください。
既存の設定済み同期タスクは停止されます。
同期タスクは停止済み状態に設定されます。
年/月単位サブスクリプションのデータ同期タスクは、停止後も自動的に返金されません。返金が必要な場合は「破棄/返品」をクリックしてください。
ソースクラスタを削除する: