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

Chuyển từ bản sao truyền thống sang GTID

Trong bài viết này, chúng ta sẽ xem xét việc chuyển từ bản sao truyền thống sang GTID,

chúng ta sẽ thảo luận về cách thực hiện hoàn toàn trực tuyến. Trước tiên, hãy thảo luận về một số tùy chọn cấu hình liên quan đến GTID. Chế độ GTID xác định rằng máy chủ có sử dụng GTID hay không, điều này không chỉ ảnh hưởng đến đăng nhập nhị phân sao chép vì các bản ghi nhị phân sẽ có GTID trong đó. Tùy chọn nhất quán GTID thực thi đảm bảo rằng máy chủ chỉ cho phép các câu lệnh an toàn để thực thi ở chế độ GTID. Các câu lệnh không an toàn để thực thi giống như tạo bảng dưới dạng lựa chọn, có một số khác chủ yếu xung quanh, với giá trị gtid_owned, chúng có thể giám sát các GTID trong các giao dịch trên máy bay. Điều này rất hữu ích khi họ tắt GTID trực tuyến.

Chúng ta hãy thảo luận về một số và chính xác thì đó chỉ là một biến trạng thái liên quan đến GTID. ONGOING_ANONYMOUS_TRANSACTION_ COUNT là bản sao của GTID được sở hữu nhưng trong trường hợp di chuyển như về ONGOING_ANONYMOUS_TRANSACTION_COUNT, Giao dịch này được gọi là giao dịch ẩn danh vì nó không có số nhận dạng là GTID.

Tất cả các hoạt động cần được thực hiện trên một trong các nút trong cấu trúc liên kết nhân bản và cuối cùng là trên tất cả các nút. Phương pháp tốt nhất là thực hiện nô lệ trước và chính nhưng trong trường hợp có nhiều thao tác, thứ tự không thực sự quan trọng miễn là chúng được thực hiện trên mỗi trường hợp của cấu trúc liên kết nhân bản.

Trong môi trường này, tôi có ba máy ảo, hai trong số đó là cơ sở dữ liệu và một trong số đó là máy sysbench để tạo lưu lượng truy cập. Hãy bắt đầu.

Thạc sĩ:192.168.66.5

Nô lệ:192.168.66.7

Trên nút sysbench, hãy chạy lệnh đã chuẩn bị để tạo cơ sở dữ liệu sysbench, bạn chỉ cần sao chép và dán nó từ bên dưới.

sysbench \
--db-driver=mysql \
--mysql-user=sbtest_user \
--mysql_password= password \
--mysql-db=sbtest \
--mysql-host=192.168.66.5 \
--mysql-port=3306 \
--tables=16 \
--table-size=10000 \
/usr/share/sysbench/oltp_read_write.lua prepare

Trên nút sysbench chạy một số khối lượng công việc chống lại cái chính mà chúng tôi đã chạy trong suốt thời gian của tác vụ.

sysbench \
--db-driver=mysql \
--mysql-user=sbtest_user \
--mysql_password=password \
--mysql-db=sbtest \
--mysql-host=192.168.66.5 \
--mysql-port=3306 \
--tables=16 \
--table-size=10000 \
--threads=4 \
--time=0 \
--events=0 \
--rate=10 \
--report-interval=1 \
/usr/share/sysbench/oltp_read_write.lua run

Hãy bắt đầu ứng dụng khách MySQL trên tất cả các nút, tất cả các nút cơ sở dữ liệu. Hãy kiểm tra danh sách quy trình hiển thị trên trang cái để bạn có thể thấy quá trình này đang chạy ở đây.

mysql> show processlist;
+----+-----------------+--------------------+--------+-------------+------+---------------------------------------------------------------+------------------+
| Id | User            | Host               | db     | Command     | Time | State                                                         | Info             |
+----+-----------------+--------------------+--------+-------------+------+---------------------------------------------------------------+------------------+
|  5 | event_scheduler | localhost          | NULL   | Daemon      | 2350 | Waiting on empty queue                                        | NULL             |
|  8 | root            | localhost          | sbtest | Query       |    0 | starting                                                      | show processlist |
| 15 | syncstndby      | 192.168.66.7:47894 | NULL   | Binlog Dump |  156 | Master has sent all binlog to slave; waiting for more updates | NULL             |
| 17 | sbtest_user     | 192.168.66.6:38130 | sbtest | Sleep       |    0 |                                                               | NULL             |
| 18 | sbtest_user     | 192.168.66.6:38132 | sbtest | Sleep       |    1 |                                                               | NULL             |
| 19 | sbtest_user     | 192.168.66.6:38134 | sbtest | Sleep       |    0 |                                                               | NULL             |
| 20 | sbtest_user     | 192.168.66.6:38136 | sbtest | Sleep       |    0 |                                                               | NULL             |
+----+-----------------+--------------------+--------+-------------+------+---------------------------------------------------------------+------------------+
7 rows in set (0.00 sec)

