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:
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 .
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 :
- Di chuyển database hiện có sang server mới
- 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:
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:
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:
- Giới thiệu về Cân bằng tải và HAProxy
- Cách tối ưu hóa hiệu suất WordPress với MySQL Replication trên Ubuntu 14.04
<div class = “author”> Bởi Mitchell Anicas </div>
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.042014-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