Thứ năm, 27/02/2014 | 00:00 GMT+7

Cách di chuyển server Linux Phần 2 - Truyền dữ liệu cốt lõi

Có nhiều tình huống mà bạn có thể phải di chuyển dữ liệu và các yêu cầu hoạt động của bạn từ server này sang server khác. Bạn có thể cần triển khai các giải pháp của bạn trong một trung tâm dữ liệu mới, nâng cấp lên một máy lớn hơn hoặc chuyển đổi sang phần cứng mới hoặc nhà cung cấp VPS mới.


Dù lý do của bạn là gì, có nhiều cân nhắc khác nhau mà bạn nên thực hiện khi di chuyển từ hệ thống này sang hệ thống khác. Việc nhận các cấu hình tương đương về chức năng có thể khó khăn nếu bạn không sử dụng giải pháp quản lý cấu hình như Chef, Puppet hoặc Ansible. Bạn không chỉ cần truyền dữ liệu mà còn phải cấu hình các dịch vụ của bạn để hoạt động theo cách tương tự trên một máy mới.

Trong bài trước, ta đã chuẩn bị cho các server của bạn để di chuyển dữ liệu . Đến đây, hệ thống đích và nguồn của bạn có thể giao tiếp (hệ thống đích phải có quyền truy cập SSH vào hệ thống nguồn). Bạn cũng nên có một danh sách các phần mềm và dịch vụ mà bạn cần chuyển, với đầy đủ số version của các thành phần quan trọng nhất.

Trong hướng dẫn này, ta sẽ tiếp tục nơi ta đã dừng lại và bắt đầu di chuyển thực tế sang server mới của ta .

Chiến lược chung


Trước khi bắt đầu, ta nên vạch ra chiến lược chung để di chuyển dữ liệu từ nguồn sang hệ thống đích của ta .

Ý tưởng chung là chuyển tất cả các phần thông tin có liên quan trong khi vẫn để hệ thống đích sạch nhất có thể.

Một số chiến lược di chuyển chỉ đơn giản là trỏ rsync vào folder root của máy nguồn và sau đó chuyển vào một số dòng loại trừ để yêu cầu quá trình không bao gồm các file mà ta biết là sẽ gây ra xung đột. Ta sẽ không áp dụng cách tiếp cận này. Việc di chuyển những phần lớn dữ liệu hệ thống sang một hệ điều hành đang hoạt động có thể gây ra kết quả không thể đoán trước và ta muốn kết thúc với một hệ thống ổn định.

Không chỉ vậy, ta không muốn làm xáo trộn hệ thống mới của bạn với các file không còn phù hợp với các yêu cầu hoạt động của ta nữa. Điều này sẽ tốn nhiều công sức hơn, nhưng nó sẽ dẫn đến một cấu hình thân thiện và hữu dụng hơn khi ta hoàn thành.

Vì vậy, ta sẽ không chỉ di chuyển mọi file không xung đột có thể có sang hệ thống mới nếu nó không liên quan đến những gì ta hy vọng đạt được. Thay vào đó, ta sẽ quyết định chính xác dữ liệu nào cần được di chuyển như một yêu cầu chức năng cho mục đích của ta . Điều này bao gồm dữ liệu và chi tiết cấu hình, user , công việc, v.v.

Tạo tập lệnh di chuyển


Ta sẽ đưa ra những quyết định này khi ta tiếp tục và thêm chúng vào tập lệnh di chuyển.

Điều này sẽ cung cấp cho bạn một số lợi thế quan trọng. Nó sẽ cho phép bạn dễ dàng chạy lại các lệnh nếu có sự cố hoặc để nắm bắt các thay đổi dữ liệu trên hệ thống nguồn sau lần chạy đầu tiên. Nó sẽ tự ghi lại các lệnh bạn đã sử dụng để chuyển dữ liệu. Nó cũng sẽ cho phép server nguồn của bạn tiếp tục sang mục tiếp theo của quá trình truyền dữ liệu mà không cần sự tương tác của user .

