Thứ năm, 22/05/2014 | 00:00 GMT+7

Cách di chuyển database MySQL sang server mới trên Ubuntu 14.04

Nếu bạn đang chạy một ứng dụng web và database , chẳng hạn như LAMP , trên một VPS duy nhất, bạn có thể gặp phải tình huống muốn mở rộng môi trường của bạn để xử lý nhiều lưu lượng hơn. Một cách tốt để bắt đầu với việc mở rộng môi trường của bạn là di chuyển server database của bạn sang một VPS khác, riêng biệt trong cùng một trung tâm dữ liệu.

Trong hướng dẫn này, ta sẽ thảo luận về cách di chuyển database MySQL hiện có của bạn ra khỏi server ứng dụng của bạn. Bởi vì mọi ứng dụng đều có các câu hỏi cấu hình riêng, liên quan đến các kết nối và tương tác database , ta sẽ trình bày quá trình di chuyển với WordPress nhưng bạn có thể điều chỉnh hướng dẫn này cho bất kỳ ứng dụng nào khác sử dụng MySQL làm database của nó.

Lưu ý: Nếu bạn muốn thực hiện cài đặt ban đầu cho ứng dụng của bạn với một server database riêng biệt và do đó không có dữ liệu hiện có để bảo tồn, bạn nên đọc hướng dẫn được liên kết sau thay vì hướng dẫn này: Cách Cài đặt Database Từ xa để Tối ưu hóa Trang web Hiệu suất với MySQL .

Yêu cầu

Hướng dẫn này giả định bạn có một số ứng dụng web và database nằm trên cùng một server , như trong sơ đồ này:

LAMP Stack

Ví dụ về kiểu cài đặt này là: Cách cài đặt Wordpress trên Ubuntu 14.04

Từ bây giờ, ta sẽ gọi server hiện tại của bạn là đèn-1 .

Bạn cần tạo một VPS bổ sung, với mạng riêng, sẽ đóng role là server MySQL riêng biệt của bạn. Với mục đích tham khảo, ta sẽ gọi server này là mysql-1 .

Mục tiêu của ta

Khi ta hoàn thành hướng dẫn này, ta muốn lấy server lamp-1 ban đầu của bạn và di chuyển database của nó sang server mới, mysql-1 .

 Server  database  riêng biệt

Nhiệm vụ để đạt được mục tiêu của ta

Có hai nhiệm vụ chính mà ta cần hoàn thành để đạt được mục tiêu của bạn :

  1. Di chuyển database hiện có sang server mới
  2. Cấu hình lại ứng dụng để kết nối với database mới

Hãy bắt đầu di chuyển database hiện có!

Di chuyển database hiện có sang server mới

Tạo VPS MySQL mới

Bạn cần tạo VPS mới sẽ là server database MySQL mới của bạn – , vì mục đích tham khảo, ta sẽ gọi server này là mysql-1 . Tạo VPS mới ngay bây giờ. Nếu bạn không có cài đặt tiêu chuẩn mà bạn thực hiện trên server của bạn , bạn có thể cần làm theo các bước 1-4 của liên kết này: Cài đặt server ban đầu với Ubuntu 14.04

Cài đặt và cấu hình server MySQL

Sau khi bạn đã tạo database VPS mới của bạn , hãy kết nối với nó và cài đặt MySQL Server.

Trên mysql-1 , cập nhật apt bằng lệnh sau:

sudo apt-get update 

Sau đó chạy lệnh apt sau để cài đặt MySQL Server:

sudo apt-get install mysql-server 

Nhập password root cho cài đặt MySQL của bạn (bạn có thể sử dụng cùng một password với server MySQL root của bạn ). Sau đó chạy lệnh sau để tạo bảng database MySQL mặc định:

sudo mysql_install_db 

Tiếp theo, chạy lệnh sau để hoàn tất cài đặt MySQL:

sudo mysql_secure_installation 

Bạn có thể trả lời “no” để đặt lại password root (mà bạn vừa đặt) và Có cho mọi thứ khác.

