Tüm Ürünler
Search
Belge Merkezi

ApsaraDB RDS:Migrate the data of a self-managed instance that runs MySQL 5.7 or MySQL 8.0 to an ApsaraDB RDS for MySQL instance

Son Güncelleme:Oct 10, 2026

Geçiş sırasında kendi yönetimindeki MySQL örneğinizin çevrimdışı kalmasına izin veriyorsanız bu yöntemi kullanın. Percona XtraBackup ile tam bir fiziksel yedekleme alın, bunu Object Storage Service (OSS) üzerine aktarın ve yeni bir RDS örneği oluşturmak için ApsaraDB RDS konsolu üzerinden içe aktarın.

Veritabanınızın çevrimdışı kalması mümkün değilse minimum kesinti süresiyle geçiş yapmak için Data Transmission Service (DTS) hizmetini kullanın.

Ön koşullar

Başlamadan önce aşağıdakilere sahip olduğunuzdan emin olun:

  • Geçiş gereksinimlerini karşılayan kendi yönetiminde bir MySQL örneği. Tam liste için Sınırlamalar bölümüne bakın.

  • Hedef RDS örneğinizle aynı bölgede bulunan bir OSS paketi. Paket oluşturmanız gerekirse Paket oluşturma konusuna bakın.

  • Kendi yönetimindeki MySQL örneğinin çalıştığı ana bilgisayarda Go ve Unzip yüklü olmalıdır.

Sınırlamalar

İlerlemeden önce aşağıdaki kısıtlamaları gözden geçirin:


Kategori


Kısıtlama


MySQL version


Kaynak, MySQL 5.7.32 veya öncesi ya da MySQL 8.0.18 veya öncesi bir sürümde çalışmalıdır. Kaynak ve hedef aynı MySQL sürümünde çalışmalıdır.


Yedekleme aracı


MySQL 5.7 için Percona XtraBackup 2.4 gerekir. MySQL 8.0 için Percona XtraBackup 8.0 gerekir.


Yedekleme kapsamı


Yalnızca tam yedekleme desteklenir. Farklı ve günlük yedekleme dosyaları desteklenmez. Yedekleme tamamlandıktan sonra oluşan artımlı veriler dahil edilmez.


XtraBackup seçenekleri

--tables, --tables-exclude, --tables-file, --databases ve --databases-file seçenekleri desteklenmez.


Yedek dosya biçimi


Dosya _QP.XB biçiminde olmalı veya TAR.GZ olarak sıkıştırılmış olmalıdır. Dosya adı özel karakterler içeremez.


OSS şifreleme


OSS paketini oluştururken Encryption Method seçeneğini None olarak ayarlayın. Şifrelenmiş paketler desteklenmez.


OSS bölgesi


OSS paketi, RDS örneğiyle aynı bölgede bulunmalıdır.


OSS dosya boyutu


CLI aracılığıyla parçalı yükleme yapılırken maksimum 16 TB.


Veri dizini

datadir dizini varsayılan depolama yolu olmalıdır. Doğrulamak için mysqladmin -u<username> -p<password> variables | grep datadir komutunu çalıştırın.


InnoDB yapılandırması

innodb_data_file_path parametresi varsayılan değer olan ibdata1 olarak ayarlanmalıdır.


Hedef


Veriler yalnızca yeni bir RDS örneğine geri yüklenebilir; mevcut bir örneğe geri yüklenemez. Hedef, standart SSD'li RDS Basic Edition üzerinde MySQL 5.7 veya MySQL 8.0 çalıştıran kullandıkça öde bir örnek olmalıdır.


Depolama


Hedef RDS örneği, kaynak verilerden daha fazla depolama alanına sahip olmalıdır.


Geçirilmez


Kullanıcı hesapları, özel işlevler, saklı yordamlar ve saat dilimi bilgileri geçirilmez. Bunları geçişten önce kaydedin ve geçişten sonra manuel olarak ekleyin.


GTID çoğaltma


