Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sao chép cơ sở dữ liệu MySQL sang máy chủ khác

MySQL Replication cho phép bạn dễ dàng sao chép cơ sở dữ liệu từ máy chủ này sang máy chủ khác. MySQL hỗ trợ các loại sao chép khác nhau như chủ-tớ, chủ-nhân và sao chép nhóm. MariaDB cũng hỗ trợ sao chép đa chủ. Trong bài viết này, chúng ta sẽ xem xét bản sao Master-Slave trong MySQL và tìm hiểu cách sao chép cơ sở dữ liệu MySQL trong Linux. Bạn có thể sử dụng các bước này để sao chép cơ sở dữ liệu MySQL trong Ubuntu, Debian, CentOS, Fedora, Red hat và các loại Linux khác.


Cách sao chép cơ sở dữ liệu MySQL

Dưới đây là các bước để sao chép cơ sở dữ liệu MySQL. Để thiết lập của chúng tôi, chúng tôi sẽ cần một cơ sở dữ liệu chính (IP - 54.24.32.12) và một cơ sở dữ liệu phụ (IP - 45.12.21.23). Chúng tôi sẽ sao chép cơ sở dữ liệu có tên exampledb từ chủ thành nô lệ. Chúng tôi đã giả định rằng bạn đã cài đặt MySQL trên cả hai máy chủ này và bạn có đặc quyền root cho cả hai máy chủ này. Nếu không, bạn có thể cài đặt MySQL bằng lệnh sau

$ sudo apt-get install mysql-server mysql-client

Phần thưởng đọc:Các lựa chọn thay thế MySQL Workbench hàng đầu


1. Chỉnh sửa tệp cấu hình chính

Mở thiết bị đầu cuối trên máy chủ của cơ sở dữ liệu chính và chạy lệnh sau

$ sudo vi /etc/mysql/my.cnf

Theo mặc định, các kết nối từ xa bị tắt trong MySQL. Chúng ta cần cho phép kết nối từ xa từ slave đến master để nhân rộng. Vì vậy, chúng tôi bỏ ghi chú hai dòng sau để cho phép các kết nối từ xa, bằng cách thêm # vào đầu của chúng, như được hiển thị bên dưới

#skip-networking
#bind-address=127.0.0.1

Thêm hoặc bỏ ghi chú các dòng sau trong khối [mysqld] để trông giống như sau.

[mysqld]
server-id=1
log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exampledb

Chúng ta hãy xem xét từng dòng trên. Id máy chủ dòng đầu tiên chỉ định một số ID duy nhất cho cái chính. Nó phải là một số dương từ 1 đến 2 ^ 32.

log-bin chỉ định vị trí tệp nhật ký sẽ được MySQL điền vào cùng với các chi tiết về bản sao.

binlog-do-db cho biết tên của cơ sở dữ liệu cần được sao chép.

Khởi động lại Máy chủ MySQL để áp dụng các thay đổi

$ sudo service mysql restart

Đăng nhập vào MySQL với tư cách người dùng gốc

$ sudo mysql -u root -p

và chạy lệnh sau

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |      107 |   exampledb  |                  |
+------------------+----------+--------------+------------------+

Vui lòng lưu ý các chi tiết trên, chúng tôi sẽ cần chúng sau ở Bước # 3.

Phần thưởng đọc:Cách bật SSL / TLS trong MySQL


2. Tạo người dùng nhân rộng

Đăng nhập vào máy chủ MySQL trên máy chủ.

$ sudo mysql -u root -p

Bạn sẽ được nhắc nhập mật khẩu gốc.

Sau khi đăng nhập vào MySQL, hãy chạy các lệnh sau để tạo người dùng từ xa slave_user và cấp cho nó quyền sao chép cho tất cả các cơ sở dữ liệu. Vui lòng thay thế 45.12.21.23 bên dưới bằng IP của máy chủ nô lệ của bạn và thay thế $ password bằng một mật khẩu phù hợp theo yêu cầu của bạn.

