1. Replication là gì?
v Replication
có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt phiên bản đang tồn tại,
đang sử dụng.
v Với
cơ sở dữ liệu, nhu cầu lưu trữ lớn, đòi hỏi cơ sở dữ liệu toàn vẹn, không bị
mất mát trước những sự cố ngoài dự đoán là rất cao. Vì vậy, người ta nghĩ ra
khái niệm “nhân bản”, tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu
đang tồn tại, và lưu trữ ở một nơi khác, đề phòng có sự cố.
v Phiên
bản cơ sở dữ liệu phục vụ ứng dụng được lưu trữ trên server master. Phiên bản
cơ sở dữ liệu “nhân bản” được lưu trữ trên server slave. Quá trình nhân bản từ
master sang slave gọi là replication.
v Khi
có một thay đổi trên cơ sở dữ liệu master, master sẽ ghi xuống log file (log ở
dạng binary). Slave đọc log file, thực hiện những thao tác trong log file. Việc
ghi, đọc log theo dạng binary được thực hiện rất nhanh.
2. Mô hình MySQL replication gồm có 2 thành phần:
a. MySQL master
b. MySQL slave
3. Cách thức hoạt động:
a. MySQL master
b. MySQL slave
3. Cách thức hoạt động:
- Tại thời điểm hoạt động bình thường mọi request sẽ được
đưa đến vào MySQL master. Khi MySQL master gặp sự cố, request sẽ được đẩy
qua cho MySQL slave xử lí. Khi MySQL master up lại bình thường, request sẽ
được trả về cho MySQL master.
- Quá trình chuyển đổi vai trò giữa MySQL master và MySQL
slave sẽ được giới thiệu ở bài hướng dẫn sau.
- Bài hướng dẫn đầu tiên chỉ nêu các bước để cấu hình
MySQL master và MySQL slave replicate cho nhau.
4. Mục đích của bài hướng dẫn này:
a. Cấu hình MySQL master.
b. Cấu hình MySQL slave.
c. Mọi thay đổi trên MySQL master đều được thực hiện trên MySQL slave, luôn luôn đảm bảo dữ liệu trên MySQL master và MySQL slave là giống nhau.
5. Các bước cấu hình:
- Giả sử máy tính MySQL master có hostname là master.mydomain.com. Máy tính MySQL slave có hostname là slave.mydomain.com.
- Cài đặt mysql bằng các gói lệnh yum trên MySQL master và MySQL slave.
#yum
install mysql-server
- Start mysql trên MySQL
master và MySQL slave.
5.1 Cấu hình trên máy master.
Truy
cập vào mysql bằng cách gõ lệnh sau:
#mysql
–hlocalhost –uroot –p
Sau
đó hệ thống yếu cầu nhập mật khẩu, mặc định mật khẩu rỗng nên nhấn enter dấu
nhắc sẽ chuyển thành:
Mysql>
Tạo
user cho phép MySQL slave được quyền REPLICATE
mysql>
CREATE USER 'repl'@'%.mydomain.com'
IDENTIFIED BY 'slavepass';
mysql>
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
Sửa
trong file /etc/my.cnf những option sau.
[mysqld]
log-bin=mysql-bin
server-id=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1
Khởi
động mysqld trên master.
#service mysqld start
5.2 Cấu hình trên Slave
Sửa
trong file /etc/my.cnf option sau:
[mysqld]
server-id=2
Sau
đó tiến hành khởi động lại mysql trên slave.
#service mysqld restart
5.3
Để replication, cần xem tình trạng ghi log hiện tại của MySQL master, để điều
khiển slave bắt đầu replicate như thế nào.
Trên Master
Ngưng
mọi tác động trên cơ sở dữ liệu.
mysql>
FLUSH TABLES WITH READ LOCK;
Xem
tình trạng của MySQL master
mysql
> SHOW MASTER STATUS;
Trên Slave: Cấu
hình những thông tin cần thiết để slave giao tiếp được với Master.
mysql>
CHANGE MASTER TO
->
MASTER_HOST='master_host_name',
->
MASTER_USER='replication_user_name',
->
MASTER_PASSWORD='replication_password',
->
MASTER_LOG_FILE='recorded_log_file_name',
->
MASTER_LOG_POS=recorded_log_position;
Với
mô hình trên chúng ta cấu hình như sau.
mysql>
CHANGE MASTER TO
->MASTER_HOST='master.mydomain.com',
->MASTER_USER='repl',
->MASTER_PASSWORD='slavepass',
->MASTER_LOG_FILE='
mysql-bin.000001’,
->MASTER_LOG_POS=214;
Ghi
chú: giá trị MASTER_LOG_FILE ở đây là file name [mysql-bin.000001] và
MASTER_LOG_POS là giá trị [Position] của câu lệnh SHOW MASTER STATUS;/
Trên master
UNLOCK
cơ sở dữ liệu trên Master.
Mysql>UNLOCK
TABLES;
6. Kiểm tra
Trên
Master tạo 1 database xxx;
Mysql>create
database xxx;
Trên
Slave kiểm tra xem đã cập nhật database đó chưa
Mysql>show
databases;
Nguồn tham khảo http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html
Không có nhận xét nào:
Đăng nhận xét