Aracılığıyla paylaş


.NET Aspire MySQL tümleştirmesi

Şunları içerir:Barındırma tümleştirmesi ve Client tümleştirme

MySQL, verileri yönetmek ve işlemek için Yapılandırılmış Sorgu Dili (SQL) kullanan açık kaynak bir İlişkisel Veritabanı Yönetim Sistemidir (RDBMS). Küçük projelerden büyük ölçekli kurumsal sistemlere kadar birçok farklı ortamda kullanılır ve buluta özel bir uygulamada mikro hizmetleri destekleyen verileri barındırmak popüler bir seçimdir. .NET Aspire MySQL veritabanı tümleştirmesi, mevcut MySQL veritabanlarına bağlanmanıza veya .NET'dan mysql kapsayıcı görüntüsüyeni örnekler oluşturmanıza olanak tanır.

Barındırma tümleştirmesi

MySQL barındırma tümleştirmesi, sunucuyu MySqlServerResource türü ve veritabanını MySqlDatabaseResource türü olarak modeller. Bu türlere ve API'lere erişmek için 📦AspireHosting.MySql NuGet paketini uygulama konağı projesine ekleyin.

dotnet add package Aspire.Hosting.MySql

Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.

MySQL sunucu kaynağı ve veritabanı kaynağı ekleme

Uygulama ana bilgisayar projenizde AddMySql çağırarak bir MySQL kaynak oluşturucu ekleyin ve döndürin. Döndürülen kaynak oluşturucunun çağrısını AddDatabase'e zincirleyerek bir MySQL veritabanı kaynağı ekleyin.

var builder = DistributedApplication.CreateBuilder(args);

var mysql = builder.AddMySql("mysql")
                   .WithLifetime(ContainerLifetime.Persistent);

var mysqldb = mysql.AddDatabase("mysqldb");

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(mysqldb)
                       .WaitFor(mysqldb);

// After adding all resources, run the app...

Not

SQL Server kapsayıcısı yavaş başlatıldığından, gereksiz yeniden başlatmaları önlemek için kalıcı yaşam süresi kullanmak daha uygundur. Daha fazla bilgi için bkz. kapsayıcı kaynak ömrü.

.NET .NET Aspire, önceki örnekte mysql görüntüsüyle gösterildiği gibi uygulama konağına bir kapsayıcı görüntüsü eklediğinde, yerel makinenizde yeni bir MySQL örneği oluşturur. Veritabanı eklemek için MySQL kaynak oluşturucunuza (mysql değişkeni) başvuru kullanılır. Veritabanına mysqldb adı verildikten sonra ExampleProject'e eklenir. MySQL kaynağı, usernameroot ve password yöntemi kullanılarak oluşturulan rastgele bir CreateDefaultPasswordParameter içeren varsayılan kimlik bilgilerini içerir.

Uygulama konağı çalıştırıldığında, parola uygulama ana bilgisayarının gizli dizi deposunda depolanır. Örneğin, Parameters bölümüne eklenir:

{
  "Parameters:mysql-password": "<THE_GENERATED_PASSWORD>"
}

Parametrenin adı mysql-password'dır, ancak gerçekte sadece kaynak adını -password ile bir sonek kullanarak biçimlendirmektir. Daha fazla bilgi için bkz. geliştirme aşamasında uygulama gizli dizilerinin güvenli depolanması ve parametreleriyle kaynağı ekleme.

WithReference yöntemi, ExampleProject'de mysqldbadlı bir bağlantıyı yapılandırıyor.

Bahşiş

Mevcut bir MySQL sunucusuna bağlanmak isterseniz bunun yerine AddConnectionString'ı arayın. Daha fazla bilgi için bkz. Var olan kaynaklara başvurma.

MySQL kaynağını bir veri birimiyle ekle.

SQL Server kaynağına veri birimi eklemek için WithDataVolume kaynağında SQL Server yöntemini çağırın:

var builder = DistributedApplication.CreateBuilder(args);

var mysql = builder.AddMySql("mysql")
                   .WithDataVolume();