Hiện tại, database MySQL mới của bạn được cấu hình để chỉ lắng nghe localhost hoặc 127.0.0.1. Ta cần cấu hình server database của bạn để lắng nghe địa chỉ IP riêng của nó để server ứng dụng của bạn, đèn-1 , có thể kết nối với nó. Mở cấu hình MySQL của bạn để chỉnh sửa:

sudo vi /etc/mysql/my.cnf 

Tìm dòng sau trong file cấu hình MySQL của bạn:

bind-address            = 127.0.0.1 

Thay thế 127.0.0.1 bằng địa chỉ IP riêng của server database của bạn:

<pre>
bind-address = <span class = “highlight”> mysql 1 private_IP </span>
</pre>

Nếu bạn có thay đổi cấu hình MySQL nào khác cần thực hiện (chẳng hạn như cài đặt không mặc định đã được cấu hình trên VPS đèn của bạn), hãy thực hiện ngay bây giờ, sau đó lưu và thoát. Để những thay đổi này có hiệu lực, hãy khởi động lại mysql bằng lệnh sau:

sudo service mysql restart 

Bây giờ server mới của bạn, mysql-1 đang lắng nghe lưu lượng truy cập MySQL trên địa chỉ IP riêng của nó. Tiếp theo, ta sẽ làm việc với việc xuất database ban đầu của bạn.

Xuất bản backup của database root

Theo tùy chọn , bạn có thể dừng server ứng dụng của bạn để ngăn việc cố gắng cập nhật database hiện có của bạn trong quá trình di chuyển. Dù sao thì database cũng sẽ bị khóa, nhưng đó là điều bạn có thể cần xem xét.

Tiếp theo, ta sẽ muốn xuất một bản backup của database MySQL ban đầu của bạn, sẽ được sử dụng để di chuyển sang database mới của ta . Ta cần khóa database để có thể thực hiện kết xuất dữ liệu. Lưu ý: Việc khóa database của bạn sẽ chặn các bản cập nhật cho nó, vì vậy ứng dụng của bạn sẽ chỉ có thể thực hiện các hoạt động chỉ đọc cho đến khi bạn hoàn thành phần còn lại của hướng dẫn này.

Trên đèn 1 , nhập console MySQL:

mysql -u root -p 

Để khóa database của bạn trên lamp-1 , hãy chạy lệnh này từ console MySQL:

FLUSH TABLES WITH READ LOCK; SET GLOBAL read_only = ON; EXIT 

Bây giờ, từ shell lệnh của bạn, hãy chạy lệnh sau để xuất bản backup database trên server MySQL root của bạn sang file có tên là dump.sql :

mysqldump --lock-all-tables -u root -p --all-databases > dump.sql 

Sao chép file dump.sql của bạn vào server database mới của bạn, mysql-1 , bằng cách sử dụng scp:

<pre>
scp dump.sql <span class = “highlight”> user </span> @ <span class = “highlight”> mysql 1 private_IP </span>: / tmp
</pre>

Vì ta sẽ không sử dụng MySQL trên server ban đầu của bạn nữa, ta có thể để nó bị khóa. Nếu bạn muốn mở khóa , hãy chạy các lệnh sau trong MySQL Console:

SET GLOBAL read_only = OFF; UNLOCK TABLES; 

Nhập database root vào server mới

Bây giờ ta sẽ muốn nhập database root của bạn vào mysql-1 để tất cả dữ liệu hiện có của bạn được bảo toàn.

Trên mysql-1 , chạy lệnh này để nhập file dump.sql :

mysql -u root -p < /tmp/dump.sql 

Đến đây, tất cả dữ liệu database ban đầu của bạn và user đã được sao chép sang server database mới của bạn, mysql-1 . Bước tiếp theo là tạo user database mới có cùng quyền với user ban đầu.

Tạo user để cho phép kết nối từ server ứng dụng web

