Impor mysql 5.6 ke 8

MySQL adalah SQL Database Management System (DMS) sumber terbuka yang paling populer, dikembangkan, didistribusikan, dan didukung oleh Oracle Corporation. Dengan pembaruan terkini pada tahun , DMS telah mengembalikan posisinya sebagai DMS terbaik di pasar. MySQL8. 0. Pembaruan 25 hadir dengan peningkatan kinerja dan keamanan utama

Beberapa sorotan utama termasuk

  • Peningkatan performa
  • Keamanan dan manajemen akun
  • Manajemen enkripsi tabel
  • peningkatan InnoDB
  • peningkatan JSON
  • Pengoptimal
  • Dukungan ekspresi reguler
  • Penyimpanan Dokumen MySQL
  • Kamus Data Transaksional
  • Peran SQL
  • Bawaan ke utf8mb4
  • Ekspresi Tabel Umum
  • Fungsi Jendela

Mempertimbangkan peningkatan ini, disarankan agar DMS aplikasi Anda ditingkatkan ke server MySQL terbaru. Upgrade ke versi terbaru MySQL dari 5. 1 versi memerlukan banyak pengeditan kecil dan besar dalam aplikasi perusahaan Anda

Kami baru-baru ini menerima mandat untuk memigrasi database perusahaan kami ke versi terbaru MySQL. Ini memungkinkan kami untuk menambahkan fitur baru ke platform dan meningkatkan kemampuan keamanan dan pengoptimalan data

Kami telah mendokumentasikan perjalanan bertahap kami dan pelajaran yang didapat selama proses tersebut

Konfigurasi aplikasi perusahaan kami

Untuk memahami proses migrasi dengan jelas, saya telah menguraikan tumpukan teknologi aplikasi

Jawa 1. 8

Maven 2. 2. 1

Musim semi 2. 5

Hibernasi 3. 2. 6

Kucing jantan 7. 0. 54

MySQL5. 1. 34

Liquidbase 1. 9. 0. 0

Tujuan utama kami adalah untuk meningkatkan versi platform DMS

Proses Migrasi

Di awal proses migrasi, kami mempertimbangkan 3 parameter

  1. Meninjau apa yang baru di MySQL 8. 0
  2. Mencatat perubahan database/skema
  3. Mengupgrade dependensi

Sesuai dokumentasi MySQL, peta pemutakhiran adalah 5. 1 → 5. 5 → 5. 6 → 5. 7 → 8. 0. Kami mengikuti dokumentasi untuk peningkatan prosedural

Proses langkah demi langkah untuk Upgrade (Linux — Centos)1. Ambil cadangan dari Database saat ini dan konfigurasinya

mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_

Jika ukuran DB Anda besar, Anda dapat menggunakan perintah nohup yang menjalankan proses pencadangan di latar belakang. Jadi perintah dump di atas akan dimodifikasi menjadi

nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &

Jika ada kesalahan yang terjadi selama proses dump, itu akan dicatat di bck_error_log. file log

Sekarang, buat cadangan file konfigurasi mysql saat ini yang terletak di /etc/my.cnf dengan perintah ini

cp /etc/my.cnf /opt/5.1_my.cnf_

2. Copot pemasangan MySQL5. 1 dengan perintah berikut

  1. Buka terminal. Ctrl + Alt + T
  2. Hentikan layanan mysql. systemctl stop mysql_
  3. Hapus mysql-server. sudo yum remove mysql mysql-server
  4. Hapus perpustakaan mysql. sudo yum remove mysql mysql-server mysql-libs compat-mysql51_
  5. Temukan MySQL 5. 1 file. find / -name mysql_

Perintah di atas akan mencantumkan jalur folder berikut

  • /var/lib/mysql
  • /etc/selinux/targeted/active/modules/100/mysql
  • /usr/bin/mysql
  • /usr/lib64/mysql
  • /usr/include/mysql

Hapus folder yang tercantum di atas. Juga, hapus saya. cnf jika ada

3. Instal MySQL8. 0 (diuji dengan 8. 0. 23) dengan perintah berikut
  1. Setel yum repo untuk MySQL 8. 0. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_0
  2. Instal MySQL8. 0. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_1
  3. Aktifkan layanan mysqld. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_2
  4. Mulai layanan mysqld. systemctl mulai mysqld
  5. Dapatkan kata sandi sementara untuk server MySQL yang diinstal. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_3
  6. Jalankan penginstalan aman untuk mengatur kata sandi root dan menghapus basis data pengujian. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_4
  7. Periksa versi MySQL dan detail lainnya dengan masuk ke server mysql dengan perintah berikut. mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_5