Geçişten sonra artımlı verileri çoğaltmayı planlıyorsanız kaynak örnekte GTID tabanlı çoğaltmayı etkinleştirin ve gtid_mode ile enforce_gtid_consistency parametrelerini ON olarak ayarlayın.


AliyunRDSImportRole


ApsaraDB RDS'nin OSS'e erişmesine yetki verdikten sonra Resource Access Management (RAM) içinde AliyunRDSImportRole adlı bir RAM rolü oluşturulur. Bu rolü değiştirmeyin veya silmeyin.


Yedek saklama


Geçiş tamamlanana kadar yedek dosyasını OSS'ten silmeyin.

Geçirilmeyen nesneleri belirleme

Geçişten sonra yeniden oluşturmanız gereken saklı yordamları ve işlevleri listelemek için kaynak örneğinizde aşağıdaki sorguyu çalıştırın:

SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE
FROM information_schema.routines
WHERE ROUTINE_SCHEMA NOT IN ('sys', 'information_schema', 'performance_schema', 'mysql');

Ayrıca devam etmeden önce kullanıcı hesaplarını ve saat dilimi ayarlarını kaydedin.

Nasıl çalışır

  1. Kendi yönetimindeki MySQL örneğinin çalıştığı ana bilgisayara Percona XtraBackup yükleyin.

  2. Uyumluluk denetimi sağlayan backup_helper ve OSS'e yükleme yapan oss_stream araçlarını içeren MySQL Backup Helper'ı yükleyin.

  3. Bir uyumluluk denetimi çalıştırın, tam yedekleme alın ve doğrudan OSS'e aktarın. Ardından yeni bir RDS örneği oluşturmak için yedek dosyasını ApsaraDB RDS konsolu üzerinden içe aktarın.

Bu kılavuzdaki ortam CentOS Linux V8.3.2011 çalıştıran bir Elastic Compute Service (ECS) örneği kullanır. Ubuntu'ya özgü adımlar için Ek 1: Ubuntu Üzerine Percona XtraBackup Yükleme ve Ek 2: Ubuntu Üzerine Go ve Unzip Yükleme bölümlerine bakın.

Adım 1: Percona XtraBackup Yükleyin

Percona XtraBackup, MySQL için çalışma zamanını etkilemeden tam yedeklemeleri destekleyen bir sıcak yedekleme aracıdır. MySQL sürümünüzle eşleşen sürümü yükleyin.

MySQL 5.7

MySQL 5.7 — Percona XtraBackup 2.4 kullanır:

wget https://downloads.percona.com/downloads/Percona-XtraBackup-2.4/Percona-XtraBackup-2.4.29/binary/redhat/8/x86_64/percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-24-2.4.29-1.el8.x86_64.rpm

MySQL 8.0

MySQL 8.0 — Percona XtraBackup 8.0 kullanır:

wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm

Ubuntu için Ek 1 bölümüne bakın.

Adım 2: MySQL Backup Helper Yükleyin

MySQL Backup Helper iki araç sağlar: backup_helper örneğinizin geçişi destekleyip desteklemediğini denetler ve oss_stream yedeği doğrudan OSS'e aktarır.

Bağımlılıkları yükleme (CentOS)

sudo yum install -y go
sudo yum install -y unzip

Ubuntu için Ek 2 bölümüne bakın.

MySQL Backup Helper Derleme

  1. Kaynak kodunu indirin:

    wget https://github.com/aliyun/mysql-backup-helper/archive/refs/heads/master.zip
  2. Paketi açın:

    unzip master.zip
  3. backup_helper derleyin:

    cd mysql-backup-helper-master
    go build -a -o backup_helper main.go
  4. oss_stream derleyin:

    cd oss_stream
    go build -a -o oss_stream oss_stream.go

Adım 3: Yedekleme alma ve geçiş yapma

3,1 Geçiş uyumluluğunu denetleme

Kaynak örneğin geçişi desteklediğini doğrulamak için backup_helper çalıştırın:

cd ~/mysql-backup-helper-master && ./backup_helper \
  -host <host-ip> \
  -port <port> \
  -user <username> \
  --password <password>

Yer tutucuları gerçek değerlerinizle değiştirin:


Yer Tutucu


Açıklama


Örnek


<host-ip>


MySQL örneğinin çalıştığı ana bilgisayarın IP adresi


127.0.0.1


<port>


MySQL bağlantı noktası


3306


<username>


Kök hesap kullanıcı adı


root


<password>


Kök hesap parolası


Aa123456@

Denetim başarılı olursa sonraki adıma geçin.

3,2 Yedekleme alma ve OSS'e yükleme

Uyarı

Percona XtraBackup, tam komut satırını (parolalar dahil) yedek içindeki xtrabackup_info dosyasına yazar. Yükleme tamamlandıktan sonra bu dosyanın hassas kimlik bilgilerini ifşa etmediğinden emin olun.

Yedeklemeyi başlatın ve doğrudan OSS paketinize aktarın. MySQL sürümünüz için uygun komutu seçin.

MySQL 5.7

MySQL 5.7 — innobackupex kullanır:

innobackupex --backup \
  --host=<host-ip> \
  --port=<port> \
  --user=<username> \
  --password=<password> \
  --stream=xbstream \
  --compress <temp-dir> | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId <AccessKey-ID> \
  -accessKeySecret <AccessKey-secret> \
  -bucketName <bucket-name> \
  -endpoint <OSS-endpoint> \
  -objectName <backup-file-name>

Örnek:

innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
  --stream=xbstream --compress /root/mysql/data | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId LTAI**************** \
  -accessKeySecret ****** \
  -bucketName test \
  -endpoint oss-ap-southeast-1.aliyuncs.com \
  -objectName backup_qp.xb

MySQL 8.0

MySQL 8.0 — xtrabackup kullanır:

xtrabackup --backup \
  --host=<host-ip> \
  --port=<port> \
  --user=<username> \
  --password=<password> \
  --stream=xbstream \
  --compress <temp-dir> | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId <AccessKey-ID> \
  -accessKeySecret <AccessKey-secret> \
  -bucketName <bucket-name> \
  -endpoint <OSS-endpoint> \
  -objectName <backup-file-name>

Örnek:

xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
  --stream=xbstream --compress /root/mysql/data | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId LTAI**************** \
  -accessKeySecret ******** \
  -bucketName test \
  -endpoint oss-ap-southeast-1.aliyuncs.com \
  -objectName backup_qp.xb

Yer tutucuları gerçek değerlerinizle değiştirin:


Yer Tutucu


Açıklama


Örnek


<host-ip>


MySQL örneğinin çalıştığı ana bilgisayarın IP adresi


127.0.0.1


<port>


MySQL bağlantı noktası


3306


<username>


Kök hesap kullanıcı adı


root


<password>


Kök hesap parolası


Aa123456@


<temp-dir>


Yedekleme için geçici dizin


/root/mysql/data


<AccessKey-ID>


Alibaba Cloud AccessKey ID'niz


LTAI5tXxx


<AccessKey-secret>


Alibaba Cloud AccessKey secret'iniz


xXxXxXx


<bucket-name>


OSS paketinizin adı


test


<OSS-endpoint>


OSS paketinizin uç noktası


oss-ap-southeast-1.aliyuncs.com


<backup-file-name>


OSS'teki yedek nesnesine atanacak ad


backup_qp.xb

Büyük veritabanları için oturum bağlantısı kesilirse kesintileri önlemek amacıyla komutu nohup ile çalıştırın. MySQL 5.7: MySQL 8.0:
nohup sh -c 'innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ --stream=xbstream --compress /root/mysql/data | ./mysql-backup-helper-master/oss_stream/oss_stream -accessKeyId LTAI**************** -accessKeySecret ****** -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &
nohup sh -c 'xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
  --stream=xbstream --compress /root/mysql/data | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId LTAI**************** -accessKeySecret ****** \
  -bucketName test -endpoint oss-ap-southeast-1.aliyuncs.com -objectName backup_qp.xb' &

