- GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' IDENTIFIED BY '%slave_password%';
- FLUSH PRIVILEGES;
- quit;
Edit file my.cnf của server 1 :
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- #user=mysql
- # Default to using old password format for compatibility with mysql 3.x
- # clients (those using the mysqlclient10 compatibility package).
- old_passwords=1
- max_connections = 400
- key_buffer = 16M
- myisam_sort_buffer_size = 32M
- join_buffer_size = 1M
- read_buffer_size = 1M
- sort_buffer_size = 2M
- table_cache = 1024
- thread_cache_size = 286
- interactive_timeout = 25
- wait_timeout = 1000
- connect_timeout = 60
- max_allowed_packet = 16M
- max_connect_errors = 10
- query_cache_limit = 1M
- query_cache_size = 16M
- query_cache_type = 1
- tmp_table_size = 16M
- skip-innodb
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=1
- master-host = 192.168.2.11
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
- slave-net-timeout = 30
- master-connect-retry = 30
- [mysql.server]
- user=mysql
- basedir=/var/lib
- [mysqld_safe]
- relay-log = relay-bin
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- max_allowed_packet = 16M
- [myisamchk]
- keybuffer = 32M
- sort_buffer = 32M
- read_buffer = 16M
- write_buffer = 16M
Edit file my.cnf của server 2 :
- [mysqld]
- datadir=/var/lib/mysql
- socket=/var/lib/mysql/mysql.sock
- #user=mysql
- # Default to using old password format for compatibility with mysql 3.x
- # clients (those using the mysqlclient10 compatibility package).
- old_passwords=1
- max_connections = 400
- key_buffer = 16M
- myisam_sort_buffer_size = 32M
- join_buffer_size = 1M
- read_buffer_size = 1M
- sort_buffer_size = 2M
- table_cache = 1024
- thread_cache_size = 286
- interactive_timeout = 25
- wait_timeout = 1000
- connect_timeout = 60
- max_allowed_packet = 16M
- max_connect_errors = 10
- query_cache_limit = 1M
- query_cache_size = 16M
- query_cache_type = 1
- tmp_table_size = 16M
- skip-innodb
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=2
- master-host = 192.168.2.10
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
- slave-net-timeout = 30
- master-connect-retry = 30
- [mysql.server]
- user=mysql
- basedir=/var/lib
- [mysqld_safe]
- relay-log = relay-bin
- log-error=/var/log/mysqld.log
- pid-file=/var/run/mysqld/mysqld.pid
- max_allowed_packet = 16M
- [myisamchk]
- keybuffer = 32M
- sort_buffer = 32M
- read_buffer = 16M
- write_buffer = 16M
Bạn cần để ý các thông số sau ở cả 2 server :
- log-bin=mysql-bin
- binlog-do-db=replicate_test
- binlog-ignore-db=mysql
- binlog-ignore-db=test
- server-id=2
- master-host = 192.168.2.10
- master-user = replication
- master-password = 111111
- master-port = 3306
- auto_increment_increment= 2
- auto_increment_offset = 2
Chú thích các thông số :
binlog-do-db=replicate_test : chỉ định các bảng sẽ được thực hiện replicate
binlog-ignore-db=mysql : Chỉ định các bảng sẽ không được thực hiện replicate
server-id : Id chỉ định cho server.
master-host : Địa chỉ ip của host master
master-user,master-password : user và password theo master-host
master-port: cổng truy vấn của database.
auto_increment_offset : cần đặc biệt chú ý thông số này, trường hợp bạn không thiết lập thông số này database có trường autoincrement sẽ tăng theo giá trị +1 cho giá trị tiếp theo khi insert dữ liệu mới.
Để tránh trường hợp 2 database ở 2 server bị trùng giá trị autoincrement tôi đặt giá trị này auto_increment_offset=1 cho server1 và =2 cho server 2 với mục đích giá trị tự động tăng ở server1 là số lẻ , ở server 2 là số chẵn.
Đăng nhập chế độ dòng lệnh MySQL và thực hiện việc gán master cho server2:
- stop slave;
- CHANGE MASTER TO MASTER_HOST='192.168.1.10', MASTER_USER='replication', MASTER_PASSWORD='%slave_password%';
- start slave;
Thực hiện câu lệnh tương tự cho server 1 với MASTER_HOST là 192.168.1.11, user và password.
Kiểm tra sự hoạt động của cả 2 server :
- SHOW MASTER STATUS;
- SHOW SLAVE STATUS\G;
Nếu 1 trong 2 chưa thành công bạn cần kiểm tra lại user và password chính xác, hoặc master-port đã được mở hay chưa.
Tham khảo thêm về replicate MySQL : http://dev.mysql.com/doc/refman/5.1/en/replication-howto.html
Mình đang bị tình trạng này. Có lời khuyên nào cho mình không! Cám ơn
Trả lờiXóaSlave_IO_State: Connecting to master
Master_Host: 112.78.6.228
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 1213091
Relay_Log_File: slave-relay.000004
Relay_Log_Pos: 98
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: No
Slave_SQL_Running: Yes
Replicate_Do_DB: o2bcorp_bhotel
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: 1213091
Relay_Log_Space: 98
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
http://quanlykhachsan.org