Đồng bộ máy chủ MySQL là quá trình bạn sao chép dữ liệu từ cơ sở dữ liệu từ một máy chủ MySQL (Master) được sao chép tự động đến một hoặc nhiều máy chủ cơ sở dữ liệu MySQL khác (Slave).
Đầu tiên bạn cần phải thiết lập máy chủ cơ sở dữ liệu trước bằng cách ít nhất là cài đặt MySQL trên các máy chủ.
Sau đây sẽ là quá trình thiết lập đồng bộ Master – Slave.
Trước tiên, chúng ta có 2 máy chủ:
– Cơ sở dữ liệu chính(Master): 10.0.0.11
– Cơ sở dữ liệu phụ(Slave): 10.0.0.12
Phụ mục
Thiết lập cài đặt trên Master Host
Thay đổi cài đặt tệp /etc/my.cnf và tạo người dùng để sao chép trên MySQL
vi /etc/my.cnf
[mysqld] log-bin=mysql-bin server-id=11 |
Khởi động lại dịch vụ MySQL
#systemctl restart mysqld |
Tạo user:
#mysql -u root -p Enter password: mysql>grant replication slave on *.* to replica@’%’ identified by ‘password’; Query OK, 0 rows affected (0.00 sec) mysql>flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> exit |
Thiết lập cài đặt trên Slave Host
vi /etc/my.cnf
[mysqld] log-bin=mysql-bin server-id=12 read_only=1 |
Khởi động lại dịch vụ MySQL
#systemctl restart mysqld |
Thiết lập lại cài đặt Master Host
Bạn cần lock các bản và show master status(remember File, Position value)
#mysql -u root -p Enter password: mysql>flush tables with read lock; Query OK, 0 rows affected (0.00 sec) mysql>show master status; +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000005 | 212 | | | | +------------------+----------+--------------+------------------+-------------------+ 1 row in set (0.00 sec) |
Lấy Dump-Data trên Master Host
#mysqldump -u root -p — all-databases — lock-all-tables — events > database_dump.sql |
sau đó chúng ta copy data này sang slave host:
#scp database_dump.sql root@10.0.0.12:/tmp/ |
Unlock lại các table
#mysql -u root -p Enter password: mysql>unlock tables; Query OK, 0 rows affected (0.00 sec) mysql>exit |
Thay đổi thiết lập trên máy Slave
Đầu tiên chúng ta import file dump đã copy sang ở dòng lệnh trên
#mysql -u root -p < /tmp/database_dump.sql Enter password: |
Tiến hành thay đổi cấu hình của Slave để đồng bộ:
#mysql -u root -p Enter password: mysql>change master to ->master_host='10.0.0.11',master_user='replica', ->master_password='password', ->master_log_file='mysql-bin.000005', ->master_log_pos=212; Query OK, 0 rows affected (0.54 sec) mysql>start slave; Query OK, 0 rows affected (0.00 sec) mysql>show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.0.0.11 Master_User: replica Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000005 Read_Master_Log_Pos: 732 Relay_Log_File: node01-relay-bin.000006 Relay_Log_Pos: 460 Relay_Master_Log_File: mysql-bin.000005 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: 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: 632 Relay_Log_Space: 568 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: 0 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: 101 Master_UUID: 2222c042-dd31-12d6-7f68-5754505d05ae Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec) |
Vậy là xong.