Bài viết này sẽ giúp bạn thiết lập master-slave replication giữa các máy chủ MySQL. Chúng tôi đang sử dụng MySQL 5.5 trên CentOS 6.3. Tôi hy vọng nó sẽ giúp bạn thiết lập replication. Thông tin server sẽ sử dụng: Master Server: 192.168.1.10 Slave Server: 192.168.1.20 Cơ sở dữ liệu: mydb Sử dụng liên kết này để kiểm tra khả năng tương thích giữa các phiên bản khác nhau của MySQL 1. Cài đặt MySQL Master Server Tạo một tài khoản mysql trên máy chủ Master với quyền REPLICATION SLAVE giúp replication client sẽ kết nối đến server. Mã: mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.20' IDENTIFIED BY 'secretpassword'; mysql> FLUSH PRIVILEGES; Ngăn chặn viết câu lệnh trên tất cả các bảng, vì vậy không có sự thay đổi sau khi thực hiện việc sao lưu. Mã: mysql> use mydb; mysql> FLUSH TABLES WITH READ LOCK; mysql> exit; Chỉnh sửa tập tin cấu hình MySQL và thêm những dòng sau đây sau phần [mysqld]. Mã: vim /etc/my.cnf Mã: [mysqld] log-bin=mysql-bin binlog-do-db=mydb server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1 Khởi động lại master mysql server để thay đổi có hiệu lực. Mã: service mysqld restart Kiểm tra tên hiện tại tập tin binary log (File) và giá trị Position sử dụng lệnh sau đây. Mã: mysql > SHOW MASTER STATUS; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 107 | mydb | | +------------------+----------+--------------+------------------+ Các kết quả đầu ra ở trên cho thấy rằng tập tin nhị phân hiện tại đang sử dụng là mysql-bin.000002 và giá trị position là 107. Ghi chú lại các giá trị để sử dụng trên slave server. Sao lưu cơ sở dữ liệu và sao chép nó đến slave mysl server. Mã: mysqldump -u root -p mydb > mydb.sql scp mydb.sql 192.168.1.20:/opt/ Sau khi hoàn thành sao lưu loại bỏ READ LOCK từ các bảng, Vì vậy, những thay đổi có thể được thực hiện. Mã: mysql> UNLOCK TABLES; 2. Cài đặt MySQL Slave Server Chỉnh sửa tập tin cấu hình mysql salve và thêm giá trị sau dưới phần [mysqld]. Mã: vim /etc/my.cnf Mã: [mysqld] server-id=2 replicate-do-db=mydb server-id luôn luôn là một giá trị số khác không. Khởi động lại mysql slave server. Mã: /etc/init.d/mysqld restart Khôi phục sao lưu cơ sở dữ liệu lấy từ master server: Mã: mysql -u root -p mydb < /opt/mydb.sql Các giá trị tùy chọn cài đặt trên slave server sử dụng lệnh sau đây. Mã: mysql> CHANGE MASTER TO MASTER_HOST='192.168.1.10', -> MASTER_USER='repl_user', -> MASTER_PASSWORD='secretpassword', -> MASTER_LOG_FILE='mysql-bin.000002', -> MASTER_LOG_POS=107; Cuối cùng khởi động slave server Mã: mysql> SLAVE START; Kiểm tra tình trạng của slave server Mã: mysql> show slave status G Mã: *************************** 1. row *************************** Slave_IO_State: Master_Host: 192.168.1.15 Master_User: repl_user Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000002 Read_Master_Log_Pos: 107 Relay_Log_File: mysqld-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000002 Slave_IO_Running: No Slave_SQL_Running: No Replicate_Do_DB: mydb Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 107 Relay_Log_Space: 107 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 1 row in set (0.00 sec) mysql> MySQL Master-slave Replication đã được cấu hình thành công trên hệ thống của bạn và trong chế độ làm việc.