Yedekleme tamamlandığında terminalde completed OK ! mesajı görüntülenir.

Dosyanın başarıyla yüklendiğini onaylamak için OSS konsolunda oturum açın. Yükleme başarısız olduysa yedekleme komutunu tekrar çalıştırın.

OSS geçici olarak kullanılamıyorsa yedeği önce yerel bir dosyaya kaydedin ve daha sonra yükleyin. Bkz. Ek 3: Yerel yedekleme alma ve OSS'e yükleme.

3,3 Yedeği ApsaraDB RDS konsolunda içe aktarma

  1. ApsaraDB RDS konsolunda oturum açın. Üst gezinme çubuğundan hedef RDS örneğinizin bulunduğu bölgeyi seçin. Sol gezinme bölmesinde Backups öğesine tıklayın.

  2. User Backups sekmesinde Import Backup öğesine tıklayın.

  3. Import Guide sihirbazında talimatları okuyun ve 3. Import Data adımına ulaşana kadar Next öğesine tıklayın.

    Sihirbazdaki 1. Back Up Source Database ve 2. Upload Backup Files to OSS adımları bu kılavuzdaki 3.1 ve 3.2 Adımlarına karşılık gelir.
  4. 3. Import Data adımında aşağıdaki parametreleri yapılandırın ve OK öğesine tıklayın.

    ApsaraDB RDS'nin OSS'e erişimine yetki verilmediyse bu adımın altındaki Authorize öğesine tıklayın. Görüntülenen sayfada Confirm Authorization Policy öğesine tıklayın.


    Parametre


    Açıklama


    MySQL version


    5.7/8.0 otomatik olarak görüntülenir. Hem MySQL 5.7 hem de MySQL 8.0 desteklenir.


    Region


    Yedek dosyasını depolayan OSS paketinin bölgesi. Hedef RDS örneğinin bölgesiyle eşleşmelidir.


    OSS Bucket


    Yedek dosyasını içeren OSS paketi. Ayrıntılar için Nesne yükleme konusuna bakın.


    OSS file name


    OSS paketindeki yedek nesnesi. Bulanık ve tam eşleşmeyi destekler. Dosya _QP.XB biçiminde olmalı veya TAR.GZ olarak sıkıştırılmış olmalıdır.


    Note


    Yedek dosyasını tanımlamaya yardımcı olacak isteğe bağlı bir açıklama.


    Zone


    OSS paketinin bulunduğu alan. Bir alan seçmek ApsaraDB RDS'nin saniyeler içinde anlık görüntü oluşturmasını sağlayarak içe aktarma süresini azaltır. Yeni RDS örneği bu alanda oluşturulur.


    Storage Capacity


    Yedek dosyası için gereken depolama alanı. Geçerli değerler: 20–6000 GB. Varsayılan olarak yedek dosyası boyutunun 3 katıdır (minimum 20 GB).

  5. User Backups sekmesinde doğrulama görevinin Status durumunun Verifying değerinden Completed değerine değişmesini bekleyin.

    Önemli

    Doğrulama süresi değişkenlik gösterir. Yedekleme sırasında yüksek yazma etkinliğine veya büyük işlemlere sahip örneklerin doğrulanması daha uzun sürebilir.

  6. Yedek dosyasını bulun ve Actions sütununda Restore öğesine tıklayın.

  7. Aşağıdaki parametreleri yapılandırın ve Next: Instance Configuration öğesine tıklayın.


    Parametre


    Açıklama


    Zone of Primary Node


    Birincil RDS örneği için alan. Yedek dosyasını içe aktarırken bir alan seçmediyseniz görüntülenir.


    Storage Type

    ESSD PL1: Performans düzeyi 1 Enterprise SSD. Standard SSD: Standart elastik blok depolama cihazı. Ayrıntılar için Depolama türleri konusuna bakın.


    Instance Type

    General-purpose (Entry-level): Özel olarak ayrılmış bellek ve G/Ç ile paylaşılan CPU ve depolama. Tam liste için Birincil ApsaraDB RDS örnek türleri konusuna bakın.


    Storage Capacity


    Veri dosyaları, sistem dosyaları, günlük dosyaları ve işlem dosyaları için sağlanan depolama alanı. 5 GB'lık artışlarla ayarlanabilir.

  8. Aşağıdaki parametreleri yapılandırın ve Next: Confirm Order öğesine tıklayın.


    Parametre


    Açıklama


    Network Type

    VPC seçeneğini seçin. Sanal özel cloud (VPC) daha yüksek güvenlik ve daha iyi performans sağlar. VPC ve vSwitch of Primary Node yapılandırmalarını da yapmanız gerekir. RDS örneği ve bağlanmak istediğiniz herhangi bir ECS örneği aynı VPC'de bulunmalıdır.


    Parameter Template


    Sistem veya özel bir parametre şablonu. Bkz. Parametre şablonlarını kullanma.


    Time Zone


    RDS örneği için saat dilimi.


    Table Name Case Sensitivity


    Kaynak örnekteki tablo adları büyük/küçük harfe duyarlıysa tutarlılığı korumak için Case-sensitive seçeneğini işaretleyin.

  9. Parameters bölümündeki örnek yapılandırmasını onaylayın, Purchase Plan seçeneğini ayarlayın, Hizmet Şartlarını kabul edin ve Pay Now öğesine tıklayın.

    ApsaraDB RDS örneği oluşturmak 1–5 dakika sürer.

