1. 程式人生 > >mysql主從複製及資料備份恢復

mysql主從複製及資料備份恢復

1、主從伺服器分別作以下操作:

  1.1、版本一致
  1.2、初始化表,並在後臺啟動mysql
  1.3、修改root的密碼

2、修改主伺服器master:

       #vi /etc/my.cnf
           [mysqld]
           log-bin=mysql-bin   //[必須]啟用二進位制日誌
           server-id=222      //[必須]伺服器唯一ID,預設是1,一般取IP最後一段

3、修改從伺服器slave:

       #vi /etc/my.cnf
           [mysqld]
           log
-bin=mysql-bin //[不是必須]啟用二進位制日誌 server-id=226 //[必須]伺服器唯一ID,預設是1,一般取IP最後一段

4、重啟兩臺伺服器的mysql

   systemctl restart mysqld

5、在主伺服器上建立帳戶並授權slave:

       #/usr/local/mysql/bin/mysql -uroot -pmttang   
       mysql>GRANT REPLICATION SLAVE ON *.* to '賬戶'@'從伺服器的ip' identified by '密碼'; 

一般不用root帳號,%表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。

6、登入主伺服器的mysql,查詢master的狀態

 mysql>show master status;
  +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
| mysql-bin.000004 | 308 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec) 注:執行完此步驟後不要再操作主伺服器MYSQL,防止主伺服器狀態值變化

7、配置從伺服器Slave:

mysql>change master to master_host='192.168.71.128',master_user='root',master_password='root',master_log_file='mysql-bin.000004',master_log_pos=308;   //注意不要斷開,308數字前後無單引號。
Mysql>start slave;    //啟動從伺服器複製功能

8、檢查從伺服器複製功能狀態:

  mysql> show slave status\G

   *************************** 1. row ***************************

              Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.2.222  //主伺服器地址
              Master_User: mysync   //授權帳戶名,儘量避免使用root
              Master_Port: 3306    //資料庫埠,部分版本沒有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000004
              Read_Master_Log_Pos: 600     //#同步讀取二進位制日誌的位置,大於等於Exec_Master_Log_Pos
              Relay_Log_File: ddte-relay-bin.000003
              Relay_Log_Pos: 251
              Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    //此狀態必須YES
              Slave_SQL_Running: Yes     //此狀態必須YES
                    ......

注:Slave_IO及Slave_SQL程序必須正常執行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。

以上操作過程,主從伺服器配置完成。

9、主從伺服器測試:

主伺服器Mysql,建立資料庫,並在這個庫中建表插入一條資料:

  mysql> create database hi_db;
  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;
  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));
  Query OK, 0 rows affected (0.00 sec)

  mysql> insert into hi_tb values(001,'bobu');
  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;
   +--------------------+
   | Database           |
   +--------------------+
   | information_schema |
   | hi_db                |
   | mysql                |
   | test                 |
   +--------------------+
   4 rows in set (0.00 sec)

從伺服器Mysql查詢:

  mysql> show databases;

   +--------------------+
   | Database               |
   +--------------------+
   | information_schema |
   | hi_db                 |       //I'M here,大家看到了吧
   | mysql                 |
   | test          |

   +--------------------+
   4 rows in set (0.00 sec)

   mysql> use hi_db
   Database changed
   mysql> select * from hi_tb;           //檢視主伺服器上新增的具體資料
   +------+------+
   | id   | name |
   +------+------+
   |    1 | bobu |
   +------+------+
   1 row in set (0.00 sec)

10、完成:
編寫一shell指令碼,用nagios監控slave的兩個yes(Slave_IO及Slave_SQL程序),如發現只有一個或零個yes,就表明主從有問題了,發簡訊警報吧。

MySQL主從同步故障-Slave_SQL_Running: No

故障現象:
進入slave伺服器,執行:

mysql> show slave status\G
        .......
            Relay_Log_File: localhost-relay-bin.000535
            Relay_Log_Pos: 21795072
            Relay_Master_Log_File: localhost-bin.000094
            Slave_IO_Running: Yes
            Slave_SQL_Running: No
          Replicate_Do_DB: 
      Replicate_Ignore_DB: 
      ......
解決辦法一、

首先停掉Slave服務:

mysql>stop slave;

到主伺服器上檢視主機狀態:
記錄File和Position對應的值
進入master

mysql> show master status;
+----------------------+----------+--------------+------------------+
| File                | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+----------------------+----------+--------------+------------------+
| localhost-bin.000094 | 33622483 |              |                  | 
+----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

然後到slave伺服器上執行手動同步:

