Nhập cơ sở dữ liệu MySQL vào MariaDB

“Dữ liệu là dầu mới. ”. Vì vậy, khi nói đến kinh doanh trực tuyến, mất dữ liệu có nghĩa là mất vốn. Dữ liệu quan trọng và nhạy cảm nên được sao lưu định kỳ. Nhờ các chương trình miễn phí như MySQLDumper, bạn có thể tạo bản sao lưu cơ sở dữ liệu MySQL trong vài phút. Sau khi cài đặt, bạn có thể sử dụng phần mềm để tự động hóa và quản lý các bản sao lưu

Nhập hoặc xuất cơ sở dữ liệu từ cơ sở dữ liệu MySQL hoặc MariaDB từ vỏ MySQL hoặc dòng lệnh. Đây là phương pháp dễ nhất để xuất cơ sở dữ liệu hoặc bảng cụ thể từ cơ sở dữ liệu

Nếu bạn có một cơ sở dữ liệu lớn hơn 500Mb, sẽ rất khó xuất, điều này sẽ mất nhiều thời gian hơn để nhập hoặc xuất toàn bộ cơ sở dữ liệu, điều này có thể dẫn đến lỗi hết thời gian chờ

Trong hướng dẫn này, bạn sẽ học cách nhập hoặc xuất cơ sở dữ liệu bằng dòng lệnh từ MySQL shell. Bạn cũng sẽ tìm hiểu một số cách khắc phục sự cố không thể xuất cơ sở dữ liệu của mình

Nhập cơ sở dữ liệu MySQL vào MariaDB

Nhập cơ sở dữ liệu MySQL vào MariaDB

BẮT ĐẦU

điều kiện tiên quyết

  • Truy cập SSH máy chủ
  • Tên người dùng MySQL, tên cơ sở dữ liệu, mật khẩu để xuất cơ sở dữ liệu
  • Người dùng và mật khẩu MySQL có quyền tạo cơ sở dữ liệu để nhập

Xuất cơ sở dữ liệu MySQL từ dòng lệnh

Đăng nhập vào SSH máy chủ của bạn và lưu ý tên cơ sở dữ liệu, tên người dùng và mật khẩu của bạn. Đảm bảo người dùng của bạn có toàn quyền truy cập vào cơ sở dữ liệu mà bạn muốn xuất

Bạn có thể sử dụng lệnh sau để xuất toàn bộ cơ sở dữ liệu

mysqldump -u username -p database_name > filename.sql

Bạn sẽ được nhắc nhập mật khẩu cho tên người dùng

Khi bạn đã nhập mật khẩu, cơ sở dữ liệu của bạn sẽ được xuất sang tệp định dạng .sql và được lưu trữ trong thư mục hiện tại của bạn

Các vấn đề mà bạn không thể xuất cơ sở dữ liệu

Lỗi truy cập bị từ chối

  1. Bạn có thể thử đăng nhập với tư cách người dùng root sudo su và xuất cơ sở dữ liệu
  2. Có thể là mật khẩu không khớp
  3. Có thể người dùng không có đủ đặc quyền đối với cơ sở dữ liệu

Lỗi (các) đặc quyền QUY TRÌNH truy cập bị từ chối

Bạn cần sử dụng tùy chọn --no-tablespaces với lệnh mysqldump. Vì vậy, lệnh sẽ giống như bên dưới

mysqldump --no-tablespaces -u username -p database_name > filename.sql

Chỉ xuất một số bảng nhất định

Để xuất các bảng cụ thể của cơ sở dữ liệu từ dòng lệnh, bạn cần chuyển tên bảng như hình bên dưới

mysqldump -u username -p database_name table1 table2 > filename.sql

Lệnh trên sẽ chỉ xuất các tên bảng được chỉ định

Nhập dữ liệu MySQL từ dòng lệnh

Đây là phương pháp tốt nhất để nhập một tệp cơ sở dữ liệu khổng lồ mà không có bất kỳ lỗi nào

Tải tệp .sql lên máy chủ của bạn. Đăng nhập vào SSH và điều hướng đến thư mục mà bạn đã tải tệp cơ sở dữ liệu lên

Nếu bạn không có cơ sở dữ liệu, bạn cần đăng nhập với tư cách người dùng như root để tạo cơ sở dữ liệu