Sonraki adımlar

Yedek saklama süresini yapılandırma

Varsayılan olarak içe aktarılan yedek dosyası 3 gün boyunca saklanır. Saklama süresini gereksinimlerinize göre ayarlayın.

  1. ApsaraDB RDS konsolunda oturum açın. Bir bölge seçin ve sol gezinme bölmesinde Backups öğesine tıklayın.

  2. Yedek dosyasını bulun. Expiration Time sütununda Set Retention Period öğesine tıklayın.

  3. Açılır listeden bir saklama süresi seçin veya Custom Retention Period seçeneğini işaretleyip bir değer girin.

  4. OK öğesine tıklayın.

Son kullanma tarihi 2099'u aşarsa Permanent olarak görüntülenir.

Yedek dosyasına etiket ekleme

  1. ApsaraDB RDS konsolunda oturum açın. Bir bölge seçin ve Backups öğesine tıklayın.

  2. Yedek dosyasını bulun. Tags sütununda +Add öğesine tıklayın.

  3. İletişim kutusunda Create a label öğesine tıklayın, Key ve Value alanlarını doldurun, etiketi oluşturmak için alanların yanındaki OK öğesine tıklayın ve ardından sağ alt köşedeki OK öğesine tıklayın.

    Mevcut bir etiketi kullanmak için Select the label açılır listesinden seçin.
  4. Bir etiketi güncellemek için üzerine gelin ve edit öğesine tıklayın. İpucunda 3. adımı tekrarlayın.

Artımlı kurtarma için günlük verilerini denetleme

Yedekleme sırasında kaynak örnekte veri değişiklikleri olduysa yedek dosyası artımlı kurtarma için günlük bilgileri içerir.

  1. ApsaraDB RDS konsolunda oturum açın. Bir bölge seçin ve Backups öğesine tıklayın.

  2. Yedek dosyasını bulun ve Actions sütununda View Details öğesine tıklayın.

  3. Görüntülenen iletiyi inceleyerek günlük verilerini kontrol edin:

    • Master_Log_File: Artımlı verileri içeren ilk günlük dosyası.

    • Master_Log_Position: İlgili dosyadaki artımlı verileri içeren ilk günlük girişi.

Yedek doğrulama kayıtları için varsayılan saklama süresi 7 gündür. Geçişten sonra artımlı verileri kaynak örnektenden hedef RDS örneğine en kısa sürede çoğaltın.

Yedek dosyasını silme

