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

Định cấu hình sao chép cơ sở dữ liệu MySQL Master-Master

MySQL Master-Master Replication là gì?

MySQL Master-Master replication bổ sung thêm tốc độ và khả năng dự phòng cho các trang web đang hoạt động. Với nhân rộng, hai máy chủ MySQL riêng biệt hoạt động như một cụm. Phân cụm cơ sở dữ liệu đặc biệt hữu ích cho các cấu hình trang web có tính khả dụng cao. Sử dụng hai Linodes riêng biệt để định cấu hình sao chép cơ sở dữ liệu, mỗi Linodes có địa chỉ IPv4 riêng.

Lưu ý

Hướng dẫn này được viết cho người dùng không phải root. Các lệnh yêu cầu đặc quyền nâng cao có tiền tố là sudo . Nếu bạn không quen với sudo , bạn có thể xem hướng dẫn Người dùng và Nhóm của chúng tôi.

Hướng dẫn này được viết cho Debian 9, Ubuntu 18.04 và Ubuntu 20.04.

Nếu bạn không chắc phiên bản MySQL nào đã được cài đặt trên hệ thống của mình khi làm theo các bước bên dưới, hãy nhập lệnh sau:

mysql --version

Cài đặt MySQL

  1. Sử dụng các lệnh sau để cài đặt MySQL trên mỗi Linodes:

    sudo apt-get update
    sudo apt-get upgrade -y
    sudo apt-get install mysql-server mysql-client
    
  2. Chạy lệnh cài đặt bảo mật MySQL. Bạn sẽ được yêu cầu tạo mật khẩu gốc. Bạn nên chọn có cho tất cả các câu hỏi:

    mysql_secure_installation
    

Chỉnh sửa cấu hình của MySQL

  1. Chỉnh sửa /etc/mysql/my.cnf tập tin trên mỗi Linodes. Thêm hoặc sửa đổi các giá trị sau:

    Máy chủ 1:

    Tệp:/ etc / mysql / my.cnf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [mysqld]
    server_id           = 1
    log_bin             = /var/log/mysql/mysql-bin.log
    log_bin_index       = /var/log/mysql/mysql-bin.log.index
    relay_log           = /var/log/mysql/mysql-relay-bin
    relay_log_index     = /var/log/mysql/mysql-relay-bin.index
    expire_logs_days    = 10
    max_binlog_size     = 100M
    log_replica_updates = 1
    auto-increment-increment = 2
    auto-increment-offset = 1
    Lưu ý Nếu sử dụng MySQL 8.0.25 trở xuống, hãy thay thế log_replica_updates với log_slave_updates (trong cả Máy chủ 1 và Máy chủ 2). Tài liệu SeeMySQL để biết thêm chi tiết.

    Máy chủ 2:

    Tệp:/ etc / mysql / my.cnf
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    
    [mysqld]
    server_id           = 2
    log_bin             = /var/log/mysql/mysql-bin.log
    log_bin_index       = /var/log/mysql/mysql-bin.log.index
    relay_log           = /var/log/mysql/mysql-relay-bin
    relay_log_index     = /var/log/mysql/mysql-relay-bin.index
    expire_logs_days    = 10
    max_binlog_size     = 100M
    log_replica_updates = 1
    auto-increment-increment = 2
    auto-increment-offset = 2
    Lưu ý Nếu sử dụng MySQL 8.0.25 trở xuống, hãy thay thế log_replica_updates với log_slave_updates (trong cả Máy chủ 1 và Máy chủ 2). Tài liệu SeeMySQL để biết thêm chi tiết.
  2. Chỉnh sửa bind-address để sử dụng các địa chỉ IP riêng cho từng Linodes.

    Tệp:/ etc / mysql / my.cnf
    1
    
    bind-address    = x.x.x.x
  3. Sau khi hoàn tất, hãy khởi động lại ứng dụng MySQL:

    sudo systemctl restart mysql
    