Khi bạn viết script, bạn có thể chạy nó nhiều lần, tinh chỉnh nó khi bạn tiếp tục. Hầu hết các file sẽ được chuyển qua rsync , điều này sẽ chỉ chuyển các thay đổi của file . Nếu các phần truyền dữ liệu khác mất nhiều thời gian, bạn có thể comment chúng một cách an toàn cho đến khi bạn chắc chắn rằng tập lệnh của bạn ở trạng thái cuối cùng.

Bài viết này chủ yếu sẽ là hướng dẫn về những gì cần thêm vào tập lệnh di chuyển của bạn để làm cho quá trình di chuyển của bạn thành công. Nó sẽ cung cấp các hướng dẫn chung thường xuyên hơn các chi tiết cụ thể.

Ta có thể tạo một tập lệnh di chuyển đơn giản trong folder chính của user root trên hệ thống đích. Ta sẽ sử dụng điều này để tự động hóa một phần lớn các hoạt động di chuyển dữ liệu của bạn :

nano /root/sync.sh 

Bên trong file , hãy bắt đầu bằng tiêu đề tập lệnh chuẩn ( ta sẽ sử dụng “sh” để làm cho điều này dễ di động hơn, nhưng bạn có thể sử dụng “bash” nếu bạn muốn sử dụng các tính năng mở rộng mà nó cung cấp và có sẵn trên cả hai hệ thống):

#!/bin/sh 

Ta sẽ thêm vào điều này khi ta tiếp tục. Tuy nhiên, bây giờ ta hãy thoát khỏi file nhanh chóng để ta có thể thực thi nó.

Quay lại dòng lệnh, làm cho tập lệnh có thể thực thi được bằng lệnh :

chmod 700 /root/sync.sh 

Để chạy tập lệnh bất kỳ lúc nào, bây giờ bạn có thể gọi nó bằng cách sử dụng đường dẫn tuyệt đối của nó:

/root/sync.sh 

Hoặc đường dẫn tương đối của nó:

cd /root ./sync.sh 

Bạn nên kiểm tra script thường xuyên khi thực hiện để xem có vấn đề gì xảy ra hay không.

Cài đặt các chương trình và dịch vụ cần thiết


Bước đầu tiên mà ta cần thực hiện trước khi tự động hóa là có được các gói mà bạn cần để cài đặt và chạy các dịch vụ này. Ta cũng có thể thêm phần này vào tập lệnh, nhưng sẽ dễ dàng hơn nếu chỉ làm phần này bằng tay và ghi lại nó trong tập lệnh của ta .

Chi tiết cấu hình sẽ có sau. Hiện tại, ta cần cài đặt các ứng dụng này và cấu hình quyền truy cập cơ bản để có thể làm việc. Bạn nên có một danh sách các gói và version bắt buộc từ máy nguồn của bạn .

Thêm repository bổ sung nếu cần thiết


Trước khi ta cố gắng tải các version này từ trình quản lý gói của bạn , ta nên kiểm tra hệ thống nguồn của bạn để xem có bất kỳ repository bổ sung nào đã được thêm vào hay không.

Trên máy Ubuntu / Debian, bạn có thể xem liệu các nguồn phần mềm thay thế có trên hệ thống nguồn của bạn hay không bằng cách điều tra một số vị trí:

nano /etc/apt/sources.list 

Đây là danh sách nguồn chính. Danh sách nguồn bổ sung có thể được chứa trong folder sources.list.d :

ls /etc/apt/sources.list.d 

Nếu bạn cần, hãy thêm các nguồn giống nhau vào máy mục tiêu của bạn để có các version gói giống nhau.

Trên hệ thống dựa trên RHEL, bạn có thể sử dụng yum để liệt kê các repository được cấu hình cho server :

yum repolist enabled 

Sau đó, bạn có thể thêm các repository bổ sung vào hệ thống mục tiêu của bạn bằng lệnh :

yum-config-manager --add-repo repo_url 

Nếu bạn thực hiện bất kỳ thay đổi nào đối với danh sách nguồn của bạn , hãy thêm chúng dưới dạng comment ở đầu tập lệnh di chuyển của bạn. Bằng cách này, nếu bạn phải bắt đầu từ một cài đặt mới, bạn sẽ biết những thủ tục nào cần phải xảy ra trước khi thử chuyển đổi mới.

