Tôi có kết xuất SQL 32 GB khổng lồ mà tôi cần nhập vào MySQL. Tôi đã không phải nhập một bãi chứa SQL lớn như vậy trước đây. Tôi đã làm như thường lệ:
mysql -uroot dbname < dbname.sql
Nó mất quá nhiều thời gian. Có một bảng với khoảng 300 triệu hàng, nó đã lên tới 1,5 triệu trong khoảng 3 giờ. Vì vậy, có vẻ như toàn bộ sự việc sẽ mất 600 giờ (tức là 24 ngày) và không thực tế. Vì vậy, câu hỏi của tôi là, có cách nào nhanh hơn để làm điều này?
Thông tin thêm / Kết quả
- Các bảng đều là InnoDB và không có khóa ngoại nào được xác định. Tuy nhiên, có nhiều chỉ số.
- Tôi không có quyền truy cập vào máy chủ gốc và DB vì vậy tôi không thể tạo bản sao lưu mới hoặc tạo bản sao "nóng", v.v.
- Thiết lập
innodb_flush_log_at_trx_commit = 2
như được đề xuất ở đây dường như không cải thiện (hiển thị rõ ràng / hàm mũ). - Số liệu thống kê máy chủ trong quá trình nhập (từ MySQL Workbench): https://imgflip.com/gif/ed0c8 .
- Phiên bản MySQL là cộng đồng 5.6.20.
- innodb_buffer_pool_size = 16M và innodb_log_buffer_size = 8M. Tôi có cần phải tăng những thứ này không?