Thiết lập sao chép cho bảng MyISAM?


7

Trước khi thiết lập một bản sao trong MySQL, trước tiên dữ liệu cần được chuyển đến nô lệ.

Vì các bảng MyISAM có thể được sao chép dưới dạng tệp. Có thể sao chép các tệp MyISAM, .myd .myi .frm vào nô lệ không? Điều này sẽ đủ để bắt đầu nhân rộng?

Câu trả lời:


7

Vì mọi thứ đều là MyISAM, đây là những gì bạn cần làm

BƯỚC 01) Định cấu hình Master để trở thành Master Master

Nếu bạn chưa server-idxác định trong /etc/my.cnf, hãy thêm một

[mysqld]
server-id=1

service mysql restart

BƯỚC 02) Kiểm tra Nhật ký nhị phân trên Master

Nếu đăng nhập nhị phân được kích hoạt trên Master, hãy làm điều này

RESET MASTER;

để zap tất cả các bản ghi nhị phân và bắt đầu mới.

Nếu đăng nhập nhị phân không hoạt động, hãy làm điều này

  • Thêm log-bin=mysql-bindưới [mysqld]trong /etc/my.cnf
  • khởi động lại dịch vụ mysql

BƯỚC 03) Sao chép /var/lib/mysql

Bạn có thể đặt rsync để thực hiện sao chép từng byte một cách mạnh mẽ các bảng MyISAM của mình từ /var/lib/mysqlmột máy chủ này sang /var/lib/mysqlmáy chủ khác. Bạn sẽ thực hiện nhiều rsyncs cho đến rsync cuối cùng, rất nhanh chóng. Sau đó, bạn sẽ tắt hoàn toàn MySQL và thực hiện thêm một rsync. Bắt đầu mysql trên cả Master và Slave.

BƯỚC 04) Tạo người dùng sao chép trên Slave

GRANT REPLICATION CLIENT,REPLICATION SLAVE
ON *.* TO replicator@'PrivateIPofSlave' IDENTIFIED BY 'r3pl1cAt0r';

BƯỚC 05) Thiết lập sao chép

Chạy lệnh này trên Slave

CHANGE MASTER TO
MASTER_HOST='PrivateIPofMaster',
MASTER_PORT=3306,
MASTER_USER='replicator',
MASTER_PASSWORD='r3pl1cAt0r',
MASTER_LOG_FILE='XXXX',
MASTER_LOG_POS=YYYY;
START SLAVE;

XXXX và YYYY là gì ???

  • XXXXlà tệp nhật ký nhị phân cuối cùng tại thời điểm bạn thực hiện rsync cuối cùng. Có một bản sao của tệp đó trong / var / lib / mysql trên Slave. Chỉ cần chạy ls -l /var/lib/mysql/mysql-bin.0*trên Slave và sử dụng nhật ký nhị phân cuối cùng.
  • YYYYlà vị trí của tệp nhật ký nhị phân cuối cùng tại thời điểm bạn thực hiện rsync cuối cùng. Thật thú vị, vị trí cũng là kích thước tập tin của nhật ký nhị phân. Chỉ cần chạy ls -l /var/lib/mysql/mysql-bin.0*trên Slave và lấy kích thước tệp của nhật ký nhị phân cuối cùng làm vị trí YYYY.

BƯỚC 06) Kiểm tra sao chép

Chạy cái này

SHOW SLAVE STATUS\G

Nếu Slave_IO_RunningYesSlave_SQL_RunningYes, Xin chúc mừng Bạn đã hoàn thành !!!

Tôi đã viết các bài viết tương tự về việc sử dụng rsync như thế này:


Đây là một câu trả lời tuyệt vời. Tôi chỉ yêu cầu (3), nhưng phần còn lại sẽ rất hữu ích. Câu trả lời này có thể sẽ là một hướng dẫn dứt khoát cho sao chép myisam.
Haluk

Một lưu ý cho những người mới bắt đầu sao chép khác như tôi: Xác định XXXX và YYYY đi vào phần (3), ngay trước khi khởi động lại máy chủ.
Haluk
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.