nano /root/sync.sh 
#!/bin/sh  ############# # Prep Steps #############  # Add additional repositories to /etc/apt/source.list #       deb http://example.repo.com/linux/deb stable main non-free 

Lưu và đóng file .

Chỉ định Ràng buộc Phiên bản và Cài đặt


Đến đây bạn đã cập nhật repository để phù hợp với máy nguồn của bạn.

Trên máy Ubuntu / Debian, bây giờ bạn có thể cố gắng cài đặt version phần mềm bạn cần trên máy mục tiêu của bạn bằng lệnh :

apt-get update apt-get install package_name=version_number 

Nhiều lần, nếu version của gói cũ hơn, nó sẽ bị xóa khỏi repository chính thức. Trong trường hợp này, bạn có thể phải tìm kiếm version cũ hơn của file .deb và các file phụ thuộc của chúng và cài đặt chúng theo cách thủ công với:

dpkg -i package.deb 

Điều này là cần thiết nếu việc khớp version phần mềm là quan trọng đối với ứng dụng của bạn. Nếu không, bạn chỉ có thể cài đặt thường xuyên với trình quản lý gói của bạn .

Đối với các hệ thống dựa trên RHEL, bạn có thể cài đặt các version phần mềm cụ thể bằng lệnh :

yum install package_name-version_number 

Nếu bạn cần tìm kiếm các file rpm đã bị xóa khỏi repository để ủng hộ các version mới hơn, bạn có thể cài đặt chúng bằng yum sau khi bạn tìm thấy chúng như sau:

yum install package_name.rpm 

Cài đặt bất kỳ phần mềm liên quan nào có sẵn từ trình quản lý gói của bạn vào hệ thống mới. Trong trường hợp phần mềm bạn cần không có sẵn thông qua repository hoặc các phương tiện dễ dàng khác và đã được cài đặt bằng nguồn hoặc được lấy dưới dạng file binary từ trang web của dự án, bạn sẽ phải sao chép quá trình này trên hệ thống đích.

, hãy theo dõi những thao tác bạn đang thực hiện ở đây. Ta sẽ bao gồm chúng dưới dạng comment trong tập lệnh mà ta đang tạo:

nano /root/sync.sh 
#!/bin/sh  ############# # Prep Steps #############  # Add additional repositories to /etc/apt/source.list #       deb http://example.repo.com/linux/deb stable main non-free  # Install necessary software and versions #       apt-get update #       apt-get install apache2=2.2.22-1ubuntu1.4 mysql-server=5.5.35-0ubuntu0.12.04.2 libapache2-mod-auth-mysql=4.3.9-13ubuntu3 php5-mysql=5.3.10-1ubuntu3.9 php5=5.3.10-1ubuntu3.9 libapache2-mod-php5=5.3.10-1ubuntu3.9 php5-mcrypt=5.3.5-0ubuntu1 

, lưu file .

Bắt đầu truyền dữ liệu


Việc chuyển dữ liệu thực tế có thể dễ dàng là phần tốn nhiều thời gian nhất của quá trình di chuyển. Nếu bạn đang di chuyển một server có nhiều dữ liệu, bạn nên bắt đầu chuyển dữ liệu sớm hơn là muộn hơn. Bạn có thể tinh chỉnh các lệnh của bạn sau này và rsync chỉ chuyển sự khác biệt giữa các file , vì vậy đây không phải là vấn đề.

Ta có thể bắt đầu bằng cách bắt đầu rsync của bất kỳ phần lớn dữ liệu user nào cần được chuyển. Trong ngữ cảnh này, ta đang sử dụng dữ liệu “ user ” để tham chiếu đến bất kỳ dữ liệu quan trọng nào mà server của bạn cần ngoại trừ dữ liệu database . Điều này bao gồm dữ liệu trang web, folder nhà của user , file cấu hình, v.v.

Cài đặt và sử dụng màn hình


Để làm điều này một cách hiệu quả, ta sẽ muốn bắt đầu một phiên screen trên hệ thống đích của ta mà bạn có thể tiếp tục chạy trong khi tiếp tục làm việc.

Bạn có thể cài đặt screen bằng trình quản lý gói của phân phối của bạn. Trên Ubuntu hoặc Debian, có thể chạy lệnh:

apt-get update apt-get install screen 