CREATE DATABASE database_name /*\!40100 DEFAULT CHARACTER SET utf8mb4 */;

Để nhập cơ sở dữ liệu, bạn có thể sử dụng lệnh sau

mysql -u username -p database_name < backup.sql

Đảm bảo rằng bạn có đủ đặc quyền trên cơ sở dữ liệu của mình

thận trọng. Nếu bạn sử dụng

mysqldump --no-tablespaces -u username -p database_name > filename.sql
0 thay vì
mysqldump --no-tablespaces -u username -p database_name > filename.sql
1. Tất cả dữ liệu trong bản sao lưu. sql sẽ bị xóa hoặc bị hỏng

Nếu bạn có nhiều hơn 1 GiB dữ liệu để tải hoặc nếu dữ liệu của bạn đến từ một nơi nào đó không phải là cơ sở dữ liệu MariaDB hoặc MySQL, chúng tôi khuyên bạn nên tạo các tệp phẳng và tải chúng bằng mysqlimport. Tiện ích mysqlimport là một tiện ích dòng lệnh khác đi kèm với phần mềm máy khách MySQL và MariaDB. Mục đích của nó là tải các tệp phẳng vào MySQL hoặc MariaDB. Để biết thông tin về mysqlimport, hãy xem mysqlimport - một chương trình nhập dữ liệu trong tài liệu MySQL

Chúng tôi cũng khuyên bạn nên tạo các bản kết xuất nhanh cơ sở dữ liệu của phiên bản CSDL Amazon RDS mục tiêu trước và sau khi tải dữ liệu. Kết xuất nhanh cơ sở dữ liệu Amazon RDS là bản sao lưu hoàn chỉnh của phiên bản CSDL của bạn. Bản sao này có thể được sử dụng để khôi phục phiên bản CSDL của bạn về trạng thái đã biết. Khi bạn bắt đầu một bản kết xuất nhanh cơ sở dữ liệu, các thao tác I/O đối với phiên bản CSDL của bạn tạm thời bị tạm dừng trong khi cơ sở dữ liệu của bạn được sao lưu

Tạo ảnh chụp nhanh cơ sở dữ liệu ngay trước khi tải giúp bạn có thể khôi phục cơ sở dữ liệu về trạng thái của nó trước khi tải, nếu bạn cần. Ảnh chụp nhanh cơ sở dữ liệu được chụp ngay sau khi tải giúp bạn không phải tải lại dữ liệu trong trường hợp xảy ra sự cố và cũng có thể được sử dụng để khởi tạo các phiên bản cơ sở dữ liệu mới

Danh sách sau đây cho thấy các bước cần thực hiện. Mỗi bước được thảo luận chi tiết hơn sau đây

  1. Tạo các tệp phẳng chứa dữ liệu sẽ được tải

  2. Dừng mọi ứng dụng đang truy cập phiên bản CSDL đích

  3. Tạo ảnh chụp nhanh cơ sở dữ liệu

  4. Cân nhắc tắt sao lưu tự động Amazon RDS

  5. Tải dữ liệu bằng mysqlimport

  6. Bật lại sao lưu tự động

Bước 1. Tạo các tệp phẳng chứa dữ liệu sẽ được tải

Sử dụng một định dạng phổ biến, chẳng hạn như các giá trị được phân tách bằng dấu phẩy (CSV), để lưu trữ dữ liệu sẽ được tải. Mỗi bảng phải có tệp riêng; . Đặt cho mỗi tệp cùng tên với bảng mà nó tương ứng. Phần mở rộng tệp có thể là bất cứ thứ gì bạn thích. Ví dụ: nếu tên bảng là

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
5, tên tệp có thể là
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
6 hoặc
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
7, nhưng không phải là
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
8

Bất cứ khi nào có thể, hãy sắp xếp dữ liệu theo khóa chính của bảng đang được tải. Làm điều này cải thiện đáng kể thời gian tải và giảm thiểu yêu cầu lưu trữ đĩa

Tốc độ và hiệu quả của quy trình này phụ thuộc vào việc giữ cho kích thước tệp nhỏ. Nếu kích thước không nén của bất kỳ tệp riêng lẻ nào lớn hơn 1 GiB, hãy chia tệp đó thành nhiều tệp và tải riêng từng tệp

