Mysql

在 Master 上創建使用者不會在 Slave 上創建

  • August 31, 2022

我們在兩個極光集群之間設置了 mysql 複製。一切看起來都很好,並且複制執行良好。但是,幾個小時前我在主伺服器上創建了一個使用者,但我仍然在從伺服器上看不到它。我看到 Aurora 不包括mysql可能是問題的架構。但我不知道我是否應該自己創建使用者或什麼。

MySQL [(none)]> show replica status\G
*************************** 1. row ***************************
            Replica_IO_State: Waiting for master to send event
                 Source_Host: <rds-host>.rds.amazonaws.com
                 Source_User: user
                 Source_Port: port
               Connect_Retry: 60
             Source_Log_File: mysql-bin-changelog.111
         Read_Source_Log_Pos: 133216906
              Relay_Log_File: relaylog.000548
               Relay_Log_Pos: 133217133
       Relay_Source_Log_File: mysql-bin-changelog.111
          Replica_IO_Running: Yes
         Replica_SQL_Running: Yes
             Replicate_Do_DB: 
         Replicate_Ignore_DB: 
          Replicate_Do_Table: 
      Replicate_Ignore_Table: 
     Replicate_Wild_Do_Table: 
 Replicate_Wild_Ignore_Table: mysql.%
                  Last_Errno: 0
                  Last_Error: 
                Skip_Counter: 0
         Exec_Source_Log_Pos: 133216906
             Relay_Log_Space: 133217380
             Until_Condition: None
              Until_Log_File: 
               Until_Log_Pos: 0
          Source_SSL_Allowed: No
          Source_SSL_CA_File: 
          Source_SSL_CA_Path: 
             Source_SSL_Cert: 
           Source_SSL_Cipher: 
              Source_SSL_Key: 
       Seconds_Behind_Source: 0
Source_SSL_Verify_Server_Cert: No
               Last_IO_Errno: 0
               Last_IO_Error: 
              Last_SQL_Errno: 0
              Last_SQL_Error: 
 Replicate_Ignore_Server_Ids: 
            Source_Server_Id: 58182133
                 Source_UUID: cdc9f787-fa44-376f-bceb-a16cd8c88c38
            Source_Info_File: mysql.slave_master_info
                   SQL_Delay: 0
         SQL_Remaining_Delay: NULL
   Replica_SQL_Running_State: Slave has read all relay log; waiting for more updates
          Source_Retry_Count: 86400
                 Source_Bind: 
     Last_IO_Error_Timestamp: 
    Last_SQL_Error_Timestamp: 
              Source_SSL_Crl: 
          Source_SSL_Crlpath: 
          Retrieved_Gtid_Set: 
           Executed_Gtid_Set: 
               Auto_Position: 0
        Replicate_Rewrite_DB: 
                Channel_Name: 
          Source_TLS_Version: 
      Source_public_key_path: 
       Get_Source_public_key: 0
           Network_Namespace: 

在奴隸上:MySQL

$$ (none) $$> 從 mysql.user 中選擇使用者,其中 user=‘dms_u’;空集(0.00 秒) 在主人:

MySQL [(none)]> select user from mysql.user where user='dms_u';
+-------+
| user  |
+-------+
| dms_u |
+-------+
1 row in set (0.00 sec)

就我個人而言,我從不複製mysql架構,因為正如mysql 系統架構中特別提到的那樣:mysql 架構是系統架構。它包含儲存 MySQL 伺服器執行時所需資訊的表。

您看不到 slave 上的使用者,因為您已經發現 * 我看到 Aurora 不包括 mysql 模式,這可能是問題*。

但我不知道我應該自己創建使用者還是什麼

取決於,如果您需要從站上的使用者,則創建它,否則不需要。

我們無法回答您是否應該在副本上創建相同的使用者。我們不知道您將如何使用該使用者。

以下是在副本上創建使用者的幾個範例,但這不是我的想法,不是完整的列表:

  • 您的客戶使用該使用者dms_u,並且您希望他們能夠使用同一使用者在副本上執行查詢。
  • 您將使用使用者作為定義者來創建視圖或儲存的常式dms_u。如果您在源實例上執行此操作,但該使用者在副本實例上不存在,則 DDL 語句將導致錯誤並停止複制。

這些適用於您的情況嗎?我猜不出來。

引用自:https://dba.stackexchange.com/questions/316222