Tạo Người dùng Nhân rộng

  1. Đăng nhập vào MySQL trên mỗi Linodes:

    mysql -u root -p
    
  2. Định cấu hình người dùng sao chép trên mỗi Linode. Thay thế x.x.x.x với địa chỉ IP riêng của Linode đối lập và password với mật khẩu mạnh:

    MySQL8 trở lên

    CREATE USER 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x';
    

    Bên dưới MySQL8

    GRANT REPLICATION SLAVE ON *.* TO 'replication'@'x.x.x.x' IDENTIFIED BY 'password';
    
  3. Chạy lệnh sau để kiểm tra cấu hình. Sử dụng địa chỉ IP riêng của Linode đối lập:

    mysql -u replication -p -h x.x.x.x -P 3306
    

    Lệnh này sẽ kết nối bạn với phiên bản MySQL của máy chủ từ xa.

Định cấu hình sao chép cơ sở dữ liệu

  1. Trong khi đăng nhập vào MySQL trên Máy chủ 1, hãy truy vấn trạng thái chính:

    SHOW MASTER STATUS;
    

    Lưu ý các giá trị tệp và vị trí được hiển thị:

    mysql> SHOW MASTER STATUS;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      277 |              |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    
  2. Trên Máy chủ 2 tại dấu nhắc MySQL, hãy thiết lập chức năng bản sao cho cơ sở dữ liệu đó. Thay thế x.x.x.x với IP riêng từ máy chủ đầu tiên. Đồng thời thay thế giá trị cho source_log_file với giá trị tệp từ bước trước và giá trị cho source_log_pos với giá trị vị trí.

    MySQL 8.0.22 trở lên:

    STOP REPLICA;
    CHANGE REPLICATION SOURCE TO
        source_host='x.x.x.x',
        source_port=3306,
        source_user='replication',
        source_password='password',
        source_log_file='mysql-bin.000001',
        source_log_pos=106;
    START REPLICA;
    

    MySQL 8.0.22 hoặc phiên bản cũ hơn:

    STOP SLAVE;
    CHANGE MASTER TO
        master_host='x.x.x.x',
        master_port=3306,
        master_user='replication',
        master_password='password',
        master_log_file='mysql-bin.000001',
        master_log_pos=106;
    START SLAVE;
    
  3. Trên Máy chủ 2, hãy truy vấn trạng thái chính. Một lần nữa lưu ý các giá trị của tệp và vị trí.

    SHOW MASTER STATUS;
    
  4. Đặt trạng thái cơ sở dữ liệu bản sao trên Máy chủ 1, sử dụng các lệnh tương tự như trong bước 2. Khi nhập các lệnh, hãy sử dụng địa chỉ IP của Máy chủ 2 và giá trị tệp và vị trí bạn vừa thu thập ở bước trước.

  5. Kiểm tra bằng cách tạo cơ sở dữ liệu và chèn một hàng:

    Máy chủ 1:

    create database test;
    create table test.flowers (`id` varchar(10));
    

    Máy chủ 2:

    show tables in test;
    

Khi được truy vấn, bạn sẽ thấy các bảng từ Máy chủ 1 được sao chép trên Máy chủ 2. Xin chúc mừng, bạn đã có một cụm MySQL Master-Master!

Thông tin khác

Bạn có thể muốn tham khảo các nguồn sau đây để biết thêm thông tin về chủ đề này. Mặc dù những điều này được cung cấp với hy vọng rằng chúng sẽ hữu ích, xin lưu ý rằng chúng tôi không thể đảm bảo tính chính xác hoặc kịp thời của các tài liệu được lưu trữ bên ngoài.

  • Hướng dẫn sử dụng Tham chiế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 di chuyển Moodle độc ​​lập sang thiết lập có thể mở rộng cơ sở dữ liệu theo cụm

  2. Thông báo MySQL 5.6 EOL

  3. Hướng dẫn để hiểu các mẫu mở rộng cơ sở dữ liệu

  4. Hàm MySQL - FOUND_ROWS () cho Tổng số hàng bị ảnh hưởng

  5. create_series () tương đương trong MySQL