Làm cách nào tôi có thể di chuyển cơ sở dữ liệu MySQL sang ổ đĩa khác?


34

Tôi đang sử dụng MySQL 5.5 trên một máy cục bộ để phân tích một lượng lớn dữ liệu của chính phủ. Tôi đã tạo một cơ sở dữ liệu cục bộ nằm trên ổ đĩa mặc định của mình (ổ Win7 C:). Tôi muốn lưu trữ dữ liệu trên ổ E: ổ đĩa ngoài eSATA lớn của tôi.

Tôi nên làm những bước nào?

mysql 

Bạn không thể xuất dB dưới dạng tệp sql, sau đó lưu tệp làm e: sau đó trong tương lai nếu bạn muốn khôi phục dB, bạn có thể nhập tệp này

@tq - Điều đó sẽ không làm việc. Anh ta muốn thay đổi thư mục dữ liệu máy chủ MySQL. Nếu anh ta xuất nó và nhập nó, nó sẽ vẫn ở trên cùng một ổ đĩa!

Một lời cảnh báo khi bạn di chuyển các tệp cơ sở dữ liệu sang ổ đĩa ngoài, bạn sẽ phải cắm nó vào máy tính nếu không cơ sở dữ liệu của bạn sẽ bị sập vì không thể tìm thấy các tệp dữ liệu
Stephen Senkomago Musoke

Câu trả lời:


35
  1. Tắt máy mysql.
  2. Di chuyển tất cả các tệp trong thư mục dữ liệu hiện tại của bạn sang vị trí mới (kiểm tra vị trí trong bước 3 - datadirtham số).
  3. Xác định vị trí my.initệp (nó nằm trong thư mục cài đặt mysql). Thay đổi datadirgiá trị tham số để trỏ đến vị trí mới.
  4. Bắt đầu mysql.

Điều này đã cho tôi lỗi khi cố gắng khởi động mysql (vấn đề quyền). Tôi giải quyết các giải pháp tôi đăng ở đây , mà tôi hy vọng sẽ giúp tiết kiệm thời gian cho ai đó.
snapfractalpop

1
Câu hỏi @snapfractalpop dành cho windows
adam

@adam windows được đề cập trong phần thân của câu hỏi, nhưng nó không được gắn thẻ dưới dạng câu hỏi chỉ dành cho windows, cũng như các cửa sổ được đề cập trong tiêu đề. Tôi đã đăng liên kết trong các bình luận vì có thể những người dùng không có cửa sổ khác cũng có thể vấp phải câu hỏi này.
snapfractalpop

Tôi thấy tôi phải sử dụng /chứ không phải \ là dấu phân cách thư mục trong đường dẫn thư mục cho datadir. Tôi đang sử dụng WAMPserver trên Windows 10.
Steve

Thư mục ProgramData có thể được ẩn trong trình thám hiểm tệp của bạn. Tôi nghĩ rằng nó không tồn tại cho đến khi tôi thay đổi cài đặt để hiển thị Tệp ẩn.
WestAce

6

Mặc dù bạn đang yêu cầu các cửa sổ, đây là một số hướng tốt cho những người kết thúc ở đây đang tìm hướng linux / ubfox:

Giả định:

  • Bạn có dữ liệu mysql trên ổ đĩa ngoài / usb / thay thế /mountpoint/var/lib/mysql, có thể từ máy tính đã chết hoặc cài đặt cũ
  • Bạn muốn chuyển nó sang cài đặt Ubuntu mới cục bộ /var/lib/mysql
  • Dừng MySQL với :
    sudo /etc/init.d/mysql stop.
  • Tạo một bản sao lưu của thư mục dữ liệu MySQL hiện tại (sạch) với :
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Sau đó sao chép các thư mục dữ liệu cũ từ ổ đĩa cũ với:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    nơi mountpointlà đường dẫn đến gắn kết.
  • Bây giờ khởi động lại MySQL với:
    sudo /etc/init.d/mysql start

Nếu may mắn, MySQL sẽ khởi động lại và bạn nên lấy lại cơ sở dữ liệu cũ của mình.