mysql> change master to master_log_file='loccalhost-bin.000094',master_log_pos=33622483;
mysql> start slave;//開啟同步

再查詢狀態看是否正常

mysql>show slave status\G
*************************** 1. row ***************************
........
          Master_Log_File: localhost-bin.000094
      Read_Master_Log_Pos: 33768775
            Relay_Log_File: localhost-relay-bin.000537
            Relay_Log_Pos: 1094034
    Relay_Master_Log_File: localhost-bin.000094
          Slave_IO_Running: Yes
        Slave_SQL_Running: Yes
          Replicate_Do_DB:

注意:手動同步需停止主庫的寫操作!

解決辦法二、
mysql> stop slave;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> start slave;

說明:
Slave_IO_Running:連線到主庫,並讀取主庫的日誌到本地,生成本地日誌檔案
Slave_SQL_Running:讀取本地日誌檔案,並執行日誌裡的SQL命令。

資料備份:

格式:mysqldump -h連結ip -P(大寫)埠 -u使用者名稱 -p密碼資料庫名>d:XX.sql(路勁)

示例:mysqldump -uroot -p8888 htgl>d:\htgl.sql
如出現報錯Warning: Using a password on the command line interface can be insecure.則需要修改配置檔案:

vim /etc/mysql/my.cnf
[mysqldump]
user=your_backup_user_name
password=your_backup_password

修改完配置檔案,重啟MyQL後,只需要執行 mysqldump 指令碼就可以了。備份指令碼中不需要涉及使用者名稱密碼相關資訊。示例:mysqldump htql>d:\htql.sql

資料恢復:

1、系統命令列

格式:mysql -h連結ip -P(大寫)埠 -u使用者名稱 -p密碼 資料庫名 < d:XX.sql(路勁)

mysql -uusername -ppassword db1 <tb1tb2.sql

2、或mysql命令列

mysql>

user db1;

source tb1_tb2.sql;

3、恢復整個資料庫的方法:

mysql -u  b_user -h 101.3.20.33 -p'H_password' -P3306   < all_database.sql

相關推薦

mysql主從複製資料備份恢復

1、主從伺服器分別作以下操作: 1.1、版本一致 1.2、初始化表,並在後臺啟動mysql 1.3、修改root的密碼 2、修改主伺服器master: #vi /etc/my.cnf [mysqld

redis主從複製 從而 資料備份和讀寫分離

蝸牛Redis系列文章目錄http://www.cnblogs.com/tdws/tag/NoSql/ 爬蟲轉載註明地址本文地址—部落格園蝸牛 http://www.cnblogs.com/tdws/p/5705782.html 雲伺服器過期了,這次測試就放在本地(127.0.0.1)。三個

[MySQL高階](七) MySQL主從複製讀寫分離實戰

1. 簡介   隨著技術的發展,在實際的生產環境中,由單臺MySQL資料庫伺服器不能滿足實際的需求。此時資料庫叢集就很好的解決了這個問題。採用MySQL分散式叢集,能夠搭建一個高併發、負載均衡的叢集伺服器。在此之前我們必須要保證每臺MySQL伺服器裡的資料同步。資料同步我們

MySQL 主從複製原理

1.主從複製配置a. 環境:CentOS7.4,IP地址分別是主庫:192.168.11.146,從庫:192.168.11.238,主庫版本應低於或等於從庫版本,這裡用的都是MySQL 8.0.13b.主庫配置/etc/my.cnf檔案 [mysqld] #一般配置選項user=mysqlport=33

HBase-常用Shell操作資料備份恢復

1、常用的 Shell 操作 1) satus 例如:顯示伺服器狀態: 2) whoami 例如,顯示 HBase 當前使用者: 3) list 顯示當前所有的表: 4) count 例如,統計指定表的記錄數: 5) describe 展示表

MySQL安裝資料備份恢復

MySQL二進位制格式安裝 首先下載mysql二進位制安裝包 //下載地址 [[email protected] src]# wget https://downloads.mysql.com/archives/get/file/mysql-5.7.22-lin

學一點 mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理實踐

server counter ror 位置 正在 大型 主循環 備份 配置詳解 雙機熱備的概念簡單說一下,就是要保持兩個數據庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個數據庫數據一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可

redis持久化,主從資料備份

現在在專案裡已經大量使用redis了,為了提高redis的效能和可靠性我們需要知道和做到以下幾件事: 常用記憶體優化手段與引數 redis的效能如何是完全依賴於記憶體的,所以我們需要知道如何來控制和節省記憶體。 首先最重要的一點是不要開啟Redis的VM選項,即虛擬記憶

