
# MySQL数据同步对源数据库和目标数据库有什么影响
![](https://support.huaweicloud.com/drs_faq/public_sys-resources/note_3.0-zh-cn.png)
以下数据以MySQL2MySQL大规格实时同步任务为例，不同规格对数据库的连接数存在差异，仅供参考。
#### DRS对源数据库的压力及影响
- 全量（初始化）阶段，DRS需要从源库将所有存量数据查询一次。DRS查询使用简单SQL语句，对源库影响主要体现在IO上，查询速度也受限于源数据库IO相关的性能以及网络带宽。一般在网络无瓶颈的情况下，会对源数据库增加约50MB/s的查询压力，以及占用2\~4个CPU，在并发读取源数据库时，会占用大约6-10个session连接数，其中：
  - 有小于8个连接查询源数据库的一些系统表（如information_schema库下的表信息tables，视图信息views、列信息columns等）；
  
  - 有小于4个连接查询源数据库表数据分片的SQL，类似如下语句，其中select查询where后的条件只会有主键或者唯一键。
    ```
    select id from *** where id>12345544 and limit 10000,1;
    ```
    
  
  - 有小于4个连接查询数据的SQL，类似如下语句，其中select后为表所有的列名，where后的条件无数据过滤情况下只会有主键或者唯一键。
    ```
    select id,name,msg from *** where id>12345544 and id<=12445544;
    ```
    
  
  - 无主键表的锁表操作SQL，类似如下语句，锁表只是为了获取无主键表的一致性位点，锁表后获取一个连接就会解锁。
    ```
    flush table *** with read lock
    ```
    ```
    lock table *** read
    ```
    
   
- 增量阶段对源数据库CPU基本无压力，只有一个dump连接实时获取增量日志，产生Binlog日志生成速率等同的IO及带宽影响。
 
#### DRS对目标数据库的压力及影响
- 全量（初始化）阶段，DRS需要将源数据库结构、索引以及存量数据全部写入到目标数据库，顺序为先迁移结构，再迁移数据，最后迁移索引，不同过程不会并行，一般活跃总连接数小于8个，其中：
  - 有小于8个连接在批量创建结构。
  
  - 有小于8个连接在批量写数据，类似如下语句：
    ```
    insert into *** (id,name,msg) values (***);
    ```
    
  
  - 有小于8个连接在批量创建索引，类似如下语句：
    ```
    alter table *** add index ***;
    ```
    
   
- 增量阶段，DRS会把源数据库日志中的增量数据解析成SQL在目标数据库中执行，一般总连接数小于64个，其中：
  - DDL会单连接串行执行，执行DDL时，不会有其他DML执行。
  
  - DML最多会有64个连接（短连接，默认超时时间30秒），其中DML只是简单的insert、update、delete、replace语句。
   
![](https://support.huaweicloud.com/drs_faq/public_sys-resources/note_3.0-zh-cn.png)
如果需要评估对源数据库的影响，可选择创建测试任务，再通过限速功能或业务低峰期启动等来调整迁移策略。