Trên các hệ thống giống Unix (bao gồm cả Linux), hãy sử dụng lệnh

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
9. Ví dụ: lệnh sau chia tệp
aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
6 thành nhiều tệp nhỏ hơn 1 GiB, chỉ chia khi ngắt dòng (-C 1024m). Các tệp mới được đặt tên là
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
1,
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
2, v.v.

split -C 1024m -d sales.csv sales.part_ 

Các tiện ích tương tự có sẵn cho các hệ điều hành khác

Bước 2. Dừng mọi ứng dụng đang truy cập phiên bản CSDL đích

Trước khi bắt đầu tải lớn, hãy dừng mọi hoạt động của ứng dụng đang truy cập phiên bản CSDL đích mà bạn định tải lên. Chúng tôi đặc biệt khuyến nghị điều này nếu các phiên khác sẽ sửa đổi các bảng đang được tải hoặc các bảng mà chúng tham chiếu. Làm điều này làm giảm nguy cơ vi phạm ràng buộc xảy ra trong quá trình tải và cải thiện hiệu suất tải. Nó cũng cho phép khôi phục phiên bản CSDL về điểm ngay trước khi tải mà không làm mất các thay đổi được thực hiện bởi các quy trình không liên quan đến tải

Tất nhiên, điều này có thể không khả thi hoặc thực tế. Nếu bạn không thể ngăn các ứng dụng truy cập phiên bản CSDL trước khi tải, hãy thực hiện các bước để đảm bảo tính khả dụng và tính toàn vẹn của dữ liệu của bạn. Các bước cụ thể được yêu cầu rất khác nhau tùy thuộc vào các trường hợp sử dụng cụ thể và yêu cầu của trang web

Bước 3. Tạo ảnh chụp nhanh cơ sở dữ liệu

Nếu định tải dữ liệu vào một phiên bản CSDL mới không chứa dữ liệu, thì bạn có thể bỏ qua bước này. Mặt khác, việc tạo ảnh chụp nhanh cơ sở dữ liệu cho phiên bản CSDL của bạn giúp bạn có thể khôi phục phiên bản CSDL về điểm ngay trước khi tải, nếu cần thiết. Như đã đề cập trước đây, khi bạn bắt đầu một bản kết xuất nhanh cơ sở dữ liệu, các thao tác I/O đối với phiên bản CSDL của bạn sẽ bị tạm dừng trong vài phút trong khi cơ sở dữ liệu được sao lưu

Ví dụ sau đây sử dụng lệnh AWS CLI

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
3 để tạo ảnh chụp nhanh cơ sở dữ liệu của phiên bản
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
4 và cung cấp cho ảnh chụp nhanh cơ sở dữ liệu mã định danh
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
5

Đối với Linux, macOS hoặc Unix

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 

Cho cửa sổ

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 

Bạn cũng có thể sử dụng chức năng khôi phục từ kết xuất nhanh cơ sở dữ liệu để tạo các phiên bản CSDL thử nghiệm cho các lần chạy khô hoặc hoàn tác các thay đổi đã thực hiện trong quá trình tải

Lưu ý rằng việc khôi phục cơ sở dữ liệu từ kết xuất nhanh cơ sở dữ liệu sẽ tạo ra một phiên bản CSDL mới, giống như tất cả các phiên bản CSDL, có một mã định danh và điểm cuối duy nhất. Để khôi phục phiên bản CSDL mà không thay đổi điểm cuối, trước tiên hãy xóa phiên bản CSDL để bạn có thể sử dụng lại điểm cuối

Ví dụ: để tạo một phiên bản CSDL cho các lần chạy khô hoặc thử nghiệm khác, bạn cung cấp cho phiên bản CSDL mã định danh riêng của nó. Trong ví dụ,

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
6" là định danh. Ví dụ này kết nối với phiên bản DB bằng cách sử dụng điểm cuối được liên kết với
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
6

Đối với Linux, macOS hoặc Unix

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload 

Cho cửa sổ

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS-2 ^
    --db-snapshot-identifier preload 

Để sử dụng lại điểm cuối hiện có, trước tiên hãy xóa phiên bản CSDL, sau đó cung cấp cho cơ sở dữ liệu đã khôi phục cùng một mã định danh

Đối với Linux, macOS hoặc Unix

aws rds delete-db-instance \
    --db-instance-identifier AcmeRDS \
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 

Cho cửa sổ

aws rds delete-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --final-db-snapshot-identifier AcmeRDS-Final

