Memindahkan basis data besar

8

Saya memiliki server centos dan / var / lib / mysql / berukuran 125GB (disk memiliki ruang kosong 1GB).

Biasanya saya akan menggunakan mysqldump untuk membuat cadangan basis data, tetapi saya biasanya tidak bekerja dengan basis data besar, jadi saya perlu tahu cara paling aman untuk menyalin basis data ke server baru.

Semua saran dihargai!

pengguna2029574
sumber

Jawaban:

3

Anda dapat menggunakan langkah-langkah berikut

Di Server lama

1.Hentikan server mysql

2. Salin konten datadir ke lokasi lain di disk sebagai ... mysqlbackup

3. Mulai server mysql lagi

4. Kompres data (tar -czvf mysqlbackup.tar.gz mysqlbackup)

5. Salin file yang dikompresi ke server baru

Di Server Baru

1. Instal MySQL [versi MySQL harus sama dengan server lama] (jangan mulai server MySQL)

2.Unzip file terkompresi (tar -xzvf mysqlbackup.tar.gz)

3. Pindahkan konten mysqlbackup ke datadir.

4. Pastikan bahwa izin datadir sudah benar

5. Pastikan innodb_log_file_size Anda sama di server baru, atau jika tidak, jangan salin file log lama (MySQL akan menghasilkan ini)

6. Mulai MySQL.

Anda juga dapat melihat Bagaimana saya bisa memindahkan database dari satu server ke yang lain?

Abdul Manaf
sumber
2

Karena Source DB hanya memiliki 1GB, Anda tidak memiliki ruang untuk mysqldump di mana pun.

Yang Anda butuhkan adalah sebagai berikut

  • Port 3306 terbuka di firewall server Sumber DB
  • Jalankan program mysqldump dari server Target DB

Untuk server Sumber DB yang alamat IP-nya 10.20.30.40, masuk ke Target DB dan jalankan ini

PIPA mysqldump KE MySQL Instance di Target DB Server

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-tranactions"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS}| mysql ${MYSQL_CONN}

PIPA mysqldump ke dalam File SQL. Memuat MySQL dari SQLFile

MYSQL_HOST=10.20.30.40
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
MYSQLDUMP_OPTIONS="--all-databases --add-drop-database --single-transaction"
MYSQLDUMP_OPTIONS="${MYSQLDUMP_OPTIONS} --hex-blob --routines --triggers"
mysqldump -h${MYSQL_HOST} ${MYSQL_CONN} ${MYSQLDUMP_OPTIONS} > MySQLData.sql
mysql ${MYSQL_CONN} < MySQLData.sql

CATATAN FINAL

Gunakan Teknik # 1 adalah tidak ada ruang disk untuk menyimpan File SQL. Gunakan Teknik # 2 jika Anda ingin membuang file dan memuatnya di lain waktu.

RolandoMySQLDBA
sumber
0

Dari server baru, anggap Anda telah menyiapkan pasangan kunci publik / pribadi

ssh root@oldserver mysqldump database | mysql database

harus bekerja dengan baik, saya tidak berpikir ruang disk akan digunakan sama sekali

otomat
sumber
Jangan lupa gunakan ssh -Cuntuk kompresi on-the-fly.
Twinkles
0

Biasanya Anda menjalankan mysqldump untuk membuat salinan basis data dan cadangan sebagai berikut:

$ mysqldump -u user -p db-name > db-name.out

Salin file db-name.out menggunakan sftp / ssh ke server MySQL jauh:

$ scp db-name.out user@remote.box.com:/backup

Pulihkan basis data di server jauh (login lewat ssh):

$ mysql -u user -p db-name < db-name.out

ATAU

$ mysql -u user -p 'password' db-name < db-name.out
Karthick
sumber
0

Ini bekerja untuk saya:

cd /var/lib/
rsync -rav mysql newmachine:/var/lib/
Alby
sumber
Harap edit posting Anda dan berikan beberapa penjelasan yang akan membantu pengguna di masa depan memahami kode Anda.
RLF
0

@ user2029574, apakah Perangkat Keras Anda ada di cloud? Saya juga pernah tersandung masalah yang sama dengan Anda di sini. Namun, instalasi MySQL saya di AWS dan Anda tahu itu berarti banyak kemudahan untuk melampirkan disk berukuran lebih besar. Di sini saya menyimpulkan apa yang saya lakukan:

  1. Pasang disk yang lebih besar baru ke instance server MySQL Anda saat ini.
  2. Gunakan innobackupex Percona untuk menyiapkan cadangan lengkap data MySQL saat ini di disk baru yang telah Anda lampirkan.
  3. Siapkan contoh lain dengan MySQL diinstal.
  4. Lepaskan disk yang terpasang pada instance 1.
  5. Sekarang pasang disk ke instance baru, instance 2.
  6. Hentikan layanan MySQL pada instance 2.
  7. Edit file konfigurasi MySQL sehingga data dir menunjuk ke lokasi baru.
  8. Kembalikan database dalam contoh baru. Sekali lagi, innobackupex , ada untuk bantuan Anda.
  9. Mulai server MySQL dalam contoh 2.

Dengan cara ini, Anda dapat memiliki aplikasi yang terhubung ke DB ini setiap saat dan Anda juga dapat memutakhirkan profil instance cloud Anda, jika itu juga merupakan persyaratan.

sameergautam
sumber