Nguồn mb_webguy@ubuntuforums.org


3
(!) điều này sẽ không hoạt động vì cấu hình vẫn đang trỏ đến vị trí cũ
Kết nối ADOC

4

Giải pháp 1:

  1. Trước hết, hãy sao lưu dữ liệu của bạn bằng cách sử dụng `mysqldump.
  2. Nếu bạn cài đặt Máy chủ Mysql từ gói chính thức, bạn có thể thực hiện bằng cách chạy chương trình MySQLINstanceConfig.exe từ thư mục bin của máy chủ của bạn.
  3. Nhập dữ liệu

MySQLINstanceConfig.exe

Giải pháp thứ hai (không được khuyến nghị, nhưng hoạt động trên cùng một máy)

  1. Dừng máy chủ Mysql.
  2. Sao chép dữ liệu từ thư mục dữ liệu của bạn vào thư mục mới của bạn
  3. Mở tệp my.cnf (Trong trường hợp của tôi "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. tìm hàng như datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" và thay đổi đường dẫn đến vị trí mới của bạn
  5. Bắt đầu máy chủ của bạn

Kể từ phiên bản 5.6 MySQLInstanceConfig.exe không còn được phân phối. Chức năng này đang được thay thế bởi trình cài đặt. http://bugs.mysql.com/orms.php?id=66306


Có chương trình Linux tương đương để di chuyển dữ liệu không
Ron Piggott

Sau khi di chuyển dữ liệu theo cách tiếp cận thứ hai, tôi không thể khởi động MariaDB (phiên bản 5.5). Sau khi cấp cho người dùng dịch vụ quyền truy cập vào datadir mới, dịch vụ sẽ bắt đầu và tôi sẽ kết nối với DB. Tuy nhiên, việc truy cập bất kỳ bảng nào vẫn thất bại : [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Làm thế nào tôi có thể đảm bảo các quyền được thiết lập chính xác?
Bram

2

Đối với Windows, kể từ Trình cài đặt MySQL 1.4.6 (2015-04-07) , vị trí dữ liệu có thể được chỉ định trong khóa đăng ký chỉ định vị trí của my.initệp, do đó, nếu dữ liệu ban đầu được cài đặt ở vị trí không mặc định các my.initập tin sẽ không được trong C:\ProgramData\MySQL\MySQL Server x.x\.

Vị trí của các giá trị đăng ký là (ít nhất là từ MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationlà một REG_SZđiểm trỏ đến thư mục chứa các tệp ứng dụng MySQL; theo mặc định:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationlà một REG_SZđiểm trỏ đến thư mục my.iniđược đặt; theo mặc định cũng:C:\Program Files\MySQL\MySQL Server x.x\

Ngoài ra, my.iniđường dẫn tệp được bao gồm trong lệnh dịch vụ dưới khóa đăng ký này: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXtrong ImagePath REG_EXPAND_SZgiá trị.

Giá trị mặc định của chuỗi này là: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Vì vậy, điểm mấu chốt là để di chuyển các tệp dữ liệu trong kịch bản này, bạn phải làm theo các bước được đăng bởi @ITC Nhiệm với một số bổ sung.

Dưới đây là các bước đầy đủ:

  1. Tắt máy mysql.
  2. Tra cứu DataLocationgiá trị đăng ký ở trên để tìm my.inivị trí tệp hiện tại và nếu bạn cũng muốn di chuyển my.initệp cập nhật DataLocationđường dẫn và di chuyển my.initệp sang đường dẫn mới này.
  3. Nếu bạn đang thay đổi vị trí của my.initệp, bạn cần cập nhật đường dẫn trong khóa đăng ký lệnh dịch vụ được liệt kê ở trên.
  4. Mở my.initệp, xác định vị trí datadirtham số. Di chuyển các tệp từ datadirđường dẫn này đến đường dẫn mà bạn muốn dữ liệu cư trú, sau đó cũng cập nhật datadirtham số với đường dẫn mới này.
  5. Bắt đầu mysql.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.