Do cách MySQL quản lý user của nó (họ được xác định là cặp tên user và server nguồn), bạn sẽ phải tạo user mới với giá trị " server lưu trữ" trùng với địa chỉ IP riêng của server ứng dụng của bạn.

Nhập console MySQL:

mysql -u root -p 

Nhập câu lệnh sau để liệt kê tất cả user và server database :

<pre>
CHỌN user , server TỪ mysql.user;
</pre>
<pre>
Đầu ra mẫu:
+ —————— + ———– +
| user | server |
+ —————— + ———– +
| root | 127.0.0.1 |
| root | :: 1 |
| debian-sys-Maint | localhost |
| root | localhost |
| <span class = “highlight”> wordpressuser </span> | <span class = “highlight”> localhost </span> |
+ —————— + ———– +
5 hàng trong bộ (0,00 giây)
</pre>

Trong kết quả ví dụ của ta , ta thấy rằng có một user tên là wordpressuser và server nguồn của nó là localhost . Giả sử “wordpressuser” là user ứng dụng của ta . Bởi vì ứng dụng và database hiện nằm trên các server riêng biệt, ứng dụng sẽ không còn kết nối từ “localhost” nữa. Ta cần tạo một user mới có tên là wordpressuser với giá trị server của nó được đặt thành địa chỉ IP riêng của đèn server ứng dụng -1 , để cho phép ứng dụng kết nối.

Tạo user mới có cùng tên nhưng thay đổi server của nó thành địa chỉ IP riêng của server ứng dụng của bạn, đèn-1 . Ngoài ra, hãy đảm bảo password của bạn trùng với password ban đầu của user (thay thế tất cả các mục được đánh dấu bằng password của bạn ):

<pre>
TẠO NGƯỜI DÙNG '<span class = "highlight"> wordpressuser </span>' @ '<span class = "highlight"> lamp 1 private_IP </span>' IDENTIFIED BY '<span class = “highlight”> password </ span > ';
</pre>

Đối với mỗi user mà bạn muốn tạo lại, trong trường hợp của ta là wordpressuser , hãy chạy câu lệnh sau để xuất các quyền của nó ( ta cần chỉ định trong giây lát):

<pre>
HIỂN THỊ LỚP CHO <span class = “highlight”> wordpressuser </span> @localhost;
</pre>

Đầu ra mẫu:
Đặc quyền của  User

Hãy ghi chú lại (các) dòng sau khi GRANT USAGE ON *.* Vì bạn sẽ sử dụng version sửa đổi của nó để cấp quyền cho user mà bạn vừa tạo. Ví dụ: dựa trên các khoản tài trợ của user ban đầu, ta sẽ chạy câu lệnh sau để gán các khoản tài trợ tương tự cho user mới của ta (trong ví dụ này là wordpress là tên database ). Đây là bản sao của kết quả ở trên, nhưng localhost đã được thay đổi thành địa chỉ IP riêng của lamp-1:

<pre>
CẤP TẤT CẢ CÁC QUYỀN RIÊNG TƯ TRÊN <span class="highlight">wordpress</span> . * ĐẾN '<span class = “highlight”> wordpressuser </span>' @ '<span class = “highlight”> đèn 1 private_IP </ span> ';
</pre>

Bây giờ hãy hiển thị các quyền cho user mới của bạn:

<pre>
HIỂN THỊ LỚP CHO <span class = “highlight”> wordpressuser </span> @ <span class = “highlight”> đèn 1 private_IP </span>;
</pre>

Đầu ra mẫu:
Đặc quyền của  User

Sau khi bạn cập nhật xong các giá trị server lưu trữ cho user database thích hợp, hãy chạy các câu lệnh sau để đưa những thay đổi đó có hiệu lực và thoát khỏi console MySQL:

FLUSH PRIVILEGES; EXIT 

Bây giờ server database mới đã được di chuyển và cấu hình , bạn phải cập nhật cấu hình ứng dụng của bạn để kết nối với server database mới!

Cập nhật cấu hình ứng dụng

