數據庫集群的級聯復制完整實現
阿新 • • 發佈:2018-03-18
級聯復制 主從 實驗前的註意:
如果要啟用級聯復制,需要在從服務器啟用以下配置; [mysqld] log_bin log_slave_updates log_slave_updates的作用: 因為默認從主服務器過來的二進制日誌保存在從服務器的中繼日誌;並應用到本地數據庫; 但是中間這個從服務器是即便是開啟二進制日誌的記錄功能,他也是不記錄到本地的二進制日誌, 那麽也就不能將對數據庫的操作再傳輸到從的從服務器上去。當log_slave_updates啟用後, 從服務器也就能將對主服務器的二進制日誌在本地執行後,也記錄到自己的二進制日誌中; 刪除數據庫就可以幹凈做實驗; [root@master ~]$systemctl stop mariadb [root@master ~]$rm -fr /var/lib/mysql/* [root@master ~]$systemctl start mariadb
主、從、二級從服務器的配置:
[root@master ~]$cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 innodb_file_per_table log_bin server-id=1 [root@slave ~]$cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. innodb_file_per_table server_id=2 read_only log_bin log_slave_updates [root@slave2 ~]$cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 server_id=3
主服務器和從服務器實現主從復制,配置和授權:
主服務器: MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.27.%' identified by 'centos'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show master logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mariadb-bin.000001 | 264 | | mariadb-bin.000002 | 401 | +--------------------+-----------+ 2 rows in set (0.00 sec) 中間的從服務器: CHANGE MASTER TO MASTER_HOST='192.168.27.7', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=245; MariaDB [(none)]> CHANGE MASTER TO -> MASTER_HOST='192.168.27.7', -> MASTER_USER='repluser', -> MASTER_PASSWORD='centos', -> MASTER_LOG_FILE='mariadb-bin.000001', -> MASTER_LOG_POS=245; Query OK, 0 rows affected (0.02 sec) MariaDB [(none)]> start slave; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.27.7 Master_User: repluser Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mariadb-bin.000002 Read_Master_Log_Pos: 401 Relay_Log_File: mariadb-relay-bin.000003 Relay_Log_Pos: 687 Relay_Master_Log_File: mariadb-bin.000002 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 401 Relay_Log_Space: 1269 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 MariaDB [(none)]> select user from mysql.user; +----------+ | user | +----------+ | root | | repluser | | root | | | | root | | | | root | +----------+ 7 rows in set (0.00 sec) MariaDB [(none)]> show master logs; +--------------------+-----------+ | Log_name | File_size | +--------------------+-----------+ | mariadb-bin.000001 | 401 | +--------------------+-----------+ 1 row in set (0.00 sec)
二級從服務器上的配置:
在從的從服務器上執行: [mysqld] innodb_file_per_table read-only server-id=3 CHANGE MASTER TO MASTER_HOST='192.168.27.17', MASTER_USER='repluser', MASTER_PASSWORD='centos', MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=401;
數據庫集群的級聯復制完整實現