從已運行的mysql主服務器中複製一個從節點

從已運行的mysql主服務器中複製一個從節點

環境:

192.168.205.17: as master server
192.168.205.27: as slave server

版本:

OS: centos 7 1810 with mini install
mariadb-5.5.60

目地:

當數據庫運行了一段時間後,如何再做主從複製。

步驟:

1. 配置主服務器
2. 備份主服務器
3. 配置主恢復從服務器
4. 測試  

 主服務器192.168.205.17

  1. 首先安裝MariaDB
    [root@Master ~]#yum install mariadb-server
  2. 分創建數據目錄和logs目錄
    [root@Master ~]#mkdir /data/{mysql,logs}  
    [root@Master ~]#chown -R mysql:mysql /data/{mysql,logs}  
  3. 修改配置文件
    [root@Master ~]#vi /etc/my.cnf  
    [mysqld]  
    server_id=17  #服務器ID必須唯一  
    datadir=/data/mysql  #數據文件路徑  
    log_bin=/data/logs/bin  #日誌文件路徑  
    [root@Master ~]#systemctl restart mariadb  
  4. 建立複製帳號,此帳號是從服務器與主服務器同步時連接用的帳號,因爲對所有數據庫同步,所以是.
    MariaDB [(none)]> GRANT replication slave on *.* to repluser@'192.168.205.%' identified by 'centos';  
  5. 備份數據庫,因爲你的數據庫運行了一段時間,爲了把以前的數據也要同步過去,所以先備份主的服務器數據,再恢復到從的節點上,其中--master-data=1表示是從從節點上恢復數據,在備份的sql中會啓用change master to語句
    [root@Master ~]#mysqldump -A --single-transaction --master-data=1 -F >/data/all.mysql  
  6. 將備份的文件複製到slave服務器上
    [root@Master ~]#scp /data/all.mysql 192.168.205.27:/data/  

    從服務器192.168.205.27

  7. 安裝MariaDB在slave服務器上
    [root@slave ~]#yum install mariadb-server
  8. 修改配置文件
    [root@slave ~]#vi /etc/my.cnf 
    [mysqld]  
    datadir=/data/mysql  
    read-only  #只給slave數據只讀權限,當然只能限制普通帳號  
    log-bin=/data/logs/bin  
    server-id=27  #修改server-id一樣和主不一樣才行
  9. 創建數據和日誌文件夾並更改所有者和所有組爲mysql
    [root@slave ~]#mkdir /data/{mysql,logs}  
    [root@slave ~]#chown mysql:mysql /data/{mysql,logs}   
  10. 在slave服務器中打開備份的文件,添加如下的內容
    [root@salve data]#vi all.mysql  
    CHANGE MASTER TO  
    MASTER_HOST='192.168.205.17',  
    MASTER_USER='repluser',  
    MASTER_PASSWORD='centos',  
    MASTER_LOG_FILE='bin.000005',  
    MASTER_LOG_POS=245; 
  11. 啓動服務
    [root@slave ~]#systemctl restart mariadb  
  12. 直接恢恢復數據庫
    [root@slave ~]#mysql < /data/all.mysql
  13. 連接mariaDB並查看狀態
    [root@slave ~]#mysql  
    MariaDB [(none)]> show variables like 'server_id';  
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 27    |
    +---------------+-------+
    1 row in set (0.00 sec)
    MariaDB [(none)]> show variables like 'read_only';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | read_only     | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    MariaDB [(none)]> show slave status\G
    ...
             Slave_IO_Running: No
            Slave_SQL_Running: No
    ...
  14. 起動slave I/O thread 和slave SQL thread線程, 並查看狀態
    MariaDB [(none)]> start slave;
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> show slave status\G
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.205.17
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin.000005
          Read_Master_Log_Pos: 402
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 523
        Relay_Master_Log_File: bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
  15. 查看數據庫是否同步過來
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hellodb            |
    | mysql              |
    | performance_schema |
    | test               |
    | zhaoli             |
    +--------------------+
    6 rows in set (0.00 sec)
  16. 查看網絡連接,已經連接到主服務器的3306
    [root@slave data]#ss -nt
    State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port              
    ESTAB      0      96                  192.168.205.27:22                               192.168.205.1:17526              
    ESTAB      0      0                   192.168.205.27:56360                           192.168.205.17:3306 

    測試

  17. 在主的服務器上,建立一個數據庫,並測試數據庫同步
    MariaDB [(none)]> create database db1;
    Query OK, 1 row affected (0.00 sec)
  18. 在從服務器上看有沒有數據庫db1
    
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | hellodb            |
    | mysql              |
    | performance_schema |
    | test               |
    | zhaoli             |
    +--------------------+
    7 rows in set (0.00 sec)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章