Bước cuối cùng là cập nhật cấu hình ứng dụng của bạn để trỏ đến server database mới của bạn, mysql-1 . Vị trí cấu hình của bạn sẽ khác nhau tùy thuộc vào ứng dụng của bạn và nơi bạn đã cài đặt nó, vì vậy ta sẽ sử dụng WordPress làm ví dụ.

Cấu hình mẫu WordPress

WordPress lưu trữ cấu hình kết nối database của nó trong một file có tên wp-config.php trong folder cài đặt của nó (ví dụ: ví dụ /var/www/html/ ).

Mở cấu hình WordPress:

sudo vi /var/www/html/wp-config.php 

Hãy tìm những dòng sau:

/** MySQL hostname */ define('DB_HOST', 'localhost'); 

Thay thế localhost bằng địa chỉ IP riêng của server database mới của bạn, mysql-1 . Nó sẽ trông giống như thế này (thay thế được đánh dấu):

<pre>
xác định ('DB HOST', '<span class = "highlight"> mysql 1 IP riêng </span>');
</pre>

Lưu và thoát. Bây giờ, hãy truy cập ứng dụng của bạn theo cách bạn thường làm (địa chỉ IP công cộng hoặc domain của lamp-1 ). Nó sẽ trông giống hệt như trước đây, nhưng bây giờ nó đang kết nối với database MySQL trên server mới của bạn, mysql-1 !

Các ứng dụng khác

Nếu bạn đang chạy một ứng dụng khác, chỉ cần cập nhật cấu hình kết nối database của ứng dụng để sử dụng tên hoặc địa chỉ IP riêng thay vì “localhost” hoặc “127.0.0.1”. Tùy thuộc vào cách ứng dụng của bạn xử lý các kết nối database của nó, bạn có thể cần phải khởi động lại ứng dụng để kết nối với database mới của bạn .

Dừng MySQL trên server root của bạn

Sau khi bạn đã xác nhận ứng dụng của bạn hoạt động tốt với server database mới, riêng biệt, bạn cần dọn dẹp Server database MySQL ban đầu của bạn . Tối thiểu, bạn cần dừng dịch vụ MySQL để nó ngừng sử dụng tài nguyên.

Trên đèn-1 : chạy các lệnh sau để dừng MySQL và đặt nó thành KHÔNG bắt đầu khi server khởi động :

sudo service mysql stop sudo sh -c "echo 'manual' > /etc/init/mysql.override" 

Kết luận

Bây giờ server database của bạn đã được tách khỏi server ứng dụng của bạn, môi trường của bạn có thể xử lý nhiều lưu lượng hơn vì nhiều tài nguyên hơn được dành riêng cho mỗi thành phần. Ngoài ra, môi trường của bạn hiện đã được chuẩn bị tốt hơn cho các cải tiến khác như cân bằng tải và sao chép database .

Dưới đây là một số hướng dẫn về chủ đề khả năng mở rộng:

<div class = “author”> Bởi Mitchell Anicas </div>


Tags:

Các tin liên quan

Cách tối ưu hóa hiệu suất WordPress với MySQL Replication trên Ubuntu 14.04
2014-05-21
Cách sử dụng profile truy vấn MySQL
2014-04-07
Mở rộng quy mô Ruby on Rails: Thiết lập server MySQL chuyên dụng (phần 2)
2014-02-27
Cách sử dụng HAProxy để thiết lập cân bằng tải MySQL
2013-12-02
Cách sử dụng HAProxy để thiết lập cân bằng tải MySQL
2013-12-02
Cách cài đặt MySQL 5.6 từ kho lưu trữ chính thức của Yum
2013-11-13
Cách tối ưu hóa các truy vấn và bảng trong MySQL và MariaDB trên VPS
2013-11-11
Cách bảo mật sao chép MySQL bằng SSH trên VPS
2013-09-18
Cách tạo và quản lý database trong MySQL và MariaDB trên server cloud
2013-07-29
Cách thực hiện các truy vấn cơ bản trong MySQL và MariaDB trên server cloud
2013-07-29