di chuyển thư mục dữ liệu và ổ đĩa mysql centos


11

tôi cần di chuyển dữ liệu sang một thư mục khác và lái xe trên máy chủ cent os db của tôi.

tôi đã thêm ổ cứng mới (vì chúng tôi đã hết dung lượng),

Tôi có 1tb ổ cứng và tôi có 2tb mới, tôi muốn đưa dữ liệu vào cùng một máy chủ (máy chủ chuyên dụng được lưu trữ trong trung tâm dữ liệu)

Tôi muốn biết cách dễ dàng để di chuyển dữ liệu mà không mất dữ liệu là gì?

hiện tại tôi có dữ liệu nằm ở: /var/lib/mysql/trên cent os.mysql version is 5.1


máy chủ mysql của bạn có thể bị tắt trong quá trình kết nối không?
Sách Zeus

không thích, nhưng nếu không có cách nào khác thì có

bạn đang sử dụng innodb?

@abdelsaid không, tôi đang sử dụng myisam

Tôi đã cố gắng làm điều tương tự trong CENTOS 6.4 và centos.org/forums/viewtopic.php?t=6732 liên kết này hoạt động hoàn hảo!

Câu trả lời:


13

Bước 1

Trước tiên hãy thiết lập ổ đĩa của bạn (giả sử nó được gắn và thiết lập chính xác trong fstab) và tạo thư mục MySQL mới:

sudo mkdir /path/to/new/mysql

Đảm bảo thư mục này có quyền:

chown -R mysql:mysql /data/mysql

Bây giờ ở đây bạn có thể tắt dịch vụ trong khi sao chép dữ liệu. Sao chép dữ liệu từ thư mục dữ liệu hiện tại sang thư mục dữ liệu mới, ví dụ :.

sudo cp -R /var/lib/mysql/* /path/to/new/mysql/

hoặc bạn có thể sao chép riêng từng cơ sở dữ liệu nếu bạn thích hoặc nếu bạn cảm thấy an toàn, bạn có thể di chuyển thư mục bằng mvlệnh.

Bước 2

Bạn có thể thay đổi vị trí của dữ liệu MySQL của bạn trong my.cnf. Nếu bạn không biết tệp này ở đâu, bạn có thể chạy lệnh:

locate my.cnf

Điều này sẽ cung cấp cho bạn đường dẫn của vị trí của my.cnf. Sau đó chỉnh sửa tệp:

sudo vi /etc/mysql/my.cnf (tất nhiên bạn phải thay thế bằng con đường của bạn)

Bây giờ hãy tìm datadir = /var/lib/mysqlvà cập nhật datadir = /path/to/new/mysql.

Sau đó khởi động lại mysql

sudo /etc/init.d/mysqld restart

Sau vài ngày / tuần, nếu bạn cảm thấy thoải mái, bạn có thể xóa thư mục cũ (/ var / lib / mysql) hoặc sao lưu mọi thứ bên trong.


anh ta không muốn thời gian chết hoặc ít nhất là tối thiểu. cp -R sẽ mất mãi mãi. và thay đổi thư mục có thể dẫn đến mất dữ liệu trong trường hợp khách hàng trực tuyến.

3
anh nói : prefereble no, but if there's no other way then yes. Ngoài ra, nếu bạn có nhiều phần chèn trong một bảng mà bạn hiện đang sao chép bằng MyISAM (khóa bảng), bạn có thể có lỗi hoặc dữ liệu không được sao chép.
Sách Zeus

có nhiều cách khác :)

1
@abdelsaid bạn có thể cho tôi biết một cách khác?
Pat R Ellery

Tôi đã thay thế toàn bộ wamp \ bin \ mysql \ mysql5.5.24 Nhưng nó đang hiển thị cơ sở dữ liệu chứ không phải bảng
KarSho

0

Nếu bạn không muốn tắt máy trong quá trình di chuyển, tôi sẽ thiết lập bản sao chính chủ để tạo môi trường chroot trên 2tb với mysql (cùng phiên bản) trong đó, khi bật đồng bộ, tắt 1tb và bạn có môi trường chroot hoạt động.

Nếu bạn không muốn sử dụng môi trường chroot, hãy thay đổi my.cnf (không phải chroot) để chỉ đến nơi bạn muốn lưu trữ tệp mysql của mình trên đĩa 2tb và vô hiệu hóa sao chép. Sau đó tắt môi trường chroot và di chuyển dữ liệu đến những gì bạn có trong my.cnf, việc di chuyển ở đây sẽ không mất một giây vì nó nằm trên cùng một đĩa. Khởi động lại mysql.

Điều này hơi phức tạp để làm, bạn có thể chơi với điều này trong môi trường vm địa phương đầu tiên.


6
vâng nó phức tạp đối với tôi Tôi không hiểu chroot và sao chép là phức tạp đối với tôi.

sau đó bạn sẽ có thời gian chết và những gì Book Of Zeus mô tả có thể hoạt động.

-2
[root@v ~]# service mysqld stop
Stopping mysqld:                                           [  OK  ]

[root@v ~]# mkdir /home/info

[root@v ~]# cp -r /var/lib/mysql/ /home/info
[root@v ~]# chown -R mysql:mysql /home/info/mysql
[root@v ~]# chown -R mysql:mysql /home/info/mysql/*
[root@v ~]# chcon -R -t mysqld_db_t /home/info/mysql
[root@v ~]# vi /etc/my.cnf

[mysqld]
datadir=/home/info/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


[root@v ~]# service mysqld restart
Stopping mysqld:                                           [  OK  ]
Starting mysqld:                                           [  OK  ]
[root@v ~]#

Bạn có phiền để thêm một lời giải thích về cách điều này giải quyết vấn đề?
dezso 8/07/2015
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.