aws rds restore-db-instance-from-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 

Ví dụ trước chụp nhanh cơ sở dữ liệu cuối cùng của phiên bản CSDL trước khi xóa nó. Đây là tùy chọn nhưng được khuyến nghị

Bước 4. Cân nhắc tắt sao lưu tự động Amazon RDS

Không tắt sao lưu tự động nếu bạn cần thực hiện khôi phục tại thời điểm

Tắt sao lưu tự động sẽ xóa tất cả các bản sao lưu hiện có, vì vậy không thể khôi phục tại thời điểm sau khi tắt sao lưu tự động. Tắt sao lưu tự động là cách tối ưu hóa hiệu suất và không bắt buộc đối với tải dữ liệu. Kết xuất nhanh cơ sở dữ liệu thủ công không bị ảnh hưởng khi tắt sao lưu tự động. Tất cả kết xuất nhanh cơ sở dữ liệu thủ công hiện có vẫn có sẵn để khôi phục

Tắt sao lưu tự động giúp giảm thời gian tải khoảng 25 phần trăm và giảm dung lượng lưu trữ cần thiết trong khi tải. Nếu bạn định tải dữ liệu vào một phiên bản CSDL mới không chứa dữ liệu, thì việc tắt các bản sao lưu là một cách dễ dàng để tăng tốc độ tải và tránh sử dụng bộ nhớ bổ sung cần thiết cho các bản sao lưu. Tuy nhiên, trong một số trường hợp, bạn có thể định tải vào một phiên bản CSDL đã chứa dữ liệu. Nếu vậy, hãy cân nhắc lợi ích của việc tắt sao lưu so với tác động của việc mất khả năng thực hiện khôi phục tại thời điểm

Các phiên bản CSDL được bật sao lưu tự động theo mặc định (với thời gian lưu giữ một ngày). Để tắt sao lưu tự động, hãy đặt khoảng thời gian lưu giữ sao lưu thành 0. Sau khi tải, bạn có thể bật lại sao lưu bằng cách đặt khoảng thời gian lưu giữ sao lưu thành giá trị khác không. Để bật hoặc tắt sao lưu, Amazon RDS sẽ tắt phiên bản CSDL và khởi động lại để bật hoặc tắt tính năng đăng nhập MariaDB hoặc MySQL

Sử dụng lệnh AWS CLI

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
8 để đặt lưu giữ dự phòng về 0 và áp dụng thay đổi ngay lập tức. Việc đặt khoảng thời gian lưu giữ thành 0 yêu cầu khởi động lại phiên bản CSDL, vì vậy hãy đợi cho đến khi quá trình khởi động lại hoàn tất trước khi tiếp tục

Đối với Linux, macOS hoặc Unix

aws rds modify-db-instance \
    --db-instance-identifier AcmeRDS \
    --apply-immediately \
    --backup-retention-period 0 

Cho cửa sổ

aws rds modify-db-instance ^
    --db-instance-identifier AcmeRDS ^
    --apply-immediately ^
    --backup-retention-period 0 

Bạn có thể kiểm tra trạng thái phiên bản CSDL của mình bằng lệnh AWS CLI

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
9. Ví dụ sau đây hiển thị trạng thái phiên bản DB của phiên bản DB
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
4

aws rds describe-db-instances --db-instance-identifier AcmeRDS --query "*[].{DBInstanceStatus:DBInstanceStatus}"

Khi trạng thái phiên bản CSDL là

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload 
1, bạn đã sẵn sàng để tiếp tục

Bước 5. Tải dữ liệu

Sử dụng tiện ích mysqlimport để tải các tệp phẳng vào Amazon RDS. Ví dụ sau yêu cầu mysqlimport tải tất cả các tệp có tên "sales" với phần mở rộng bắt đầu bằng "part_". Đây là một cách thuận tiện để tải tất cả các tệp được tạo trong ví dụ "tách"

Sử dụng tùy chọn --compress để giảm thiểu lưu lượng mạng. Tùy chọn --fields-terminated-by=',' được sử dụng cho các tệp CSV và tùy chọn --local chỉ định rằng dữ liệu đến được đặt trên máy khách. Nếu không có tùy chọn --local, phiên bản CSDL Amazon RDS sẽ tìm kiếm dữ liệu trên máy chủ cơ sở dữ liệu, vì vậy, hãy luôn chỉ định tùy chọn --local. Đối với tùy chọn --host, hãy chỉ định điểm cuối phiên bản CSDL của phiên bản RDS cho phiên bản CSDL MySQL