var mysqldb = mysql.AddDatabase("mysqldb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(mysqldb)
       .WaitFor(mysqldb);

// After adding all resources, run the app...

Veri hacmi, MySQL sunucu verilerini kapsayıcısının yaşam döngüsü dışında kalıcı hale getirmek için kullanılır. Veri birimi, /var/lib/mysql kapsayıcısının SQL Server yoluna bağlanır ve name parametresi sağlanmazsa ad rastgele oluşturulur. Veri birimleri hakkında daha fazla bilgi edinmek vebağlamaları neden tercih edildiklerine ilişkin ayrıntılar için bkz. belgeler: Birimler.

Uyarı

Parola, veri biriminde depolanır. Veri hacmi kullanılırken ve parola değişirse, birimi silene kadar çalışmaz.

"MySQL kaynağını veri bağlama montajı ile ekleyin."

MySQL kaynağına veri bağlaması eklemek için WithDataBindMount yöntemini çağırın:

var builder = DistributedApplication.CreateBuilder(args);

var mysql = builder.AddMySql("mysql")
                   .WithDataBindMount(source: @"C:\MySql\Data");

var db = sql.AddDatabase("mysqldb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(mysqldb)
       .WaitFor(mysqldb);

// After adding all resources, run the app...

Önemli

Veri bağlama bağlamaları, daha iyi performans, taşınabilirlik ve güvenlik sunanbirimleriyle karşılaştırıldığında sınırlı işlevselliğe sahiptir ve bu da üretim ortamları için daha uygun olmasını sağlar. Ancak bağ klasörleri, geliştirme ve test için ideal olan, gerçek zamanlı değişikliklerin gerekli olduğu durumlarda konak sistemdeki dosyalara doğrudan erişim ve değişiklik imkanı sağlar.

Veri bağlamaları, kapsayıcı yeniden başlatıldığında MySQL verisinin kalıcı olması için konak makinenin dosya sistemine dayanır. Veri bağlaması, C:\MySql\Data kapsayıcısında konak makinedeki Windows /MySql/Data (veya Unixüzerinde MySQL) yoluna bağlanır. Veri bağlamaları hakkında daha fazla bilgi için Docker belgelerine bakın: Bağlantılarıbağlama.

Parametrelerle MySQL kaynağı ekleme

Açıkça bir root MySQL parolası sağlamak istediğinizde, bunu bir parametre olarak geçirebilirsiniz. Aşağıdaki alternatif örneği göz önünde bulundurun:

var password = builder.AddParameter("password", secret: true);

var mysql = builder.AddMySql("mysql", password)
                   .WithLifetime(ContainerLifetime.Persistent);

var mysqldb = mysql.AddDatabase("mysqldb");

var myService = builder.AddProject<Projects.ExampleProject>()
                       .WithReference(mysqldb)
                       .WaitFor(mysqldb);

Daha fazla bilgi için bkz. dış parametreleri.

PhpMyAdmin kaynağı ekleme

phpMyAdmin, MySQLiçin popüler bir web tabanlı yönetim aracıdır. Veritabanları, tablolar, görünümler ve dizinler gibi MySQL nesnelere göz atmak ve bunları değiştirmek için kullanabilirsiniz. .NET .NET Aspire çözümünüzde phpMyAdmin kullanmak için WithPhpMyAdmin yöntemini çağırın. Bu yöntem, phpMyAdmin'i barındıran çözüme yeni bir kapsayıcı kaynağı ekler ve bunu MySQL kapsayıcısına bağlar:

var builder = DistributedApplication.CreateBuilder(args);

var mysql = builder.AddMySql("mysql")
                   .WithPhpMyAdmin();

var db = sql.AddDatabase("mysqldb");

builder.AddProject<Projects.ExampleProject>()
       .WithReference(mysqldb)
       .WaitFor(mysqldb);

// After adding all resources, run the app...

Çözümü çalıştırdığınızda, .NET.NET Aspire panosu phpMyAdmin kaynaklarını bir uç noktayla görüntüler. PhpMyAdmin'i yeni bir tarayıcı sekmesinde görüntülemek için uç nokta bağlantısını seçin.

Barındırma tümleştirme durumu denetimleri

MySQL barındırma tümleştirmesi, MySQL kaynağı için otomatik olarak bir sistem durumu denetimi ekler. Sistem durumu denetimi, MySQL sunucusunun çalıştığını ve bu sunucuyla bağlantı kurulabileceğini doğrular.

Barındırma tümleştirmesi, 📦 AspNetCore.HealthChecks.MySql NuGet paketine dayanır.

Client tümleştirmesi

.NET Aspire MySQL veritabanı tümleştirmesine başlamak için, 📦Aspire.MySqlConnector NuGet paketini, MySQL istemcisini kullanan uygulamanın projesini içeren istemci projesine yükleyin. MySQL istemci tümleştirmesi, MySQL sunucusuyla etkileşime geçmek için kullanabileceğiniz bir MySqlConnector.MySqlDataSource örneği kaydeder.

dotnet add package Aspire.MySqlConnector

Daha fazla bilgi için bkz. dotnet add package veya .NET uygulamalarında paket bağımlılıklarını yönetme.

MySQL veri kaynağı ekleme

İstemci kullanan projenizin Program.cs dosyasında, bağımlılık enjeksiyonu kapsayıcısı aracılığıyla kullanım için bir MySqlDataSource kaydettirmek üzere AddMySqlDataSource uzantı yöntemini çağırın. Yöntem bir connectionName parametresi alır.

builder.AddMySqlDataSource(connectionName: "mysqldb");

Bahşiş

connectionName parametresi, uygulama ana bilgisayar projesine MySQL veritabanı kaynağı eklenirken kullanılan adla eşleşmelidir. Başka bir deyişle, AddDatabase çağrıldığında ve mysqldb olarak bir ad verildiğinde, AddMySqlDataSourceçağrılırken de aynı ad kullanılmalıdır. Daha fazla bilgi için bkz. MySQL sunucu kaynağı ve veritabanı kaynağı ekleme.

Daha sonra bağımlılık ekleme kullanarak MySqlConnector.MySqlDataSource örneğini alabilirsiniz. Örneğin, örnek bir hizmetten veri kaynağını almak için:

public class ExampleService(MySqlDataSource dataSource)
{
    // Use dataSource...
}

Bağımlılık ekleme hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme.

MySQL anahtarlı veri kaynağını ekle

Farklı bağlantı adlarına sahip birden çok MySqlDataSource örneğini kaydetmek istediğiniz durumlar olabilir. Anahtarlı MySQL veri kaynaklarını kaydetmek için AddKeyedMySqlDataSource yöntemini çağırın:

builder.AddKeyedMySqlDataSource(name: "mainDb");
builder.AddKeyedMySqlDataSource(name: "loggingDb");

Önemli

Anahtarlı hizmetler kullanılırken, MySQL kaynağınızın biri mainDb için ve biri loggingDbiçin iki isimlendirilmiş veritabanı yapılandırmanız beklenir.

Daha sonra bağımlılık ekleme kullanarak MySqlDatSource örneklerini alabilirsiniz. Örneğin, bağlantıyı örnek bir hizmetten almak için:

public class ExampleService(
    [FromKeyedServices("mainDb")] MySqlDataSource mainDbConnection,
    [FromKeyedServices("loggingDb")] MySqlDataSource loggingDbConnection)
{
    // Use connections...
}

Anahtarlı hizmetler hakkında daha fazla bilgi için bkz. .NET bağımlılık ekleme: Anahtarlı hizmetler.

Konfigürasyon

.NET Aspire MySQL veritabanı tümleştirmesi, projenizin gereksinimlerine ve kurallarına göre bağlantıyı yapılandırmak için birden çok seçenek sağlar.

Bağlantı dizesi kullanma

ConnectionStrings yapılandırma bölümünden bir bağlantı dizesi kullanırken, AddMySqlDataSource yöntemini çağırırken bağlantı dizesinin adını sağlayabilirsiniz:

builder.AddMySqlDataSource(connectionName: "mysql");

Ardından bağlantı dizesi ConnectionStrings yapılandırma bölümünden alınır:

{
  "ConnectionStrings": {
    "mysql": "Server=mysql;Database=mysqldb"
  }
}

Bu bağlantı dizesini biçimlendirme hakkında daha fazla bilgi için bkz. mySqlConnector: ConnectionString belgeleri.

Yapılandırma sağlayıcılarını kullanma

.NET Aspire MySQL veritabanı tümleştirmesi Microsoft.Extensions.Configurationdestekler. Yapılandırmadan MySqlConnectorSettings, Aspire:MySqlConnector anahtarı kullanılarak yüklenir. Aşağıdaki kod parçacığı, bazı seçenekleri yapılandıran bir appsettings.json dosyası örneğidir:

{
  "Aspire": {
    "MySqlConnector": {
      "ConnectionString": "YOUR_CONNECTIONSTRING",
      "DisableHealthChecks": true,
      "DisableTracing": true
    }
  }
}

MySQL entegrasyon JSON şeması için bkz. Aspire. MySqlConnector/ConfigurationSchema.json.

Satır içi temsilcileri kullanın

Ayrıca Action<MySqlConnectorSettings> temsilcisini kullanarak, seçeneklerin bazılarını veya tümünü satır içinde ayarlayabilirsiniz; örneğin, koddan sistem durumu denetimlerini devre dışı bırakmak için.

builder.AddMySqlDataSource(
    "mysql",
    static settings => settings.DisableHealthChecks  = true);

Client tümleştirme sağlık kontrolleri

Varsayılan olarak, .NET.NET Aspire entegrasyonlar, tüm hizmetler için sağlık kontrollerini etkinleştirir. Daha fazla bilgi için bkz. .NET.NET Aspire tümleştirmelere genel bakış.

.NET Aspire MySQL veritabanı tümleştirmesi:

  • MySqlConnectorSettings.DisableHealthChecks falseolduğunda sistem durumu denetimini ekler. Bu denetim, MySQL veritabanında bağlantı yapılıp komut çalıştırılabildiğini doğrular.
  • Uygulamanın trafiği kabul etmeye hazır olarak kabul edilmesi için tüm kayıtlı sistem durumu denetimlerinin geçmesi gerektiğini belirten /health HTTP uç noktasıyla tümleşir.

Gözlemlenebilirlik ve telemetri

tümleştirmeleri, bazen gözlemlenebilirlikolarak bilinen Günlük, İzleme ve Ölçüm yapılandırmalarını otomatik olarak ayarlar. Tümleştirme gözlemlenebilirliği ve telemetri hakkında daha fazla bilgi için bkz. tümleştirmelere genel bakış. Yedekleme hizmetine bağlı olarak, bazı tümleştirmeler bu özelliklerden yalnızca bazılarını destekleyemeyebilir. Örneğin, bazı entegrasyonlar günlüğe kaydetmeyi ve izlemeyi destekler, ancak ölçümleri desteklemez. Telemetri özellikleri, Yapılandırma bölümünde sunulan teknikler kullanılarak da devre dışı bırakılabilir.

Kayıt tutma

.NET Aspire MySQL tümleştirmesi aşağıdaki günlük kategorilerini kullanır:

  • MySqlConnector.ConnectionPool
  • MySqlConnector.MySqlBulkCopy
  • MySqlConnector.MySqlCommand
  • MySqlConnector.MySqlConnection
  • MySqlConnector.MySqlDataSource

İzleme

.NET Aspire MySQL entegrasyonu, OpenTelemetrykullanarak aşağıdaki izleme etkinliklerini yayar.

  • MySqlConnector

Ölçüm

.NET Aspire MySQL tümleştirmesi, OpenTelemetrykullanarak aşağıdaki ölçümleri yayar:

  • MySqlConnector
    • db.client.connections.create_time
    • db.client.connections.use_time
    • db.client.connections.wait_time
    • db.client.connections.idle.max
    • db.client.connections.idle.min
    • db.client.connections.max
    • db.client.connections.pending_requests
    • db.client.connections.timeouts
    • db.client.connections.usage

Ayrıca bkz.