Bạn có thể tìm hiểu cách vận hành màn hình bằng cách xem liên kết này.

Về cơ bản, bạn cần bắt đầu một phiên màn hình mới như thế này trên server mục tiêu của bạn :

screen 

Một phiên màn hình sẽ bắt đầu và đưa bạn trở lại dòng lệnh. Nó có thể trông giống như không có gì xảy ra, nhưng bây giờ bạn đang vận hành một terminal được chứa trong chương trình màn hình.

Tất cả công việc mà ta sẽ thực hiện trong quá trình di chuyển của bạn sẽ diễn ra trong một phiên màn hình. Điều này cho phép ta dễ dàng chuyển đổi giữa nhiều phiên terminal và cho phép ta tiếp tục nơi ta đã dừng lại nếu ta phải rời khỏi terminal local hoặc ta bị ngắt kết nối.

Bạn có thể ra lệnh tại đây và sau đó ngắt kết nối terminal , cho phép nó tiếp tục chạy. Bạn có thể ngắt kết nối bất kỳ lúc nào bằng lệnh :

CTRL-a d 

Bạn có thể kết nối lại sau bằng lệnh :

screen -r 

Nếu bạn cần tạo một cửa sổ terminal khác trong phiên màn hình của bạn , hãy nhập:

CTRL-a c 

Để chuyển đổi giữa các cửa sổ, hãy nhập hai cái này để chuyển qua các cửa sổ theo một trong hai hướng:

CTRL-a n CTRL-a p 

Hủy một cửa sổ bằng lệnh :

CTRL-a k 

Bắt đầu chuyển file sớm


Bên trong phiên màn hình của bạn, hãy bắt đầu bất kỳ tác vụ rsync nào mà bạn dự đoán sẽ mất nhiều thời gian để hoàn thành. Quy mô thời gian ở đây phụ thuộc vào lượng dữ liệu quan trọng (không phải database ) mà bạn phải chuyển.

Lệnh chung bạn muốn sử dụng là:

rsync -avz --progress source_server:/path/to/directory/to/transfer /path/to/local/directory 

Bạn có thể tìm hiểu thêm về cách tạo các lệnh rsync thích hợp bằng cách đọc bài viết này . Bạn có thể phải tạo các folder dẫn đến đích để lệnh thực thi đúng cách.

Khi bạn chạy phiên rsync của bạn , hãy tạo một cửa sổ màn hình mới và chuyển sang cửa sổ đó bằng lệnh :

CTRL-a c 

Kiểm tra lại định kỳ để xem quá trình đồng bộ hóa đã hoàn tất chưa và có thể bắt đầu đồng bộ hóa tiếp theo bằng lệnh :

CTRL-a p 

Điều chỉnh tập lệnh để đồng bộ hóa dữ liệu và file


Bây giờ, bạn nên thêm cùng một lệnh rsync mà bạn vừa thực thi vào tập lệnh bạn đang tạo. Thêm bất kỳ lệnh rsync bổ sung nào mà bạn cần để đưa tất cả dữ liệu user và ứng dụng quan trọng của bạn lên server mục tiêu của bạn.

Ta sẽ không lo lắng về các file database tại thời điểm này, vì có nhiều phương pháp tốt hơn để chuyển các file đó. Ta sẽ thảo luận về những điều này trong phần sau.

#!/bin/sh  ############# # Prep Steps #############  # Add additional repositories to /etc/apt/source.list #       deb http://example.repo.com/linux/deb stable main non-free  # Install necessary software and versions #       apt-get update #       apt-get install apache2=2.2.22-1ubuntu1.4 mysql-server=5.5.35-0ubuntu0.12.04.2 libapache2-mod-auth-mysql=4.3.9-13ubuntu3 php5-mysql=5.3.10-1ubuntu3.9 php5=5.3.10-1ubuntu3.9 libapache2-mod-php5=5.3.10-1ubuntu3.9 php5-mcrypt=5.3.5-0ubuntu1  ############# # File Transfer #############   # Rsync web root rsync -avz --progress 111.222.333.444:/var/www/site1 /var/www/  # Rsync the apache configuration files rsync -avz --progress 111.222.333.444:/etc/apache2/* /etc/apache2/  # Rsync php configuration rsync -avz --progress 111.222.333.444:/etc/php5/* /etc/php5/  # Rsync mysql config files rsync -avz --progress 111.222.333.444:/etc/mysql/* /etc/mysql/  # Rsync home directories . . . 