Trong các ví dụ sau, hãy thay thế

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload 
2 bằng tên người dùng chính cho phiên bản CSDL của bạn

Thay thế

aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload 
3 bằng điểm cuối cho phiên bản CSDL của bạn. Một ví dụ về điểm cuối phiên bản DB là
aws rds restore-db-instance-from-db-snapshot \
    --db-instance-identifier AcmeRDS-2 \
    --db-snapshot-identifier preload 
4

Đối với RDS cho MySQL phiên bản 8. 0. 15 trở lên, hãy chạy câu lệnh sau trước khi sử dụng tiện ích mysqlimport

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
0

Đối với Linux, macOS hoặc Unix

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
1

Cho cửa sổ

aws rds create-db-snapshot \
    --db-instance-identifier AcmeRDS \
    --db-snapshot-identifier preload 
2

Đối với các lần tải dữ liệu rất lớn, hãy định kỳ thực hiện các ảnh chụp nhanh cơ sở dữ liệu bổ sung giữa các lần tải tệp và lưu ý những tệp nào đã được tải. Nếu xảy ra sự cố, bạn có thể dễ dàng tiếp tục từ điểm của ảnh chụp nhanh cơ sở dữ liệu cuối cùng, tránh tải lại lâu

Bước 6. Bật lại sao lưu tự động Amazon RDS

Sau khi tải xong, hãy bật sao lưu tự động Amazon RDS bằng cách đặt khoảng thời gian lưu giữ sao lưu về giá trị tải trước. Như đã lưu ý trước đó, Amazon RDS khởi động lại phiên bản CSDL, vì vậy hãy chuẩn bị sẵn sàng cho trường hợp ngừng hoạt động trong thời gian ngắn

Ví dụ sau sử dụng lệnh AWS CLI

aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
8 để bật sao lưu tự động cho phiên bản CSDL
aws rds create-db-snapshot ^
    --db-instance-identifier AcmeRDS ^
    --db-snapshot-identifier preload 
4 và đặt khoảng thời gian lưu giữ thành một ngày

Làm cách nào để nhập cơ sở dữ liệu trong MariaDB?

Nhập cơ sở dữ liệu MySQL hoặc MariaDB . Để làm như vậy, nếu bạn không có trình quản lý cơ sở dữ liệu, bạn cần kết nối với máy chủ cơ sở dữ liệu với tư cách là người dùng “root”. Thao tác này sẽ mở Shell của MySQL hoặc MariaDB. create the database where the import will take place. For doing so, if you do not have a database manager, you need to connect to the database server as a “root” user. This will open the Shell of MySQL or MariaDB.

Tôi có thể thay thế MySQL bằng MariaDB không?

Có, có thể thay thế MySQL bằng MariaDB . MariaDB được coi là một sự thay thế thả xuống cho phiên bản MySQL tương ứng (i. e MariaDB 10. 2 và Mysql 5. 7). Vui lòng xem lại sự khác biệt về tính năng giữa MariaDB và MySQL để đảm bảo rằng việc chuyển đổi sẽ không ảnh hưởng đến các ứng dụng sử dụng máy chủ cơ sở dữ liệu.

Làm cách nào để nhập cơ sở dữ liệu từ MySQL?

Nhập cơ sở dữ liệu từ một tệp . Fill in the fields with the connection information. Sau khi kết nối với cơ sở dữ liệu, hãy chuyển đến Nhập/Khôi phục dữ liệu. Chọn tùy chọn Nhập từ tệp tự chứa và chọn tệp. Chọn cơ sở dữ liệu đích trong Lược đồ mặc định được nhập vào và sau đó nhấp vào Bắt đầu nhập.

MariaDB và MySQL có giống nhau không?

Mặc dù MariaDB là một nhánh của MySQL, hai hệ thống quản lý cơ sở dữ liệu này vẫn khá khác nhau . MariaDB được cấp phép GPL đầy đủ trong khi MySQL sử dụng phương pháp cấp phép kép. Mỗi nhóm luồng xử lý theo một cách khác nhau. MariaDB hỗ trợ rất nhiều công cụ lưu trữ khác nhau.