Catatan. Setelah Anda masuk, buat pengguna baru dan berikan izin kepada pengguna itu. Hindari login pengguna root

4. Terapkan cadangan basis data lama dan jalankan migrasi untuk perubahan skema

mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_6

Ini adalah perintah Nohup untuk file dump ukuran lebih besar

mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_7

Jika ada kesalahan selama proses pemuatan dump, itu akan dicatat di dump_error_log. file log. Setelah proses dump berhasil, Jalankan mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_8 dan itu akan menghapus jumlah cek yang dihitung dengan versi Liquibase yang lebih lama dan checksum baru akan dihitung pada perintah migrasi berikutnya

5. Pengujian

Setelah pemutakhiran selesai, kami menjalankan pengujian komprehensif pada semua bagian aplikasi. Kami memastikan pengujian terfokus dilakukan untuk Liquibase untuk memeriksa apakah Liquibase memigrasikan semua set perubahan dan memuat metadata dengan benar

Aplikasi ini juga diuji menggunakan beberapa browser web seperti Google Chrome, Firefox, dan Microsoft Edge

Perubahan Basis Data

Selama proses upgrade, akan ada perubahan tertentu pada konfigurasi database. Penting untuk mencatat perubahan tersebut untuk memastikan bahwa aplikasi berjalan dengan lancar setelah pemutakhiran DMS. Perubahan besar akan terjadi

  • Kumpulan karakter default telah berubah dari latin1 menjadi utf8mb4
  • Tampilan InnoDB INFORMATION_SCHEMA diganti namanya
  • Kata kunci cadangan baru telah ditambahkan
  • Log biner diaktifkan secara default. Tahu lebih banyak
Meningkatkan Ketergantungan

Seperti yang baru saja saya katakan, akan ada beberapa perubahan besar dalam database dan kita perlu memutakhirkan dependensi yang sesuai. Mungkin ada beberapa tantangan untuk tumpukan teknologi yang ada untuk terhubung dengan versi baru dari Sistem Manajemen Basis Data

Dalam kasus aplikasi kami, kami menggunakan Liquibase untuk mengelola perubahan skema database dan plugin dbunit untuk penyemaian perubahan meta. Ketika kami mencoba menghubungkan aplikasi kami dengan MySQL 8. 0 database server menggunakan mysql-connector/J-8. 0 untuk menjalankan skema dan migrasi data, kami menghadapi beberapa masalah saat membuat dan mengambil tabel. Ini karena aplikasi kami memiliki Liquibase 1 versi lama. 9. 0. 0, yang tidak sepenuhnya kompatibel dengan MySQL 8. 0. Jadi kami memutakhirkan ke versi Liquibase yang lebih tinggi, yang didukung penuh oleh MySQL 8. 0. Setelah kami memutakhirkan Liquibase, kami menyadari bahwa kami perlu memutakhirkan dependensi yang sesuai juga

Memutakhirkan Liquibase ke versi yang lebih tinggi menyebabkan pemutakhiran pustaka Ant dan dependensinya juga. Setelah selesai, sistem log perubahan skema kami untuk proses migrasi sudah siap

Ada beberapa tantangan yang dihadapi selama proses migrasi. Untuk memastikan bahwa Anda tidak mengalaminya, kami telah mencantumkannya di bawah ini dengan solusi yang sesuai

Tantangan & SolusiTantangan #1

Masalah dengan Liquibase-1. 9. 0 pada pembuatan tabel DATABASECHANGELOG dan DATABASECHANGELOGLOCK saat menggunakan mysql-connector-Java-8. 0 atau lebih tinggi

Larutan. Upgrade Liquibase ke versi yang mendukung MySQL 8. 0. Saya telah memutakhirkan Liquibase dari 1. 9. 0. 0 sampai 3. 6. 3

Tantangan #2

Mengambil tabel tanpa nama skema/DB yang cocok, yang mengarah ke pengecualian Tabel Ambigu

Larutan. Ini terjadi karena koneksi JDBC dihasilkan dengan MySQL Connector/J 8. 0. 25 adalah umum. Jadi, beberapa tabel dengan nama file yang sama dari skema/DB berbeda diambil. Perbarui konfigurasi POM untuk dbunit untuk mengambil tabel dengan nama skema/DB

