.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ğı, username
root
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.
WithReference yöntemi, ExampleProject
'de mysqldb
adlı 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ı
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
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 loggingDb
iç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
false
olduğ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
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.
.NET Aspire