mysql复制中奇怪的慢性能

gz5pxeao  于 2021-06-21  发布在  Mysql
关注(0)|答案(0)|浏览(221)

我有mysql(mariadb 10.1.27)master,可以容纳1900个数据库。数据库总大小~100gb已用innodb引擎,innodb\文件\u per\表=1
我将为此服务器设置两个从属服务器(mariadb 10.1.27)。两个奴隶都有和主人一样的硬件。master是在午夜停止的,它是用tar从/var/lib/mysql备份的,这个tar在两个不同的服务器上传输和提取。
一个奴隶快速地站起,在约1小时内赶上了主人(延迟1天)。为了赶上进度,我得到了100%的cpu使用率(la 3-4)和磁盘活动日志(~20%wa)
第二个从机在复制性能方面有一些奇怪的问题。安装后,它赶上主人超过2天。而procees只完成了20%。当前显示从属状态:

show slave status\Gshow processlist;

***************************1. row***************************

               Slave_IO_State: Waiting for master to send event
                  Master_Host: XXXXXXXXXX
                  Master_User: XXXXXXXX
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysqld-bin.000572
          Read_Master_Log_Pos: 524619108
               Relay_Log_File: relay-bin.000004
                Relay_Log_Pos: 916671538
        Relay_Master_Log_File: mysqld-bin.000571
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB:
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table: apsc.%,billing.%,information_schema.%,performance_schema.%,horde.%,mysql.%,phpmyadmin_gmRJC4rn_tom.%,psa.%,roundcubemail.%,sitebuilder5.%
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 916671245
              Relay_Log_Space: 1598365917
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 24730
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 111
               Master_SSL_Crl:
           Master_SSL_Crlpath:
                   Using_Gtid: No
                  Gtid_IO_Pos:
      Replicate_Do_Domain_Ids:
  Replicate_Ignore_Domain_Ids:
                Parallel_Mode: conservative
1 row in set (0.00 sec)

cpu和磁盘上没有严重的活动(请参阅后面的顶部屏幕)

======
top - 03:36:36 up 114 days, 12:26,  9 users,  load average: 1.82, 1.86, 1.89
Tasks: 364 total,   1 running, 362 sleeping,   0 stopped,   1 zombie
Cpu(s):  1.5%us,  0.7%sy,  0.0%ni, 87.7%id, 4.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32993560k total, 32271192k used,   722368k free,   625464k buffers
Swap:  4194296k total,   229512k used,  3964784k free, 23100280k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
13809 mysql      1 -19 6819m 5.8g 7332 S 8.9 18.5 132:12.33 mysqld
======

如我所见,当前所有bin日志都是从主服务器传输到从服务器的,但是从服务器在将这些日志应用到dbs时性能很慢。
在慢速查询日志(2秒限制)中,我没有任何记录。
谷歌的问题没有帮助。已尝试:

skip-name-resolve

innodb_flush_log_at_trx_commit=0
innodb-flush-method=O_DIRECT

# move innodb logs to SSD

nnodb_log_group_home_dir=/var/lib/mysql_logs

安装程序多线程复制尝试(2和4个线程)失败,因为进程速度比当前状态慢得多。slave获得了越来越大的延迟(在show slave status中比master落后秒)
请告诉我什么是问题的根源,什么可以使复制更快。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题