Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo fornisce considerazioni e linee guida per la configurazione dei parametri del server in Database di Azure per MySQL - Server flessibile.
Nota
Questo articolo contiene riferimenti al termine slave, che Microsoft non usa più. Quando il termine verrà rimosso dal software, verrà rimosso anche dall'articolo.
Che cosa sono i parametri del server?
Il motore MySQL fornisce molti parametri server (chiamati anche variabili) che è possibile usare per configurare e ottimizzare il comportamento del motore. È possibile impostare alcuni parametri in modo dinamico durante il runtime. Altri sono statici e richiedono un riavvio del server dopo averli impostati.
In Database di Azure per MySQL - Server flessibile è possibile modificare il valore di vari parametri del server MySQL usando Configurare parametri del server in Database di Azure per MySQL - Server flessibile tramite il portale di Azure e Configurare i parametri del server in Database di Azure per MySQL - Server flessibile tramite l'interfaccia della riga di comando di Azure per soddisfare le esigenze del carico di lavoro.
Elenco di parametri del server configurabili
È possibile gestire la configurazione di Database di Azure per MySQL - Server flessibile mediante i parametri del server. I parametri del server vengono configurati con i valori predefiniti e consigliati in fase di creazione del server. Il riquadro Parametri del server nel portale di Azure mostra sia i parametri modificabili che quelli non modificabili. I parametri del server non modificabili non sono disponibili.
L'elenco di parametri del server supportati è in continua crescita. È possibile usare il portale di Azure per visualizzare periodicamente l'elenco completo dei parametri del server e configurare i valori.
Se si modifica un parametro del server statico usando il portale, è necessario riavviare il server per rendere effettive le modifiche. Se si usano script di automazione (tramite strumenti come i modelli di Azure Resource Manager, Terraform o l'interfaccia della riga di comando di Azure), lo script deve avere un provisioning per riavviare il servizio per rendere effettive le impostazioni, anche se si modifica la configurazione come parte dell'esperienza di creazione.
Se si vuole modificare un parametro del server non modificabile per l'ambiente in uso, pubblicare un'idea tramite il feedback della community o votare se il feedback esiste già (il che può essere utile per definire la priorità).
Le sezioni seguenti descrivono i limiti dei parametri del server comunemente aggiornati. Il livello di calcolo e le dimensioni (vCore) del server determinano i limiti.
lower_case_table_names
Per MySQL versione 5.7, il valore predefinito di lower_case_table_names
è 1
in Database di Azure per MySQL - Server flessibile. Anche se è possibile modificare il valore supportato in 2
, il ripristino da 2
a 1
non è consentito. Per assistenza nella modifica del valore predefinito, creare un ticket di supporto.
Per MySQL versione 8.0+ è possibile configurare lower_case_table_names
solo quando si inizializza il server. Altre informazioni. La modifica dell'impostazione lower_case_table_names
dopo l'inizializzazione del server non è consentita.
I valori supportati per MySQL versione 8.0 sono 1
e 2
in Database di Azure per MySQL - Server flessibile. Il valore predefinito è 1
. Per assistenza nella modifica del valore predefinito durante la creazione del server, creare un ticket di supporto.
innodb_tmpdir
Si utilizza il parametro innodb_tmpdir in Database di Azure per MySQL - Server flessibile per definire la directory per i file di ordinamento temporanei creati durante le operazioni di ricompilazione di ALTER TABLE
online.
Il valore predefinito di innodb_tmpdir
è /mnt/temp
. Questo percorso corrisponde all'archiviazione temporanea (SSD) ed è disponibile in gibibyte (GiB) con ogni dimensione di calcolo del server. Questa posizione è ideale per le operazioni che non richiedono una grande quantità di spazio.
Se è necessario più spazio, è possibile impostare innodb_tmpdir
su /app/work/tmpdir
. Questa impostazione utilizza la capacità di archiviazione disponibile in Database di Azure per MySQL - Server flessibile. Questa impostazione può essere utile per operazioni di dimensioni maggiori che richiedono più spazio di archiviazione temporaneo.
Tenere presente che l'uso di /app/work/tmpdir
comporta prestazioni più lente rispetto al valore predefinito dell'archiviazione temporanea (SSD)/mnt/temp
. Effettuare la scelta in base ai requisiti specifici delle operazioni.
Le informazioni fornite per innodb_tmpdir
sono applicabili ai parametri innodb_temp_tablespaces_dir, tmpdir e slave_load_tmpdir dove:
- Il valore predefinito
/mnt/temp
è comune. - La directory alternativa
/app/work/tmpdir
è disponibile per la configurazione di un'archiviazione temporanea aumentata, con un compromesso nelle prestazioni in base a requisiti operativi specifici.
log_bin_trust_function_creators
In Database di Azure per MySQL - Server flessibile i log binari sono sempre abilitati (ovvero log_bin
è impostato su ON
). Il parametro log_bin_trust_function_creators
è impostato su ON
per impostazione predefinita nei server flessibili.
Il formato di registrazione binaria è sempre ROW
e le connessioni al server usano sempre la registrazione binaria basata su righe. Con la registrazione binaria basata su righe, i problemi di sicurezza non esistono e la registrazione binaria non può interrompersi, quindi è possibile consentire in modo sicuro che log_bin_trust_function_creators
rimanga ON
.
Se log_bin_trust_function_creators
è impostato su OFF
, se si tenta di creare trigger, è possibile che si verifichino errori simili a: "Non si dispone del privilegio SUPER e la registrazione binaria è abilitata (si potrebbe voler usare la variabile log_bin_trust_function_creators
meno sicura )".
innodb_buffer_pool_size
Per informazioni sul parametro innodb_buffer_pool_size
, vedere la documentazione di MySQL.
Le dimensioni della memoria fisica nella tabella seguente rappresentano la memoria ad accesso casuale (RAM) disponibile, espressa in gigabyte (GB), in Database di Azure per MySQL - Server flessibile.
Dimensioni di calcolo | vCore | Dimensioni della memoria fisica (GB) | Valore predefinito (byte) | Valore minimo (byte) | Valore massimo (byte) |
---|---|---|---|---|---|
Possibilità di burst | |||||
Standard_B1s | 1 | 1 | 134217728 | 33554432 | 268435456 |
Standard_B1ms | 1 | 2 | 536870912 | 134217728 | 1073741824 |
Standard_B2s | 2 | 4 | 2147483648 | 134217728 | 2147483648 |
Standard_B2ms | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_B4ms | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_B8ms | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_B12ms | 12 | 48 | 51539607552 | 134217728 | 32212254720 |
Standard_B16ms | 16 | 64 | 2147483648 | 134217728 | 51539607552 |
Standard_B20ms | 20 | 80 | 64424509440 | 134217728 | 64424509440 |
Utilizzo generico | |||||
Standard_D2ads_v5 | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_D2ds_v4 | 2 | 8 | 4294967296 | 134217728 | 5368709120 |
Standard_D4ads_v5 | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_D4ds_v4 | 4 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_D8ads_v5 | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_D8ds_v4 | 8 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_D16ads_v5 | 16 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_D16ds_v4 | 16 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_D32ads_v5 | 32 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_D32ds_v4 | 32 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_D48ads_v5 | 48 | 192 | 154618822656 | 134217728 | 154618822656 |
Standard_D48ds_v4 | 48 | 192 | 154618822656 | 134217728 | 154618822656 |
Standard_D64ads_v5 | 64 | 256 | 206158430208 | 134217728 | 206158430208 |
Standard_D64ds_v4 | 64 | 256 | 206158430208 | 134217728 | 206158430208 |
Business Critical | |||||
Standard_E2ds_v4 | 2 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_E2ads_v5, Standard_E2ds_v5 | 2 | 16 | 12884901888 | 134217728 | 12884901888 |
Standard_E4ds_v4 | 4 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_E4ads_v5, Standard_E4ds_v5 | 4 | 32 | 25769803776 | 134217728 | 25769803776 |
Standard_E8ds_v4 | 8 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_E8ads_v5, Standard_E8ds_v5 | 8 | 64 | 51539607552 | 134217728 | 51539607552 |
Standard_E16ds_v4 | 16 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_E16ads_v5, Standard_E16ds_v5 | 16 | 128 | 103079215104 | 134217728 | 103079215104 |
Standard_E20ds_v4 | 20 | 160 | 128849018880 | 134217728 | 128849018880 |
Standard_E20ads_v5, Standard_E20ds_v5 | 20 | 160 | 128849018880 | 134217728 | 128849018880 |
Standard_E32ds_v4 | 32 | 256 | 206158430208 | 134217728 | 206158430208 |
Standard_E32ads_v5, Standard_E32ds_v5 | 32 | 256 | 206158430208 | 134217728 | 206158430208 |
Standard_E48ds_v4 | 48 | 384 | 309237645312 | 134217728 | 309237645312 |
Standard_E48ads_v5, Standard_E48ds_v5 | 48 | 384 | 309237645312 | 134217728 | 309237645312 |
Standard_E64ds_v4 | 64 | 504 | 405874409472 | 134217728 | 405874409472 |
Standard_E64ads_v5 , Standard_E64ds_v5 | 64 | 512 | 412316860416 | 134217728 | 412316860416 |
Standard_E80ids_v4 | 80 | 504 | 405874409472 | 134217728 | 405874409472 |
Standard_E96ds_v5 | 96 | 672 | 541165879296 | 134217728 | 541165879296 |
innodb_file_per_table
MySQL archivia la tabella InnoDB in spazi di tabella diversi in base alla configurazione specificata durante la creazione della tabella. Lo spazio di tabella del sistema è l'area di archiviazione per il dizionario dei dati InnoDB. Uno spazio di tabella di un file per tabella contiene dati e indici per una sola tabella InnoDB e viene archiviato nel file system del file di dati in uso. Il parametro del server innodb_file_per_table controlla questo comportamento.
Impostando innodb_file_per_table
su OFF
InnoDB crea tabelle nello spazio di tabella del sistema. Altrimenti, InnoDB crea tabelle in spazi di tabella di un file per tabella.
Database di Azure per MySQL - Server flessibile supporta al massimo 8 terabyte (TB) in un unico file di dati. Se le dimensioni del database sono maggiori di 8 TB, è necessario creare la tabella nello spazio di tabella innodb_file_per_table
. Se si dispone di una singola tabella di dimensioni superiori a 8 TB, è necessario usare la tabella di partizione.
innodb_log_file_size
Il valore di innodb_log_file_size è la dimensione in byte di ogni file di log in un gruppo di log. Le dimensioni combinate dei file di log (innodb_log_file_size * innodb_log_files_in_group) non possono superare un valore massimo leggermente inferiore a 512 GB.
Una dimensione del file di log più grande è migliore per le prestazioni, ma ha lo svantaggio che il tempo di ripristino dopo un arresto anomalo è elevato. È necessario bilanciare il tempo di ripristino, nel raro caso di un arresto anomalo del sistema rispetto alla massima velocità effettiva durante le operazioni di picco. Una dimensione del file di log più grande può comportare tempi di riavvio più lunghi.
È possibile configurare innodb_log_size
su 256 megabyte (MB), 512 MB, 1 GB o 2 GB per Database di Azure per MySQL - Server flessibile. Il parametro è statico e richiede un riavvio.
Nota
Se il parametro innodb_log_file_size
è stato modificato dal valore predefinito, verificare se il valore di show global status like 'innodb_buffer_pool_pages_dirty'
rimane 0
per 30 secondi per evitare il ritardo del riavvio.
connessioni_massime
Le dimensioni della memoria del server determinano il valore di max_connections
. Le dimensioni della memoria fisica nella tabella seguente rappresentano la RAM disponibile, espressa in gigabyte, in Database di Azure per MySQL - Server flessibile.
Dimensioni di calcolo | vCore | Dimensioni della memoria fisica (GB) | Valore predefinito | Valore minimo | Valore massimo |
---|---|---|---|---|---|
Possibilità di burst | |||||
Standard_B1s | 1 | 1 | 85 | 10 | 171 |
Standard_B1ms | 1 | 2 | 171 | 10 | 341 |
Standard_B2s | 2 | 4 | 341 | 10 | 683 |
Standard_B2ms | 2 | 4 | 683 | 10 | 1365 |
Standard_B4ms | 4 | 16 | 1365 | 10 | 2731 |
Standard_B8ms | 8 | 32 | 2731 | 10 | 5461 |
Standard_B12ms | 12 | 48 | 4097 | 10 | 8193 |
Standard_B16ms | 16 | 64 | 5461 | 10 | 10923 |
Standard_B20ms | 20 | 80 | 6827 | 10 | 13653 |
Utilizzo generico | |||||
Standard_D2ads_v5 | 2 | 8 | 683 | 10 | 1365 |
Standard_D2ds_v4 | 2 | 8 | 683 | 10 | 1365 |
Standard_D4ads_v5 | 4 | 16 | 1365 | 10 | 2731 |
Standard_D4ds_v4 | 4 | 16 | 1365 | 10 | 2731 |
Standard_D8ads_v5 | 8 | 32 | 2731 | 10 | 5461 |
Standard_D8ds_v4 | 8 | 32 | 2731 | 10 | 5461 |
Standard_D16ads_v5 | 16 | 64 | 5461 | 10 | 10923 |
Standard_D16ds_v4 | 16 | 64 | 5461 | 10 | 10923 |
Standard_D32ads_v5 | 32 | 128 | 10923 | 10 | 21845 |
Standard_D32ds_v4 | 32 | 128 | 10923 | 10 | 21845 |
Standard_D48ads_v5 | 48 | 192 | 16384 | 10 | 32768 |
Standard_D48ds_v4 | 48 | 192 | 16384 | 10 | 32768 |
Standard_D64ads_v5 | 64 | 256 | 21845 | 10 | 43691 |
Standard_D64ds_v4 | 64 | 256 | 21845 | 10 | 43691 |
Business Critical | |||||
Standard_E2ds_v4 | 2 | 16 | 1365 | 10 | 2731 |
Standard_E2ads_v5, Standard_E2ds_v5 | 2 | 16 | 1365 | 10 | 2731 |
Standard_E4ds_v4 | 4 | 32 | 2731 | 10 | 5461 |
Standard_E4ads_v5, Standard_E4ds_v5 | 4 | 32 | 2731 | 10 | 5461 |
Standard_E8ds_v4 | 8 | 64 | 5461 | 10 | 10923 |
Standard_E8ads_v5, Standard_E8ds_v5 | 8 | 64 | 5461 | 10 | 10923 |
Standard_E16ds_v4 | 16 | 128 | 10923 | 10 | 21845 |
Standard_E16ads_v5, Standard_E16ds_v5 | 16 | 128 | 10923 | 10 | 21845 |
Standard_E20ds_v4 | 20 | 160 | 13653 | 10 | 27306 |
Standard_E20ads_v5, Standard_E20ds_v5 | 20 | 160 | 13653 | 10 | 27306 |
Standard_E32ds_v4 | 32 | 256 | 21845 | 10 | 43691 |
Standard_E32ads_v5, Standard_E32ds_v5 | 32 | 256 | 21845 | 10 | 43691 |
Standard_E48ds_v4 | 48 | 384 | 32768 | 10 | 65536 |
Standard_E48ads_v5, Standard_E48ds_v5 | 48 | 384 | 32768 | 10 | 65536 |
Standard_E64ds_v4 | 64 | 504 | 43008 | 10 | 86016 |
Standard_E64ads_v5, Standard_E64ds_v5 | 64 | 512 | 43691 | 10 | 87383 |
Standard_E80ids_v4 | 80 | 504 | 43008 | 10 | 86016 |
Standard_E96ds_v5 | 96 | 672 | 50000 | 10 | 100000 |
Quando le connessioni superano il limite, è possibile che venga visualizzato l'errore seguente: "ERRORE 1040 (08004): Troppe connessioni".
La creazione di nuove connessioni client a MySQL richiede tempo. Una volta stabilite, queste connessioni occupano risorse di database, anche quando sono inattive. La maggior parte delle applicazioni richiede molte connessioni di breve durata, che generano questa situazione. Di conseguenza sarà disponibile un minor numero di risorse per il carico di lavoro effettivo e le prestazioni saranno ridotte.
Un pool di connessioni che riduce le connessioni inattive e riutilizza le connessioni esistenti consente di evitare tale problema. Per un'esperienza ottimale, è consigliabile usare un pool di connessioni come ProxySQL per gestire in modo efficiente le connessioni. Per informazioni sulla configurazione di ProxySQL, vedere questo post di blog.
Nota
ProxySQL è uno strumento della community open source. Microsoft lo supporta nel modo migliore. Per ottenere supporto per la produzione con indicazioni autorevoli, contattare l'Assistenza clienti del prodotto ProxySQL.
innodb_strict_mode
Se viene visualizzato un errore simile a "Dimensioni della riga troppo grandi (> 8126)," potrebbe essere necessario disattivare il parametro del server innodb_strict_mode
. Questo parametro non può essere modificato globalmente a livello di server perché se le dimensioni dei dati delle righe sono maggiori di 8K, i dati vengono troncati senza errori. Questo troncamento può causare una potenziale perdita di dati. È consigliabile modificare lo schema in modo da adattare il limite di dimensioni della pagina.
È possibile impostare questo parametro a livello di sessione usando init_connect
. Per altre informazioni, vedere Impostazione di parametri server non modificabili.
Nota
Se si dispone di un server di replica in lettura, l'impostazione di innodb_strict_mode
su OFF
a livello di sessione in un server di origine interromperà la replica. È consigliabile mantenere il parametro impostato su ON
se sono presenti repliche in lettura.
fuso orario
Durante la distribuzione iniziale, un'istanza di Database di Azure per MySQL - Server flessibile include tabelle di sistema per le informazioni sul fuso orario, ma queste non vengono popolate. È possibile popolare le tabelle di fuso orario chiamando la stored procedure mysql.az_load_timezone
da uno strumento come la riga di comando di MySQL o MySQL Workbench. È anche possibile chiamare la stored procedure e impostare i fusi orari globali o a livello di sessione usando il portale di Azure o l'interfaccia della riga di comando di Azure.
binlog_expire_logs_seconds
In Database di Azure per MySQL - Server flessibile, il parametro binlog_expire_logs_seconds
specifica il numero di secondi di attesa del servizio prima di eliminare il file di log binario.
Il log binario contiene eventi che descrivono le modifiche del database, ad esempio le operazioni di creazione di tabelle o le modifiche apportate ai dati della tabella. Contiene anche eventi per le istruzioni che potenzialmente avrebbero potuto apportare modifiche. Il log binario viene usato principalmente per due scopi, le operazioni di replica e di ripristino dei dati.
In genere, i log binari vengono eliminati non appena l'handle è libero dal servizio, dal backup o dal set di repliche. Se sono presenti più repliche, i log binari attendono che la replica più lenta legga le modifiche prima di essere eliminate.
Se si desidera rendere persistenti i log binari per una durata più lunga, è possibile configurare il parametro binlog_expire_logs_seconds
. Se binlog_expire_logs_seconds
è impostato sul valore predefinito di 0
, un log binario viene eliminato non appena l'handle viene liberato. Se il valore di binlog_expire_logs_seconds
è maggiore di 0
, il log binario viene eliminato dopo il numero di secondi configurato.
Database di Azure per MySQL - Server flessibile gestisce internamente funzionalità gestite come il backup e l'eliminazione delle repliche in lettura dei file binari. Quando si esegue la replica dei dati in Database di Azure per MySQL - Server flessibile, questo parametro deve essere impostato in primario per evitare di eliminare i log binari prima che la replica legga dalle modifiche nel primario. Se si imposta binlog_expire_logs_seconds
su un valore superiore, i log binari non verranno eliminati abbastanza presto. Questo ritardo può causare un aumento della fatturazione dell'archiviazione.
pianificatore di eventi
In Database di Azure per MySQL - Server flessibile, il parametro del server event_scheduler
gestisce la creazione, la pianificazione e l'esecuzione di eventi. Ciò significa, che il parametro gestisce le attività eseguite in base a una pianificazione da un thread speciale dell'Utilità di pianificazione eventi MySQL. Quando il parametro event_scheduler
è impostato su ON
, il thread dell'Utilità di pianificazione eventi viene elencato come processo daemon nell'output di SHOW PROCESSLIST
.
Per i server MySQL versione 5.7, il parametro del server event_scheduler
viene automaticamente disattivato quando viene avviato il backup e il parametro del server event_scheduler
viene riattivato dopo il completamento del backup. In MySQL versione 8.0 per Database di Azure per MySQL - Server flessibile, il event_scheduler rimane invariato durante i backup. Per garantire operazioni più fluide, è consigliabile aggiornare i server MySQL 5.7 alla versione 8.0 usando un aggiornamento della versione principale.
È possibile creare e pianificare eventi usando la sintassi SQL seguente:
CREATE EVENT <event name>
ON SCHEDULE EVERY _ MINUTE / HOUR / DAY
STARTS TIMESTAMP / CURRENT_TIMESTAMP
ENDS TIMESTAMP / CURRENT_TIMESTAMP + INTERVAL 1 MINUTE / HOUR / DAY
COMMENT '<comment>'
DO
<your statement>;
Per altre informazioni sulla creazione di un evento, vedere la documentazione seguente sull'Utilità di pianificazione eventi nel manuale di riferimento di MySQL:
- Uso dell'Utilità di pianificazione eventi in MySQL 5.7
- Uso dell'Utilità di pianificazione eventi in MySQL 8.0
Configurare il parametro del server event_scheduler
Lo scenario seguente illustra un modo per usare il parametro event_scheduler
in Database di Azure per MySQL - Server flessibile.
Per illustrare lo scenario, si consideri l'esempio seguente di una tabella semplice:
mysql> describe tab1;
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
| +-----------+-------------+------+-----+---------+----------------+ |
| id | int(11) | NO | PRI | NULL | auto_increment |
| CreatedAt | timestamp | YES | | NULL | |
| CreatedBy | varchar(16) | YES | | NULL | |
| +-----------+-------------+------+-----+---------+----------------+ |
| 3 rows in set (0.23 sec) |
| ``` |
| To configure the `event_scheduler` server parameter in Azure Database for MySQL - Flexible Server, perform the following steps: |
1. In the Azure portal, go to your Azure Database for MySQL - Flexible Server instance. Under **Settings**, select **Server parameters**.
1. On the **Server parameters** pane, search for `event_scheduler`. In the **VALUE** dropdown list, select **ON**, and then select **Save**.
> [!NOTE]
> Deployment of the dynamic configuration change to the server parameter doesn't require a restart.
1. To create an event, connect to the Azure Database for MySQL - Flexible Server instance and run the following SQL command:
```sql
CREATE EVENT test_event_01
ON SCHEDULE EVERY 1 MINUTE
STARTS CURRENT_TIMESTAMP
ENDS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
COMMENT 'Inserting record into the table tab1 with current timestamp'
DO
INSERT INTO tab1(id,createdAt,createdBy)
VALUES('',NOW(),CURRENT_USER());
```
1. To view the Event Scheduler details, run the following SQL statement:
```sql
SHOW EVENTS;
```
The following output appears:
```sql
mysql> show events;
+-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+
| Db | Name | Definer | Time zone | Type | Execute at | Interval value | Interval field | Starts | Ends | Status | Originator | character_set_client | collation_connection | Database Collation |
| +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ |
| db1 | test_event_01 | azureuser@% | SYSTEM | RECURRING | NULL | 1 | MINUTE | 2023-04-05 14:47:04 | 2023-04-05 15:47:04 | ENABLED | 3221153808 | latin1 | latin1_swedish_ci | latin1_swedish_ci |
| +-----+---------------+-------------+-----------+-----------+------------+----------------+----------------+---------------------+---------------------+---------+------------+----------------------+----------------------+--------------------+ |
| 1 row in set (0.23 sec) |
| ``` |
1. After a few minutes, query the rows from the table to begin viewing the rows inserted every minute according to the `event_scheduler` parameter that you configured:
```azurecli
mysql> select * from tab1;
+----+---------------------+-------------+
| id | CreatedAt | CreatedBy |
| +----+---------------------+-------------+ |
| 1 | 2023-04-05 14:47:04 | azureuser@% |
| 2 | 2023-04-05 14:48:04 | azureuser@% |
| 3 | 2023-04-05 14:49:04 | azureuser@% |
| 4 | 2023-04-05 14:50:04 | azureuser@% |
| +----+---------------------+-------------+ |
| 4 rows in set (0.23 sec) |
| ``` |
| 1. After an hour, run a `select` statement on the table to view the complete result of the values inserted into table every minute for an hour (as `event_scheduler` is configured in this case): |
```azurecli
mysql> select * from tab1;
+----+---------------------+-------------+
| id | CreatedAt | CreatedBy |
| +----+---------------------+-------------+ |
| 1 | 2023-04-05 14:47:04 | azureuser@% |
| 2 | 2023-04-05 14:48:04 | azureuser@% |
| 3 | 2023-04-05 14:49:04 | azureuser@% |
| 4 | 2023-04-05 14:50:04 | azureuser@% |
| 5 | 2023-04-05 14:51:04 | azureuser@% |
| 6 | 2023-04-05 14:52:04 | azureuser@% |
| ..< 50 lines trimmed to compact output >.. |
| 56 | 2023-04-05 15:42:04 | azureuser@% |
| 57 | 2023-04-05 15:43:04 | azureuser@% |
| 58 | 2023-04-05 15:44:04 | azureuser@% |
| 59 | 2023-04-05 15:45:04 | azureuser@% |
| 60 | 2023-04-05 15:46:04 | azureuser@% |
| 61 | 2023-04-05 15:47:04 | azureuser@% |
| +----+---------------------+-------------+ |
| 61 rows in set (0.23 sec) |
| ``` |
#### Other scenarios
You can set up an event based on the requirements of your specific scenario. A few examples of scheduling SQL statements to run at various time intervals follow.
To run a SQL statement now and repeat one time per day with no end:
```sql
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS (TIMESTAMP(CURRENT_DATE) + INTERVAL 1 DAY + INTERVAL 1 HOUR)
COMMENT 'Comment'
DO
<your statement>;
Per eseguire un'istruzione SQL ogni ora senza fine:
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 HOUR
COMMENT 'Comment'
DO
<your statement>;
Per eseguire un'istruzione SQL ogni giorno senza fine:
CREATE EVENT <event name>
ON SCHEDULE
EVERY 1 DAY
STARTS str_to_date( date_format(now(), '%Y%m%d 0200'), '%Y%m%d %H%i' ) + INTERVAL 1 DAY
COMMENT 'Comment'
DO
<your statement>;
Limitazioni
Per i server con disponibilità elevata configurata, quando si verifica il failover, è possibile che il parametro del server event_scheduler
sia impostato su OFF
. In questo caso, al termine del failover, configurare il parametro per impostare il valore su ON
.
innodb_ft_user_stopword_table
innodb_ft_user_stopword_table
è un parametro del server in MySQL che specifica il nome della tabella contenente parole non significative personalizzate per la Ricerca full-text in InnoDB. La tabella deve trovarsi nello stesso database della tabella indicizzata full-text e la prima colonna deve essere di tipo VARCHAR
. In Database di Azure per MySQL - Server flessibile, l'impostazione predefinita di sql_generate_invisible_primary_key=ON
fa sì che tutte le tabelle senza una chiave primaria esplicita includano automaticamente una chiave primaria invisibile. Questo comportamento è in conflitto con i requisiti per innodb_ft_user_stopword_table
, poiché la chiave primaria invisibile diventa la prima colonna della tabella, impedendone il funzionamento previsto durante la Ricerca full-text. Per risolvere questo problema, è necessario impostare sql_generate_invisible_primary_key=OFF
nella stessa sessione prima di creare la tabella delle parole non significative personalizzate. Ad esempio:
SET sql_generate_invisible_primary_key = OFF;
CREATE TABLE my_stopword_table (
stopword VARCHAR(50) NOT NULL
);
INSERT INTO my_stopword_table (stopword) VALUES ('and'), ('or'), ('the');
In questo modo, la tabella delle parole non significative soddisfa i requisiti di MySQL e consente il corretto funzionamento delle parole non significative personalizzate.
Parametri del server non modificabili
Il riquadro Parametri del server nel portale di Azure mostra sia i parametri server modificabili che quelli non modificabili. I parametri del server non modificabili non sono disponibili. È possibile configurare un parametro server non modificabile a livello di sessione usando init_connect
nel portale di Azure o nell'interfaccia della riga di comando di Azure.
Variabili di sistema di Azure mysql
azure_server_name
La variabile azure_server_name
fornisce il nome esatto del server per l'istanza "Server Flessibile" di Database di Azure per MySQL. Questa variabile è utile quando le applicazioni o gli script devono recuperare a livello di codice il nome host del server a cui sono connessi, senza basarsi su configurazioni esterne e possono essere recuperati eseguendo il comando seguente all'interno di MySQL.
mysql> SHOW GLOBAL VARIABLES LIKE 'azure_server_name';
+-------------------+---------+
| Variable_name | Value |
+-------------------+---------+
| azure_server_name | myflex |
+-------------------+---------+
Nota: azure_server_name
restituisce in modo coerente il nome del server originale usato per connettersi al servizio (ad esempio, myflex) sia per il server con disponibilità elevata abilitata sia per quello con disponibilità elevata disabilitata.
logical_server_name
La logical_server_name
variabile rappresenta il nome host dell'istanza in cui è in esecuzione il server flessibile di Database di Azure per MySQL. Questa variabile è utile per identificare l'host in cui è attualmente in esecuzione il servizio, agevolando la risoluzione dei problemi e il monitoraggio del failover. È possibile recuperare questa variabile eseguendo il comando seguente all'interno di MySQL.
mysql> SHOW GLOBAL VARIABLES LIKE 'logical_server_name';
+---------------------+--------------+
| Variable_name | Value |
+---------------------+--------------+
| logical_server_name | myflex |
+---------------------+--------------+
Nota: per un server abilitato per la disponibilità elevata, la logical_server_name
variabile riflette il nome host dell'istanza che funge da server primario. Per un server in cui la disponibilità elevata è disabilitata, il valore di logical_server_name
è uguale alla variabile azure_server_name
poiché è presente una sola istanza.