|
||||||||
|
||||||||
|
MySQL Master, Slave, Cluster, Replication.. Database Availability... MySQL Database Replication và Failover |
|
Công Cụ | Xếp Bài |
|
03-08-2009, 12:42 AM | #1 |
Guest
Trả Lời: n/a
|
MySQL Master, slave
1. Replication là gì?
a. MySQL master b. MySQL slave 3. Cách thức hoạt động:
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: a. 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. b. Cài đặt mysql bằng các gói rpm trên MySQL master và MySQL slave. c. Start mysql trên MySQL master và MySQL slave. d. Cấu hình master: - Tạo user cho phép MySQL slave được quyền REPLICATE mysql> GRANT REPLICATION SLAVE ON *.* -> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass'; - 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 - Start mysql trên MySQL master e. Cấu hình slave: - Sửa trong file /etc/my.cnf option sau: server-id=2 - Start mysql trên MySQL slave. - Để 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. - Ngưng mọi tác động trên cơ sở dữ liệu MySQL master sql> FLUSH TABLES WITH READ LOCK; - Xem tình trạng của MySQL master mysql > SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql | +---------------+----------+--------------+------------------+ - 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.mydomain.com', -> MASTER_USER='repl', -> MASTER_PASSWORD='slavepass', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position; - Ghi chú: giá trị MASTER_LOG_FILE ở đây là file name [mysql-bin.003] và MASTER_LOG_POS là giá trị [Position] của câu lệnh SHOW MASTER STATUS; - Nếu trước khi thực hiện replication, master không ghi thành log file, thì giá trị tương ứng ở đây là: chuỗi rỗng (“”) và 4. - Giải phóng các table trên master: mysql> UNLOCK TABLES; - Hoàn tất quá trình cấu hình, test thử. f. Master đã có dữ liệu: - Giả sử trước khi thực hiện mô hình replication, master đã có dữ liệu. Vậy ta cần migrate dữ liệu qua slave trước, trước khi thực hiện các bước replication như ở trên. - Trên master, ngưng những tác động làm thay đổi cơ sở dữ liệu, dump database: sql> FLUSH TABLES WITH READ LOCK; shell> mysqldump --all-databases --master-data > dbdump.db - Import cơ sở dữ liệu này vào MySQL slave. - Tương tự phần trên, nếu trước khi thực hiện replication, MySQL master có ghi log, cần xem tình trạng log tại thời điểm đó, để cấu hình cho MySQL slave bắt đầu replication tại điểm nào mysql > SHOW MASTER STATUS; +---------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------+----------+--------------+------------------+ | mysql-bin.003 | 73 | test | manual,mysql | +---------------+----------+--------------+------------------+ - 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.mydomain.com', -> MASTER_USER='repl', -> MASTER_PASSWORD='slavepass', -> MASTER_LOG_FILE='recorded_log_file_name', -> MASTER_LOG_POS=recorded_log_position; - Giải phóng các table trên master, start mysql trên MySQL slave mysql> UNLOCK TABLES; - Hoàn tất quá trình cấu hình, test thử. 1/ Mô hình master-master replication:
Để cấu hình replication hai chiều, ta tiến hành cấu hình 2 mô hình master-slave replication lồng vào nhau. Bước 1: ServerA là master, ServerB là slave. Bước 2: ServerB là master, ServerA là slave. Như vậy, kết hợp 2 lần cấu hình, ta sẽ được: + Khi dữ liệu thay đổi trên ServerA, dữ liệu sẽ replicate qua ServerB (theo cấu hình replication của bước 1) + Đồng thời, khi dữ liệu thay đổi trên ServerB, dữ liệu sẽ replicate qua ServerA (theo cấu hình replication của bước 2). 3/ Chi tiết cấu hình: Bước 1: ServerA là master, ServerB là slave: cấu hình như bài lab 1 đã hướng dẫn. Bước 2: Chia làm các bước nhỏ như sau: a. ServerB là master, sửa những nội dung sau trong file /etc/my.cnf master-host = [IP ServerA] master-user = repl master-password = slavepass master-port = 3306 log-bin binlog-do-db=adam b. Tạo quyền replication trên ServeB cho ServerA: grant replication slave on *.* to 'repl'@[IP ServerA] identified by 'slavepass2'; c. Để đưa ServerA thành slave của ServerB, sửa nội dung file /etc/my.cnf log-bin binlog-do-db=adam binlog-ignore-db=mysql binlog-ignore-db=test server-id=1 #information for becoming slave. master-host = [IP ServerB] master-user = repl master-password = slavepass2 master-port = 3306 d. Tiếp tục, làm lại các bước SHOW MASTER STATUS trên ServerB và START SLAVE trên ServerA như đã làm ở bước 1. Vậy là bạn đã có mô hình master-master replication hai chiều. Hoàn tất, test thử. __________________ Kết thúc để lại được bắt đầu Theo: kimchipt (NN) |
|
|