<schema>TEST_DB</schema><dataTypeFactoryName>org.dbunit.ext.mysql.MySqlDataTypeFactory</dataTypeFactoryName><metadataHandlerName>org.dbunit.ext.mysql.MySqlMetadataHandler</metadataHandlerName>
Tantangan #3

Kami memiliki tag mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz_9 di set perubahan kami yang tidak digunakan lagi dari Liquibase 2. 0

Larutan. Kita dapat menggunakan tag nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &_0 dengan nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &1 bersama dengan tag nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &2, alih-alih menggunakan tag mysqldump -u****** -p****** --routines --triggers TEST_DB | gzip > /opt/db_bck.sql.gz9. Lihat dokumentasi Liquibase untuk memilih tag yang tepat untuk aplikasi Anda

Tantangan #4

Liquidbase 3. 6. 3 tidak dapat mencatat kumpulan perubahan dengan pustaka Ant 1. 6. 5

Larutan. Tingkatkan Semua perpustakaan dari 1. 6. 5 (dalam proyek kami) ke 1. 7. 0, itu akan kompatibel dengan Liquibase 3. 6. 3

Perubahan Tambahan Diperlukan
  1. Jenis boolean diubah dari nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &_4 menjadi nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &5
  2. Gunakan nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &_6 di Changeset xmls untuk menggunakan tag nohup sh -c 'mysqldump -u****** -p****** --routines --triggers TEST_DB |gzip > /opt/db_bck.sql.gz' > /opt/bck_error_log.log &2

Catatan. Kata kunci cadangan baru telah ditambahkan di MySQL 8. 0. 25. Jika tabel set perubahan Anda berisi salah satunya, gunakan (`) sebagai pola pelarian, yang ditangani secara internal di Liquibase 3. 6. 3 (mis. PERINGKAT -> `PERINGKAT`)

Berikut adalah Konfigurasi Akhir yang Diperbarui dari Aplikasi kami

Jawa 1. 8

Maven 2. 2. 1

Musim semi 2. 5

Hibernasi 3. 2. 6

Kucing jantan 7. 0. 54

MySQL8. 0. 23

Liquidbase 3. 6. 3

Suka panduan langkah demi langkah kami?

Cara memutakhirkan MySQL 5. 7 sampai 8?

Upgrade INPLACE melibatkan mematikan MySQL 5. 7 server, menggantikan binari lama dengan MySQL 8. 0 binari dan kemudian memulai MySQL 8. 0 server pada direktori data lama. .
Penggunaan objek db dengan. .
Penggunaan charset utf8mb3. .
Penggunaan penggunaan ZEROFILL/display. .
Masalah yang dilaporkan oleh 'periksa tabel x untuk pemutakhiran'

Bagaimana cara memutakhirkan MySQL 5. 6 sampai 8 jendela?

Untuk melakukan pemutakhiran menggunakan Pemasang MySQL. .
Mulai Pemasang MySQL
Dari dasbor, klik Katalog untuk mengunduh perubahan terbaru pada katalog. .
Klik Tingkatkan. .
Batalkan pilihan semua kecuali produk server MySQL, kecuali jika Anda berniat untuk memutakhirkan produk lain saat ini, dan klik Berikutnya
Klik Jalankan untuk memulai pengunduhan

Bagaimana cara mengubah versi MySQL ke 8?

Mengekstrak Arsip Instal
Membuat File Opsi
Memilih Jenis Server MySQL
Inisialisasi Direktori Data
Memulai Server untuk Pertama Kalinya
Memulai MySQL dari Baris Perintah Windows
Menyesuaikan PATH untuk Alat MySQL
Memulai MySQL sebagai Layanan Windows

Cara memutakhirkan MySQL 5. 7 sampai 8 di Centos?

Peningkatan MySQL dari 5. 6 sampai 5. 7 sampai 8. 0 .
Luncurkan Server MySQL. Buka Layanan, di bawah modul komputasi, klik layanan EC2 untuk membuka. .
Hubungkan ke Linux EC2 Instance Menggunakan Putty. Kami dapat menghubungkan dempul dengan menggunakan tautan di bawah ini. .
Beralih ke pengguna root. .
Instal pembaruan Server. .
Instal paket wget. .
Instal MySQL5. 6. .
Tingkatkan MySQL dari 5. 6 sampai 5. 7