<form id="hz9zz"></form>
  • <form id="hz9zz"></form>

      <nobr id="hz9zz"></nobr>

      <form id="hz9zz"></form>

    1. 明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

      教你怎么在阿里云與騰訊云簡單搭建傳統主從復制環境圖文詳細教程

      [摘要]MySQL主從復制環境可以說是一切高可用的基礎。它的原理也比較簡單,下面我們先來了解下主從復制的原理:雖然圖上一共有7步,可以簡化一下幫助記憶和理解:Master上進行改、寫操作;MySQL把修改數...
      MySQL主從復制環境可以說是一切高可用的基礎。它的原理也比較簡單,下面我們先來了解下主從復制的原理:

      主從流程圖
      雖然圖上一共有7步,可以簡化一下幫助記憶和理解:

      1. Master上進行改、寫操作;

      2. MySQL把修改數據寫進binlog;

      3. Slave發起IO thread,把master上新的binlog拉取到本地中繼日志中;

      4. 重放中繼日志,讓在master上面的修改、新增操作在Slave本機上重新運行一遍;

      5. Slave按照正常的操作也會把操作寫進本地的binlog。

      硬件環境

      本人有阿里云、騰訊云各一臺屌絲機,因此用來試驗,為保護隱私,把ip已經替換了,但不影響操作。

      主機ip端口版本主從
      阿里云192.168.1.1003306MySQL5.7.14Master
      騰訊云192.168.1.2003306MySQL5.7.18Slave

      Master上設置

      開啟binlog設置server-id

      在/etc/my.cnf中的mysqld選項下編輯,然后重啟

      [mysqld]
      log-bin=mysql-bin
      server-id=1003306
      /etc/init.d/mysql restart

      創建復制專用賬號

      mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slave;
      mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.200';

      導出數據同步到騰訊云上面

      使用mysqldump導出所有數據庫數據,另外備份文件中會記錄當前的binlog文件和position。

      #防止DDL、寫操作
      mysql>FLUSH TABLES WITH READ LOCK;
      shell>mysqldump -uroot -p --single-transaction --master-data=2 -A>back.sql

      也通過以下方式可以查看:

      root@localhost [mysql]>show master status;
      +------------------+----------+--------------+------------------+-------------------+
        File               Position   Binlog_Do_DB   Binlog_Ignore_DB   Executed_Gtid_Set  
      +------------------+----------+--------------+------------------+-------------------+
        mysql-bin.000045        939                                                        
      +------------------+----------+--------------+------------------+-------------------+
      1 row in set (0.00 sec)

      解鎖表

      mysql> UNLOCK TABLES;

      遠程傳文件過去

      如果數據文件偏大或者數據多,可以使用percona的xtrabackup進行備份壓縮,再傳過去。

      rsync back.sql root@192.168.1.200:/root

      Slave操作

      開啟binlog設置server-id

      在/etc/my.cnf中的mysqld選項下編輯

      [mysqld]
      log-bin=mysql-bin
      server-id=2003306

      重啟MySQL服務

      導入數據

      shell>mysqldump -uroot -p --databases t1 <back.sql

      指向Master

      這里的MASTER_LOG_FILEMASTER_LOG_POS是剛才show master status的值,當然也可以使用more查看應該指定的位置。

      CHANGE MASTER TO MASTER_HOST='192.168.1.200',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000045',MASTER_LOG_POS=939;

      這里的MASTER_LOG_FILEMASTER_LOG_POS是剛才show master status的值,當然也可以使用more查看應該指定的位置。

      shell>more back.sql
      -- MySQL dump 10.13  Distrib 5.7.14, for linux-glibc2.5 (x86_64)
      --
      -- Host: localhost    Database: 
      -- ------------------------------------------------------
      -- Server version   5.7.14-log
      
      /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
      /*!40101 SET NAMES utf8 */;
      /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
      /*!40103 SET TIME_ZONE='+00:00' */;
      /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
      /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
      /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
      /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
      
      --
      -- Position to start replication or point-in-time recovery from
      --
      
      CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000045', MASTER_LOG_POS=939;

      啟動slave

      mysql>start slave;
      mysql>show slave status\G
      *************************** 1. row ***************************
                     Slave_IO_State: Waiting for master to send event
                        Master_Host: 192.168.1.200
                        Master_User: repl
                        Master_Port: 3306
                      Connect_Retry: 60
                    Master_Log_File: mysql-bin.000045
                Read_Master_Log_Pos: 939
                     Relay_Log_File: relay-bin.000001
                      Relay_Log_Pos: 4
              Relay_Master_Log_File: mysql-bin.000045
                   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: 939
                    Relay_Log_Space: 154
                    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: 23306
                        Master_UUID: 9a13d860-b55b-11e6-bf33-00163e054164
                   Master_Info_File: /data/mysql/mysql3306/data/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: 3feb36dc-ef7e-11e6-a535-52540043f116:1-337886
                      Auto_Position: 0
               Replicate_Rewrite_DB: 
                       Channel_Name: 
                 Master_TLS_Version: 
      1 row in set (0.00 sec)

      這里看到Slave_IO_Running和Slave_SQL_Running雙YES一般就沒有問題了。

      驗證

      現在可以在主上面進行一些新建數據庫、新建數據表、插入輸出等方式來驗證是否主從生效。此步驟就大家自己隨意發揮吧!

      以上就是教你如何在阿里云與騰訊云輕松搭建傳統主從復制環境教程的詳細內容,更多請關注php中文網其它相關文章!


      學習教程快速掌握從入門到精通的SQL知識。




      日韩精品一区二区三区高清