Bạn nên thêm bất kỳ lệnh rsync nào mà bạn cần để chuyển dữ liệu và cấu hình của bạn ra khỏi hệ thống nguồn.

Điều này không cần phải hoàn hảo, vì ta luôn có thể quay lại và điều chỉnh nó, vì vậy hãy cố gắng hết sức. Nếu bạn không chắc mình có cần thứ gì đó ngay bây giờ hay không, hãy tạm thời bỏ qua và chỉ thêm comment .

Ta sẽ chạy tập lệnh nhiều lần, cho phép bạn sửa đổi tập lệnh để chọn các file bổ sung nếu bạn cần chúng. Thận trọng với những gì bạn chuyển sẽ giữ cho hệ thống mục tiêu của bạn sạch sẽ các file không cần thiết.

Ta đang cố gắng tái tạo các chức năng và dữ liệu của hệ thống ban đầu, và không nhất thiết phải là mớ hỗn độn.

Sửa đổi file cấu hình


Mặc dù nhiều phần mềm sẽ hoạt động hoàn toàn giống nhau sau khi chuyển dữ liệu và chi tiết cấu hình liên quan từ server root , một số cấu hình có thể cần được sửa đổi.

Điều này gây ra một vấn đề nhỏ với tập lệnh đồng bộ hóa của ta . Nếu ta chạy tập lệnh để đồng bộ hóa dữ liệu của bạn và sau đó sửa đổi các giá trị để phản ánh thông tin chính xác cho ngôi nhà mới của nó, những thay đổi này sẽ bị xóa vào lần tiếp theo ta chạy lại tập lệnh.

Lưu ý , ta có thể sẽ chạy tập lệnh rsync nhiều lần để bắt kịp các thay đổi đã xảy ra trên hệ thống nguồn kể từ khi ta bắt đầu di chuyển. Hệ thống nguồn có thể thay đổi đáng kể trong quá trình di chuyển và thử nghiệm server mới.

Có hai con đường chung mà ta có thể thực hiện để tránh xóa sổ những thay đổi của bạn . Đầu tiên, tôi sẽ thảo luận về cách dễ dàng và theo dõi những gì tôi cho là giải pháp mạnh mẽ hơn.

Con đường nhanh chóng và bẩn thỉu


Cách dễ dàng để giải quyết vấn đề này là sửa đổi các file nếu cần trên hệ thống đích sau hoạt động đồng bộ đầu tiên. Sau đó, bạn có thể sửa đổi các lệnh rsync trong tập lệnh của bạn để loại trừ các file mà bạn đã điều chỉnh.

Điều này sẽ khiến rsync không đồng bộ hóa các file này trong các lần chạy tiếp theo, điều này sẽ overrides lại các thay đổi bằng các file root .

Điều này có thể được thực hiện bằng cách comment lệnh đồng bộ trước đó và thêm lệnh mới với một số câu lệnh loại trừ như sau:

# rsync -avz --progress 111.222.333.444:/etc/mysql/* /etc/mysql/ rsync -avz --progress --exclude='my.cnf' 111.222.333.444:/etc/mysql/* /etc/mysql/ 

Bạn nên thêm các dòng loại trừ cho các file nào trong đặc tả folder rsync đã được sửa đổi. Bạn cũng nên thêm comment về những gì đã được sửa đổi trong file , trong trường hợp bạn thực sự cần tạo lại nó bất cứ lúc nào.

# Adding exclude rule.  Changed socket to '/mysqld/mysqld.sock' # rsync -avz --progress 111.222.333.444:/etc/mysql/* /etc/mysql/ rsync -avz --progress --exclude='my.cnf' 111.222.333.444:/etc/mysql/* /etc/mysql/ 

Trong khi phương pháp trên giải quyết vấn đề theo một số cách, nó thực sự chỉ là tránh vấn đề thay vì giải quyết nó. Ta có thể làm tốt hơn.