ip變更造成的redis叢集不可用的解決資料備份恢復

今天開啟電腦,連線redis,發現連線不上了... 原因是找不到主機...檢視虛擬機器ip,發現ip變了... 於是想到之前配置redis叢集的時候,在redis.conf中配置了bind為虛擬機

MySQL主從複製原理、半同步操作步驟原理

1.1 企業Linux運維場景資料同步方案 1.1.1 檔案級別的異機同步方案 1、scp/sftp/nc 命令可以實現遠端資料同步。  2、搭建ftp/http/svn/nfs 伺服器,然後在客戶端上也可以把資料同步到伺服器。  3、搭建sa

MySQL主從複製原理搭建全過程】

目錄 準備工作 主從複製原理 開始搭建主從複製 本文將使用mariaDB資料庫實現主從複製,其步驟與MySQL資料庫無差異。 MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。 開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將M

MySQL主從複製半同步複製原理搭建

在MySQL5.5之前的版本中,MySQL的複製是非同步複製,主庫和從庫的資料之間存在一定的延遲,比如網路故障等各種原因,這樣子容易存在隱患就是:當在主庫寫入一個事務成功後並提交了,但是由於從庫延遲沒有及時得到主庫推送的Binlog日誌時,主庫突然宕機了,那麼此時從庫就可能損失這個事務,從而造成主從不一致的狀

mysql主從複製一個小錯誤導致從庫不更新資料

由於歷史遺留問題,我們的MySQL主從庫的表結構不一致,主庫的某個表tableA比從庫表tableA少了一個欄位。 當嘗試在主庫上更改表結構時,這行alter語句會隨著binlog同步到從庫,如果從庫執行這行語句時出錯,主從同步執行緒就會自動停止,那樣只能人為手動處理錯誤,然後再啟動slave上的主從同步執

MySQL主從複製之基於GTID多執行緒

一、Mysql 5.6 複製管理工具 官方下載:http://dev.mysql.com/downloads/tools/utilities/#downloads mysqlreplicate 快速啟動複製 mysqlrplcheck 快速檢查複製環境

MySQL 主從複製原理建立過程

前言 mysql 是我工作中常用的資料庫,不過僅限於 SQL 操作,通過阿里雲的 RDS 可以快速生成一個例項,對於其原理並不甚瞭解,所以閒暇之餘瞭解了一下,並記錄下來,與大家共享、交流。 目錄 一、MySQL複製技術 1. 複製的

mysql主從複製、讀寫分離到資料庫水平拆分庫表雜湊

web專案最原始的情況是一臺伺服器只能連線一個mysql伺服器(c3p0只能配置一個mysql),但隨著專案的增大,這種方案明顯已經不能滿足需求了。Mysql主從複製,讀寫分離:上面的方案使用mysql-Proxy代理,分發讀寫請求,寫操作轉發到Mysql主伺服器,讀操作轉發

mysql 雙機異地熱備份----快速理解mysql主從,主主備份原理實踐

雙機熱備的概念簡單說一下,就是要保持兩個資料庫的狀態自動同步。對任何一個數據庫的操作都自動應用到另外一個數據庫,始終保持兩個資料庫資料一致。 這樣做的好處多。 1. 可以做災備,其中一個壞了可以切換到另一個。 2. 可以做負載均衡,可以將請求分攤到其中任何一臺上,提高網站

Mysql主從複製從庫狀態雙Yesseconds_behind_master為0的故障分析

在監控Mysql主從叢集的時候,通常會使用以下三個引數 Slave_IO_Running: Yes Slave_SQL_Running: Yes Seconds_Behind_Master: 0 實際上,這種方式是有問題的。下面轉載的兩篇文章有詳細的描述。 簡單來說:如

linux系統下實現mysql備份詳細步驟(mysql主從複製)

主從的作用: 1.可以當做一種備份方式 2.用來實現讀寫分離,緩解一個數據庫的壓力  MySQL主從備份原理: Mysql的主從複製至少是需要兩個Mysql的服務,當然Mysql的服務是可以分佈在不同的伺服器上,也可以在一臺伺服器上啟動多個服務。 如果想配置成為同一臺上的話,注意安裝的時候,選擇

Window環境下配置MySQL 5.6的主從復制、備份恢復

end inf content 復制 grant -h 正常的 mysql 5.6 出現 原文:Window環境下配置MySQL 5.6的主從復制、備份恢復1、環境準備 Windows 7 64位 MySQL 5.6 主庫:192.168.103.