mysql 主從複製、添加新從服務器、級聯複製

主從複製、添加從服務器、級聯複製
三臺mysql服務器。一臺爲主,一臺爲從,實現自動備份。再添加一臺新的從服務器
系統:centos7.6
mariadb:5.5.60

主服務器:

[root@Centos7 ~]#vim /etc/my.cnf
[mysqld]
server_id=7     #設置服務器ID 
log_bin         #開啓二進制日誌

啓動mysql,查看二進制位置信息,創建slave服務器可以使用的的用戶

[root@Centos7 ~]#systemctl start mariadb
[root@Centos7 ~]#mysql
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      245 |
+--------------------+-----------+
1 row in set (0.00 sec)
MariaDB [(none)]> grant replication slave on *.* to repluser@'192.168.37.%' identified by 'centos';
Query OK, 0 rows affected (0.01 sec)

主服務器設置完成

從服務器

[root@Centos7 ~]#vim /etc/my.cnf

[mysqld]
server_id=17   #設置服務器ID
read_only      #從服務器建議加上,只讀

配置同步信息:用主服務給的用戶實現複製主服務器的數據到本機

[root@Centos7 ~]#mysql
.
.
.
MariaDB [(none)]> CHANGE MASTER TO   
    -> MASTER_HOST='192.168.37.7',           #主服務器IP
    -> MASTER_USER='repluser',               #用戶
    -> MASTER_PASSWORD='centos',             #密碼
    -> MASTER_PORT=3306,                     #端口
    -> MASTER_LOG_FILE='mariadb-bin.000001', #二進制文件
    -> MASTER_LOG_POS=245;                   #開始複製的位置
Query OK, 0 rows affected (0.03 sec)

MariaDB [(none)]> start slave;               #開啓從服務器線程
MariaDB [(none)]> show slave status\G        #查看狀態
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.37.7  #主服務器IP
                  Master_User: repluser      #使用的用戶
                  Master_Port: 3306          #使用端口
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000001
          Read_Master_Log_Pos: 400
               Relay_Log_File: mariadb-relay-bin.000002
                Relay_Log_Pos: 686
        Relay_Master_Log_File: mariadb-bin.000001
             Slave_IO_Running: Yes            #同步成功
            Slave_SQL_Running: Yes            #同步成功
        .
        .
        .
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 7             #主服務器ID
1 row in set (0.00 sec)
.
.
.

測試:在主服務器上增刪改數據,在從服務器上自動同步

給已有數據的主服務器,添加一臺從服務器

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hellodb            |
| mysql              |
| performance_schema |
| testdb1            |
| testdb2            |
| testdb3            |
+--------------------+
7 rows in set (0.00 sec)

完全備份主服務器的數據,查看主服務器日誌記錄位置,並傳送給新的從服務器

[root@Centos7 ~]#mysqldump -A --single-transaction -F --master-data=1 > /data/backup/all.sql
[root@Centos7 ~]#scp -r /data/backup/* 192.168.37.27:/data/
[root@Centos7 ~]#mysql
.
.
.
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name           | File_size |
+--------------------+-----------+
| mariadb-bin.000001 |      8436 |
| mariadb-bin.000002 |       245 |   #從最新的位置開始同步,
+--------------------+-----------+

新的從服務器設置

[root@Centos7 ~]#vim /etc/my.cnf
[mysqld]
server_id=37
read_only
.
.
.

設置主服務器傳送的備份文件,加上主服務的的同步信息

[root@Centos7 ~]#vim /data/all.sql
.
.
.
CHANGE MASTER TO   
MASTER_HOST='192.168.36.7',
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000002', 
MASTER_LOG_POS=245; 
.
.
.

啓動mysql服務,導入備份的數據,進入mysql,開啓slave線程

[root@Centos7 ~]#systemctl start mariadb
[root@Centos7 ~]#mysql < /data/all.sql 
[root@Centos7 ~]#mysql
MariaDB [(none)]> start slave;  #開啓線程
Query OK, 0 rows affected (0.02 sec)
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.37.7
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 245
               Relay_Log_File: mariadb-relay-bin.000002
                Relay_Log_Pos: 531
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes   #成功
            Slave_SQL_Running: Yes   #成功
                            .
                            .
                            .
             Master_Server_Id: 7
1 row in set (0.00 sec)

測試,在主服務器上增刪修改數據,查看是否可以自動同步

級聯複製

級聯複製要求中間節點服務器配置文件加上log_slave_updates,並且開啓二進制日誌
中間節點設置

[root@Centos7 ~]#vim /etc/my.cnf
[mysqld]
log_bin
log_slave_updates
server_id=17
.
.
.

因爲中間節點數據與主服務器數據是一樣的,所以可以備份中間節點的數據到從服務器,用以與主服務器同步

[root@Centos7 ~]#mysqldump -A --single-transaction -F --master-data=1 > /data/backup/all.sql
[root@Centos7 ~]#scp -r /data/backup/* 192.168.37.27:/data/

從服務器設置

[root@Centos7~]#vim /etc/my.cnf
[mysqld]
server_id=27
.
.
.
[root@Centos7 ~]#vim /data/all.sql 
.
.
.
CHANGE MASTER TO
MASTER_HOST='192.168.37.17',  #中間節點
MASTER_USER='repluser',
MASTER_PASSWORD='centos',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=7583;
.
.
.
[root@Centos7 ~]#mysql < /data/all.sql  #導入數據
[root@Centos7 ~]#mysql
.
.
.
MariaDB [(none)]> start slave;        #開啓線程
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.37.17  #主服務器爲中間節點
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mariadb-bin.000002
          Read_Master_Log_Pos: 15250
               Relay_Log_File: mariadb-relay-bin.000004
                Relay_Log_Pos: 15536
        Relay_Master_Log_File: mariadb-bin.000002
             Slave_IO_Running: Yes    #成功
            Slave_SQL_Running: Yes    #成功
              .
              .
              .
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 17
1 row in set (0.00 sec)

MariaDB [(none)]> 

測試,在主服務器做數據增刪改,從服務器可以通過中間節點複製數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章