mysql> CREATE USER slave_user@45.12.21.23; 
mysql> GRANT REPLICATION SLAVE ON *.* TO slave_user@45.12.21.23
       IDENTIFIED BY '$password';
mysql> FLUSH PRIVILEGES;

Vui lòng thêm quy tắc tường lửa đến cho cổng 3306 và cho phép 45.12.21.23. Người dùng từ xa này cần kết nối với cơ sở dữ liệu chính để quá trình sao chép diễn ra.

Phần thưởng đọc:Cách thay đổi đối chiếu của tất cả các bảng trong MySQL


3. Chỉnh sửa tệp cấu hình Slave

Mở thiết bị đầu cuối trên máy chủ của cơ sở dữ liệu nô lệ và chạy lệnh sau

$ sudo vi /etc/mysql/my.cnf

Thêm các dòng sau vào [mysqld] để trông giống như

[mysqld]
server-id = 2
relay-log = /var/log/mysql/mysql-relay-bin.log
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = exampledb

Trong dòng đầu tiên, chúng tôi gán ID máy chủ là 2 cho máy chủ phụ. Một vài dòng tiếp theo chỉ định vị trí của các tệp nhật ký chuyển tiếp và bản ghi nhân rộng. Dòng cuối cùng chỉ định cơ sở dữ liệu sẽ được sao chép.

Khởi động lại MySQL Server và đăng nhập vào MySQL

$ sudo service mysql restart
$ sudo mysql -u root -p

Chạy các lệnh sau để tạo cơ sở dữ liệu trống trên máy chủ.

mysql> CREATE DATABASE exampledb; 
mysql> USE exampledb;

Tải dữ liệu từ cơ sở dữ liệu chính để đưa vào cơ sở dữ liệu phụ

mysql> LOAD DATA FROM MASTER;

Thoát MySQL.

Phần thưởng đã đọc:Các blog cơ sở dữ liệu hàng đầu để theo dõi


4. Khởi tạo sao chép

Trong khi bạn đã đăng nhập vào MySQL, hãy chạy các lệnh sau để bắt đầu quá trình sao chép. Thay thế các bộ phận bằng in đậm với các giá trị của bạn.

mysql> SLAVE STOP;
mysql> CHANGE MASTER TO MASTER_HOST='54.24.32.12',
       MASTER_USER='slave_user', 
       MASTER_PASSWORD='<password>', 
       MASTER_LOG_FILE='mysql-bin.000001', 
       MASTER_LOG_POS=107;

MASTER_HOST - Địa chỉ IP hoặc tên máy chủ của cái chính (54.24.32.12).
MASTER_USER - người dùng nô lệ mà chúng tôi đã tạo ở bước # 2.
MASTER_PASSWORD - mật khẩu của người dùng nô lệ mà chúng tôi đã nhập ở bước # 2.
MASTER_LOG_FILE - tệp MySQL đã trả lại ở bước # 1 khi bạn chạy
HIỂN THỊ TRẠNG THÁI MASTER
MASTER_LOG_POS - vị trí MySQL đã trả lại khi bạn chạy HIỂN THỊ TRẠNG THÁI MASTER ở bước # 1

Cuối cùng, chúng tôi bắt đầu nô lệ để bắt đầu sao chép cơ sở dữ liệu MySQL.

mysql> START SLAVE;

Hy vọng rằng, bài viết này sẽ giúp bạn nhân rộng cơ sở dữ liệu MySQL.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách hàm OCTET_LENGTH () hoạt động trong MySQL

  2. Câu hỏi và câu trả lời phỏng vấn MySql phổ biến cho người mới hơn + có kinh nghiệm

  3. Các cách khác nhau để xem các bảng trong MySQL Server

  4. Làm cách nào để bạn tạo phiên bản cho lược đồ cơ sở dữ liệu của mình?

  5. Làm cách nào để tôi có thể lặp qua tất cả các hàng của bảng? (MySQL)