Được rồi từ bây giờ chúng ta sẽ làm việc với salve trước và master.

Vì vậy, trước tiên, chúng tôi sẽ thiết lập chế độ thi hành án của nô lệ ="cảnh báo" trên nô lệ, thành chủ nô lệ.

Nô lệ 192.168.66.7

set global enforce_gtid_consistency = 'warn';

Chính 192.168.66.5

set global enforce_gtid_consistency = 'warn';

chúng tôi đã hoàn tất ở đây và chúng tôi sẽ kiểm tra lỗi MySQL xem nhật ký lỗi, điều này sẽ ổn; bạn sẽ không thấy bất kỳ lỗi nào trong nhật ký lỗi. Các bước tiếp theo là chạy set global started_gtid_consistency =’on’ ở mọi nơi và sau đó kiểm tra lại mũi tên.

Nô lệ 192.168.66.7

set global enforce_gtid_consistency='on';

Chính 192.168.66.5

set global enforce_gtid_consistency='on';

Vì vậy, bước tiếp theo là thiết lập global gtid_mode =’off_permissive’; vì vậy một lần nữa tôi sẽ khởi động máy khách MySQL và thiết lập nó. Và sau đó chúng tôi kiểm tra nhật ký lỗi

Nô lệ 192.168.66.7

set global gtid_mode='off_permissive';

Chính 192.168.66.5

set global gtid_mode='off_permissive';

Trên mỗi máy chủ, chúng tôi sẽ đặt gtid_mode =’on_permissive’; để chúng tôi tạo các giao dịch GTID tại thời điểm này.

Nô lệ 192.168.66.7

set global gtid_mode='on_permissive';

Chính 192.168.66.5

set global gtid_mode='on_permissive';

Vì vậy, nó được đặt ở khắp mọi nơi. Hãy kiểm tra nhật ký lỗi

Được rồi, bây giờ chúng tôi sẽ kiểm tra xem có bất kỳ nút nào có giao dịch ẩn danh đang diễn ra không vì nếu có thì khi chúng tôi đặt gtid_mode =’on’, máy chủ không còn chấp nhận các giao dịch ẩn danh nữa và chúng tôi sẽ gặp lỗi.

Nô lệ 192.168.66.7

mysql> show status like 'ongoing_anonymous_transaction_count';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+
1 row in set (0.22 sec)

Chính 192.168.66.5

mysql> show status like 'ongoing_anonymous_transaction_count';
+-------------------------------------+-------+
| Variable_name                       | Value |
+-------------------------------------+-------+
| Ongoing_anonymous_transaction_count | 0     |
+-------------------------------------+-------+
1 row in set (0.04 sec)

Vì vậy, cả hai máy chủ đều không có, điều đó có nghĩa là chúng tôi đã sẵn sàng bật GTID. Tôi sẽ bật gtid_mode =on.

Chính 192.168.66.5

mysql> set global gtid_mode='on';

Query OK, 0 rows affected (0.03 sec)

Nô lệ 192.168.66.7

mysql> set global gtid_mode='on';

Query OK, 0 rows affected (0.03 sec)

Bây giờ trên các nô lệ, chúng ta cần khởi động lại bản sao để sử dụng master-auto-position =1

Nô lệ 192.168.66.7

stop slave;
change master to master_auto_position=1;
start slave;

Vì vậy, điều này có tác dụng gì, đây là “change master” ở đây, nếu chuỗi salve đã được định cấu hình thì nếu một số tham số không được lệnh change master chạm vào, nó sẽ chỉ được để ở giá trị hiện tại.

Hãy kiểm tra để hiển thị trạng thái nô lệ trên các nô lệ và hiển thị trạng thái chủ trên chủ. mọi thứ tôi sẽ chạy tốt.

mysql> show salve status\G;

mysql> show master status;

Bây giờ quá trình di chuyển đã hoàn tất:

Như chúng tôi biết không có nâng cấp nào thành công nếu bạn không có gói khôi phục, để khôi phục, vui lòng nhấp vào liên kết bên dưới để đọc bài viết tiếp theo.

Quay lại sao chép truyền thống từ GTID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tương đương của varchar (max) trong MySQL?

  2. Kết nối cơ sở dữ liệu MySQL động cho Entity Framework 6

  3. Hàm MySQL CRC32 () - Ví dụ

  4. Kết hợp nhiều hàng con thành một hàng MYSQL

  5. Chọn một máy chủ tìm kiếm toàn văn bản độc lập:Sphinx hay SOLR?