Yedek dosyasına artık ihtiyacınız yoksa depolama maliyetlerini azaltmak için dosyayı silin.

  1. ApsaraDB RDS konsolunda oturum açın. Bir bölge seçin ve Backups öğesine tıklayın.

  2. Yedek dosyasını bulun ve Actions sütununda Delete öğesine tıklayın.

  3. Onay iletişim kutusunda OK öğesine tıklayın.

RDS örneğinizi yükseltme

Geçişten sonra yeni RDS örneğinizde aşağıdaki işlemleri yapabilirsiniz:

User Backups sekmesindeki diğer işlemler

  • Sütunları filtreleme: Sütunları göstermek veya gizlemek için sağ üst köşedeki Customize list items simgesine tıklayın. Sütunları gizli liste (sol) ile görüntülenen liste (sağ) arasında taşımak için Right ve Left simgelerini kullanın. OK öğesine tıklayın.

  • Örnek listesini dışa aktarma: Yedekleme bilgilerini CSV dosyası olarak dışa aktarmak için Export the resource list simgesine tıklayın.

  • Yenileme: User Backups sekmesini yenilemek için Refresh simgesine tıklayın.

Ek 1: Ubuntu Üzerine Percona XtraBackup Yükleme

MySQL sürümünüzle eşleşen sürümü seçin.

MySQL 8.0

  1. Percona XtraBackup yükleyin:

    wget https://downloads.percona.com/downloads/Percona-XtraBackup-8.0/Percona-XtraBackup-8.0.35-31/binary/redhat/8/x86_64/percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
    yum localinstall percona-xtrabackup-80-8.0.35-31.1.el8.x86_64.rpm
  2. qpress yükleyin:

    sudo apt-get install -y qpress
The following packages have unmet dependencies hatasını görürseniz bağımlılıkları çözmek için apt-get -f install komutunu çalıştırın ve tekrar deneyin.

Ek 2: Ubuntu Üzerine Go ve Unzip Yükleme

Go programlama dilini yükleyin:

sudo apt-get install -y software-properties-common
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt-get update
sudo apt-get install -y golang-go

Unzip yükleyin:

sudo apt-get -y install unzip

Ek 3: Yerel yedekleme alma ve OSS'e yükleme

Yedeklemeyi çalıştırdığınız sırada OSS geçici olarak kullanılamıyorsa bu yaklaşımı kullanın.

Adım 1: Yerel bir dosyaya yedekleme

MySQL sürümünüz için uygun komutu seçin.

MySQL 5.7:

innobackupex --backup \
  --host=<host-ip> --port=<port> \
  --user=<username> --password=<password> \
  --stream=xbstream --compress <temp-dir> \
  > /<backup-dir>/<backup-file-name>_qp.xb

Örnek:

innobackupex --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
  --stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb

MySQL 8.0:

xtrabackup --backup \
  --host=<host-ip> --port=<port> \
  --user=<username> --password=<password> \
  --stream=xbstream --compress <temp-dir> \
  > /<backup-dir>/<backup-file-name>_qp.xb

Örnek:

xtrabackup --backup --host=127.0.0.1 --port=3306 --user=root --password=Aa123456@ \
  --stream=xbstream --compress /root/mysql/data > /root/backup_qp.xb

Adım 2: Yerel dosyayı OSS'e yükleme

OSS kullanılabilir duruma geldiğinde oss_stream kullanarak yükleyin:

cat /<backup-dir>/<backup-file-name>_qp.xb | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId LTAI**************** \
  -accessKeySecret ******** \
  -bucketName test \
  -endpoint oss-ap-southeast-1.aliyuncs.com \
  -objectName backup_qp.xb

Örnek:

cat /root/backup_qp.xb | \
  ./mysql-backup-helper-master/oss_stream/oss_stream \
  -accessKeyId ******** \
  -accessKeySecret LTAI**************** \
  -bucketName test \
  -endpoint oss-ap-southeast-1.aliyuncs.com \
  -objectName backup_qp.xb