Ở đây đơn giản mình chỉ làm đơn giản 1 chủ và 1 nô lệ thôi, các nô lệ còn lại các bạn làm tương tự
Cấu hình môi trường bao gồm 2 máy ảo CentOS chạy MySQL 5. 6, đương nhiên các bạn hoàn toàn có thể cấu hình trên các VPS, cấu hình này đơn giản và không phụ thuộc vào cấu hình môi trường nhé các bạn. MySQL is play is all
Tuy nhiên, nhược điểm của kiểu sao chép MySQL này chỉ ở mức đơn giản, với hệ thống lớn thì chắc chắn ai dùng cả đâu. Cần lưu ý rằng, thiết lập sao chép MySQL cần được thực hiện trước khi trang web của bạn đi vào hoạt động, nếu dữ liệu không được thao tác liên tục trên các cơ sở dữ liệu mà bạn sử dụng để sao chép thì sẽ nảy sinh các vấn đề vô cùng . Vì tính năng này không có đồng bộ và kiểm tra đúng sai đâu nhé. Nó dựa trên một bảng danh sách các thay đổi theo thời gian, sau đó sao chép dựa trên thời gian mà chúng ta chọn cho nó. Quá tệ không đúng =]]
Phần 2. Configure [Cấu hình]Gửi các bạn một số thông tin IP [IP này dùng cục bộ, với IP công khai cũng tương tự]
- Sư phụ
hệ điều hành. CentOS 6
địa chỉ IP. 192. 168. 100. 129
mysql. 5. 6. 36
- Nô lệ
hệ điều hành. CentOS 7
địa chỉ IP. 192. 168. 100. 131
mysql. 5. 6. 36
– In Master ta configure as after
Configure Master on config of mysql by default at /etc/my. cnf as after
vim /etc/my.cnf
Add content
[mysql]
server-id=1
log_bin=/var/log/mysql/mysql-bin
bind-address=192.168.100.129
Giải thích
- id máy chủ. is a number of title only for an thành phần tham gia vào bản sao, không nhất thiết master must be “1”
- log_bin. là tập tin sẽ chứa các thay đổi khi cơ sở dữ liệu được cập nhật
- địa chỉ liên kết. is tham số xác định mysql will bind at any address
Sau khi hoàn tất cấu hình Master, khởi động lại mysql
service mysqld restart
Bạn có thể kiểm tra việc master tạo các mysql-bin như thế nào như sau
ls -l /var/log/mysql/
Mỗi tập tin chứa sự thay đổi của cơ sở dữ liệu sẽ có tiền tố là “mysql-bin. ”, hậu tố là “00000X”. Số X sẽ tăng dần theo từng đơn vị khi chúng ta Bắt đầu hoặc Khởi động lại mysql
Bây giờ sử dụng mysql để lấy thông số trạng thái thay đổi cơ sở dữ liệu trên master, với mục đích là đặt bắt đầu sao chép trên Slave. Để cố định sự cố này, ta sẽ khóa master tạm thời về chế độ Read Only
mysql
hoặc
________số 8
flush tables with read lock;
[mysql]
0
[mysql]
1
In this write mysql-bin. 000007 và 262, thì có thể hiểu master đã thay đổi theo mysql-bin. 000007 tại vị trí 262. Bạn cần nhớ số này để thiết lập bên nô lệ, tuy nhiên vấn đề cũng thực sự bắt nguồn từ tệp việc chọn và vị trí để cho nô lệ biết khi nào thì bắt đầu sao chép, nếu chọn quá sớm thì sẽ sao chép dữ liệu đã có
Cấp quyền cho một người dùng Slave kết nối với Master
[mysql]
2
[mysql]
3
Kết xuất tất cả các cơ sở dữ liệu đang có trên master
mysqldump –all-databases –single-transaction -u root -p > /root/all_databases. sql
Sau khi kết xuất xong, ta có thể khóa ở trên
- Sư phụ
________số 8
[mysql]
5
[mysql]
6
– In Slave ta config as after
Copy file dump từ Master sang Slave
[mysql]
7
Ta import return cho Slave
mysql -u root -p < /root/all-databases. sql
Configure Slave on config of mysql by default at /etc/my. cnf as after
vim /etc/my.cnf
Add content
[mysql]
9server-id=1
0log_bin=/var/log/mysql/mysql-bin
server-id=1
2
Giải thích
- nhật ký chuyển tiếp. tương tự như log_bin, nếu bạn không cấu hình cũng không sao nhưng nếu không thiết lập cũng sẽ gây ra một số vấn đề phức tạp khác
Sau khi hoàn tất cấu hình Master, khởi động lại mysql
service mysqld restart
Slave master connection mới
mysql
server-id=1
5
Lúc này mới cần đến tệp và quyền sở hữu được lấy từ “hiển thị trạng thái chính;”
Khởi động Slave
server-id=1
6
View status Slave
server-id=1
7
If as Slave_IO_Running and Slave_SQL_Running đều Yes hết là Slave đã kết nối và đang replica thành công nha các bạn
Nếu như kết nối đến Master gặp sự cố, các bạn cần kiểm tra lại port mysql trên Master đã nghe hay chưa, iptables có chặn kết nối hay không. Kiểm tra tra soát xong ta chỉ cần khởi động lại Slave là được nhé
“Một số vấn đề khác mình hẹn trong Phần 3 [nếu có] để giải thích hết bộ rối rắm về sự lựa chọn file và vị trí, sự khác nhau giữa log_bin và relay-log [ở đây mình không có viết sai đâu, log_bin . Cũng giống như chỉ sao chép một vài cơ sở dữ liệu thôi chứ không phải toàn bộ cơ sở dữ liệu theo hướng dẫn trên. Hoặc sao chép toàn bộ nhưng trừ một số cơ sở dữ liệu nào đó. ”