Các hệ thống Linux bao gồm nhiều trình điều khiển văn bản rất hữu ích cho việc viết kịch bản. Trên thực tế, hầu hết các chương trình này được tạo ra đặc biệt để cho phép sử dụng chúng trong môi trường tập lệnh.

Hai tiện ích hữu ích nhất cho tác vụ này là sedawk . Bạn có thể nhấp vào đây để tìm hiểu cách sử dụng trình soạn thảo dòng sed và xem liên kết này để xem cách sử dụng awk để thao tác văn bản .

Ý tưởng cơ bản là ta có thể viết kịch bản cho bất kỳ thay đổi nào mà ta sẽ thực hiện theo cách thủ công, để chính tập lệnh sẽ thực hiện bất kỳ sửa đổi cần thiết nào.

Vì vậy, trong ví dụ trước, thay vì thêm một loại trừ cho file mà ta đã sửa đổi sau khi thực tế, ta có thể giữ lệnh rsync đó và thực hiện thay đổi đó tự động bằng cách sử dụng lệnh sed:

rsync -avz --progress 111.222.333.444:/etc/mysql/* /etc/mysql/  # Change socket to '/mysqld/mysqld.sock' sed -i 's_/var/run/mysqld/mysqld.sock_/mysqld/mysqld.sock_g' /etc/mysql/my.cnf 

Thao tác này sẽ thay đổi vị trí socket trong mọi trường hợp của file , mỗi khi file được chuyển. Đảm bảo rằng các dòng thao tác văn bản nằm sau các dòng đồng bộ hóa file mà chúng hoạt động trên đó.

Theo cách tương tự, ta có thể dễ dàng thay đổi tập lệnh được thực hiện đối với file dữ liệu dạng bảng bằng awk. Ví dụ: file /etc/shadow được chia thành các tab được phân tách bằng ký tự dấu hai chấm (:). Ta có thể sử dụng awk để xóa password root đã băm khỏi cột thứ hai như sau:

awk 'BEGIN { OFS=FS=":"; } $1=="root" { $2=""; } { print; }' /etc/shadow > shadow.tmp && mv shadow.tmp /etc/shadow && rm shadow.tmp 

Lệnh này cho awk biết rằng cả dấu phân cách root và kết quả phải là “:” thay vì khoảng trắng mặc định. Sau đó, ta chỉ định rằng nếu cột 1 bằng "gốc", thì cột 2 phải được đặt thành một chuỗi trống.

Cho đến các version awk khá mới, không có tùy chọn để chỉnh sửa tại chỗ, vì vậy ở đây ta đang ghi file này vào file tạm thời, overrides file root , sau đó xóa file tạm thời.

Ta nên cố gắng hết sức để viết kịch bản cho tất cả các thay đổi cần thiết trong file của bạn . Bằng cách này, sẽ dễ dàng sử dụng lại một số dòng từ tập lệnh di chuyển của ta cho các di chuyển khác, với một số sửa đổi dễ dàng.

Một cách dễ dàng để làm điều này là xem qua tập lệnh của bạn và thêm comment vào tập lệnh của bạn cho mỗi file cần được sửa đổi. Sau khi bạn biết yêu cầu của bạn , hãy quay lại và thêm các lệnh sẽ thực hiện các thao tác cần thiết.

Thêm những thay đổi này vào tập lệnh của bạn và tiếp tục.

Kết xuất và chuyển các file Cơ sở dữ liệu


Nếu hệ thống của bạn đang sử dụng hệ quản trị database , bạn cần kết xuất database bằng các phương pháp có sẵn cho hệ thống của bạn . Điều này sẽ khác nhau tùy thuộc vào DBMS bạn sử dụng (MySQL, MariaDB, PostgreSQL, v.v.).

Đối với hệ thống MySQL thông thường, bạn có thể xuất database bằng cách sử dụng thông tin như sau:

mysqldump -Q -q -e -R --add-drop-table -A -u root -proot_password > /root/database_name.db 

Các tùy chọn kết xuất MySQL phụ thuộc nhiều vào ngữ cảnh, vì vậy bạn sẽ phải khám phá các tùy chọn nào phù hợp với hệ thống của bạn trước khi quyết định. Điều này nằm ngoài phạm vi của bài viết này.

Hãy xem xét những tùy chọn này sẽ làm gì cho kết xuất database .

  • -Q : Tùy chọn này được bật theo mặc định, nhưng được thêm vào đây để an toàn hơn. Nó đặt các định danh như tên database bên trong dấu ngoặc kép để tránh hiểu sai.
  • -q : Đây là viết tắt của nhanh chóng và có thể giúp tăng tốc độ đổ bàn lớn. Trên thực tế, nó đang yêu cầu MySQL hoạt động trên cơ sở từng hàng thay vì cố gắng xử lý toàn bộ bảng cùng một lúc.
  • -e : Điều này tạo ra các file kết xuất nhỏ hơn bằng cách group các câu lệnh chèn lại với nhau thay vì xử lý chúng riêng lẻ khi file kết xuất được tải.
  • -R : Điều này cho phép MySQL cũng kết xuất các quy trình được lưu trữ cùng với phần còn lại của dữ liệu.
  • –Add-drop-table : Tùy chọn này chỉ định rằng MySQL nên chạy lệnh DROP TABLE trước mỗi CREATE TABLE để tránh gặp lỗi nếu bảng đã tồn tại.
  • -A : Tùy chọn này chỉ định rằng MySQL nên kết xuất tất cả các database .
  • -u : Phần này nêu chi tiết user MySQL sẽ sử dụng cho kết nối. Điều này phải được root.
  • -p : Đây là password cần thiết cho account root MySQL.

Điều này sẽ tạo một kết xuất MySQL của dữ liệu MySQL của hệ thống nguồn trên hệ thống root . Ta có thể bọc nó trong một lệnh SSH để nó thực thi từ xa:

ssh root@111.222.333.444 'mysqldump -Q -q -e -R --add-drop-table -A -u root -proot_password > /root/database_name.db' 

Sau đó, ta có thể sử dụng lệnh rsync bình thường để truy xuất file khi nó kết thúc:

rsync -avz --progress 111.222.333.444:/root/database_name.db /root/ 

Sau đó, ta có thể nhập kết xuất vào version MySQL của hệ thống đích:

mysql -u root -proot_password < /root/database_name.db 

Một tùy chọn khác là cấu hình cài đặt sao chép giữa database root và database của hệ thống đích. Điều này có thể cho phép bạn chỉ cần swap cái chính và cái phụ khi bạn hoàn tất, để hoàn tất quá trình di chuyển database .

Điều này cũng nằm ngoài phạm vi của bài viết này, nhưng bạn có thể tìm thấy chi tiết về cách cấu hình bản sao master-slave tại đây.

Nếu bạn đi theo con đường này, hãy đảm bảo thêm comment vào tập lệnh chỉ cấu hình của bạn. Nếu có một vấn đề lớn, bạn muốn có thông tin tốt về những gì bạn đã làm để có thể tránh nó trong lần thử thứ hai.

Bước tiếp theo


Đến đây bạn sẽ có hầu hết dữ liệu trên hệ thống đích của bạn hoặc đang trong quá trình chuyển. Điều này sẽ thực hiện được phần lớn quá trình truyền dữ liệu thực tế, nhưng ta vẫn cần thực hiện khá nhiều cấu hình trên hệ thống của bạn để phù hợp với máy trước của ta .


Tags:

Các tin liên quan

Cách di chuyển server Linux Phần 1 - Chuẩn bị hệ thống
2014-02-27
Cách di chuyển server Linux Phần 3 - Các bước cuối cùng
2014-02-27
Cách cài đặt và sử dụng LinuxBrew trên VPS Linux
2014-02-14
cách sử dụng role và môi trường trong Chef để kiểm soát cấu hình server
2014-02-04
Cách cài đặt Chef Server, Workstation và Client trên Phiên bản VPS Ubuntu
2014-01-30
Giới thiệu về Chuyển hướng I / O Linux
2014-01-23
Giới thiệu về Chuyển hướng I / O Linux
2014-01-23
Cách thiết lập server email Postfix với Dovecot: Dynamic Maildirs và LMTP
2013-12-17
Cách xem và cấu hình log Linux trên Ubuntu và Centos
2013-12-17
Cách cài đặt Linux Socket Monitor (LSM) trên CentOS 6.4
2013-11-26