1. 程式人生 > >MySQL主從複製搭建方案

MySQL主從複製搭建方案

MySQL雙機主從叢集架構,可以實現MySQL資料庫資料的安全性和高可用性。在每臺MySQL資料庫伺服器上安裝一套MySQL程式,資料庫物理檔案均在本機硬碟中,通過MySQL主從複製架構,即時同步資料,如果主伺服器MySQL資料庫宕機,另外一臺備機可以通過手動切換暫時承擔起全部功能,並且可以根據存活主機的資料庫及時完整恢復宕機伺服器的資料庫,以達到高可用性的目的。

搭建環境

master:4核  2G記憶體  CentOS 6.5  IP:192.168.18.136  主機名:centos6h3  安裝MySQL 5.6.36 slave:4核  2G記憶體  CentOS 6.5  IP:192.168.18.137  主機名:centos6h4  安裝MySQL 5.6.36

搭建過程

1、在主庫建立一個賬號,使得從庫可以連線[192.168.18.137 是從庫地址] 1
mysql> grant replication slave on *.* to 'backup'@'192.168.18.137' identified by
'123456';
2
Query OK, 0 rows affected, 1 warning (0.00 sec)
判斷標準:從庫測試連線 1
[[email protected] ~]# mysql -ubackup -p123456 -h192.168.18.136
2
mysql: [Warning] Using a password on the command line interface can be insecure.
2、 對於主庫最基本要求: 1
[mysqld]
2
log_bin=mysql-server
3
server-id=1
4
重啟資料庫,show variables like '%%' 檢視修改生效

3、 在主庫做一個全備,最好使用xtrabackup,因為我們需要知道binlog 恢復的起點 1
innobackupex --user=root --password=123456  --no-timestamp /backup
4、 在從庫安裝一個和主庫完全一致的mysql 軟體,不需要初始化資料庫,如果已經初始化,手工刪除 5、修改從庫的配置檔案 1
server_id=2
6、使用scp -r 將主庫的備份傳遞給從庫 1
scp -r  /backup/ 
[email protected]
168.18.137:/
2
chown -R mysql: /backup
7、在從庫上執行xbackup 進行恢復,恢復完成以後,chown 修改資料目錄許可權。(恢復完成確定binlog 日誌到哪個位置) 1
 innobackupex --defaults-file=/etc/my.cnf  --move-back /backup/
8、chown修改datadir許可權,啟動從庫
1
chown -R mysql: /data/
2
mysqld_safe --defaults-file=/etc/my.cnf &
9、 搭建主從關係【確定binlog 位置,主庫的位置】 檢視主全備資訊 1
[[email protected] backup]# cat /backup/xtrabackup_info 
2
binlog_pos = filename 'mysql-server.000006', position '451'
檢視恢復備份的從庫日誌資訊,發現是一致的 1
[[email protected] data]# cat /data/xtrabackup_info 
2
binlog_pos = filename 'mysql-server.000006', position '451'
在從庫建立主從關係 1
mysql> CHANGE MASTER TO MASTER_HOST='192.168.18.136',MASTER_USER='backup',MASTER_PASSWORD='123456',MASTER_PORT=3306,MASTER_LOG_FILE='mha-server.000006',MASTER_LOG_POS=451,MASTER_CONNECT_RETRY=10;
在從庫啟動主從 1
mysql> start slave;
10、從庫執行show processlist ;   #檢視io 和sql 執行緒都啟動 1
mysql> show processlist;
2
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
3
| Id | User        | Host      | db   | Command | Time | State                                                                       | Info             |
4
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
5
|  1 | root        | localhost | NULL | Query   |    0 | init                                                                        | show processlist |
6
|  6 | system user |           | NULL | Connect |   30 | Waiting for master to send event                                            | NULL             |
7
|  7 | system user |           | NULL | Connect |   59 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL             |
8
+----+-------------+-----------+------+---------+------+-----------------------------------------------------------------------------+------------------+
9
3 rows in set (0.00 sec)
11、 主庫執行 show processlist; # 檢視dump 執行緒是否啟動 1
mysql> show processlist;
2
+----+--------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
3
| Id | User   | Host                 | db   | Command     | Time | State                                                                 | Info             |
4
+----+--------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
5
|  2 | root   | localhost            | NULL | Query       |    0 | init                                                                  | show processlist |
6
| 29 | backup | 192.168.18.137:37616 | NULL | Binlog Dump |   37 | Master has sent all binlog to slave; waiting for binlog to be updated | NULL             |
7
+----+--------+----------------------+------+-------------+------+-----------------------------------------------------------------------+------------------+
8
2 rows in set (0.00 sec)
12、 從庫 show slave status \G  檢視io 和sql 有無錯誤 1
mysql> show slave status \G
2
*************************** 1. row ***************************
3
               Slave_IO_State: Waiting for master to send event
4
                  Master_Host: 192.168.18.136
5
                  Master_User: backup
6
                  Master_Port: 3306
7
                Connect_Retry: 10
8
              Master_Log_File: mysql-server.000006
9
          Read_Master_Log_Pos: 333
10
               Relay_Log_File: mysqld-relay-bin.000004
11
                Relay_Log_Pos: 499
12
        Relay_Master_Log_File: mysql-server.000006
13
             Slave_IO_Running: Yes
14
            Slave_SQL_Running: Yes
15
              Replicate_Do_DB: 
16
          Replicate_Ignore_DB: 
17
           Replicate_Do_Table: 
18
       Replicate_Ignore_Table: 
19
      Replicate_Wild_Do_Table: 
20
  Replicate_Wild_Ignore_Table: 
21
                   Last_Errno: 0
22
                   Last_Error: 
23
                 Skip_Counter: 0
24
          Exec_Master_Log_Pos: 333
25
              Relay_Log_Space: 839
26
              Until_Condition: None
27
               Until_Log_File: 
28
                Until_Log_Pos: 0
29
           Master_SSL_Allowed: No
30
           Master_SSL_CA_File: 
31
           Master_SSL_CA_Path: 
32
              Master_SSL_Cert: 
33
            Master_SSL_Cipher: 
34
               Master_SSL_Key: 
35
        Seconds_Behind_Master: 0
36
Master_SSL_Verify_Server_Cert: No
37
                Last_IO_Errno: 0
38
                Last_IO_Error: 
39
               Last_SQL_Errno: 0
40
               Last_SQL_Error: 
41
  Replicate_Ignore_Server_Ids: 
42
             Master_Server_Id: 1
43
                  Master_UUID: 84dd2779-566e-11e7-b734-000c29935598
44
             Master_Info_File: /data/master.info
45
                    SQL_Delay: 0
46
          SQL_Remaining_Delay: NULL
47
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
48
           Master_Retry_Count: 86400
49
                  Master_Bind: 
50
      Last_IO_Error_Timestamp: 
51
     Last_SQL_Error_Timestamp: 
52
               Master_SSL_Crl: 
53
           Master_SSL_Crlpath: 
54
           Retrieved_Gtid_Set: 
55
            Executed_Gtid_Set: 
56
                Auto_Position: 0
57
1 row in set (0.00 sec)
13、 主庫上執行dml 和ddl ,確定從庫是否能有資料同步過來

相關推薦

MySQL主從複製搭建方案

MySQL雙機主從叢集架構,可以實現MySQL資料庫資料的安全性和高可用性。在每臺MySQL資料庫伺服器上安裝一套MySQL程式,資料庫物理檔案均在本機硬碟中,通過MySQL主從複製架構,即時同步資料,如果主伺服器MySQL資料庫宕機,另外一臺備機可以通過手動切換暫時承擔起全部功能,並且可以根據存活主機的資

(二)mysql主從複製搭建

mysql通過什麼實現主從複製? 通過mysql本身自帶的binlog日誌檔案來實現主從複製,mysql會把所有的操作儲存在binlog日誌中,從庫同步主庫中的binlog日誌,從庫得到主庫的操作記錄,從庫再執行記錄,實現了主從複製,資料一致。 主從優勢:資料庫備份  &nbs

windows MySQL主從複製搭建

一、安裝Mysql 1.本地首先需要搭建一套mysql,可以使用整合環境。 2.需要單獨在搭建mysql,用來做主從複製 3.下載安裝太麻煩這裡可以直接複製phpStudy或者WAMP整合環境裡的MySQL 4.配置 mysql環境變數 (  修改PATH,新增 D:\My

Docker Compose搭建MySQL主從複製叢集

前言 隨著應用業務資料不斷的增大,應用的 響應速度不斷下降,在檢測過程中我們不難發現大多數的請求都是 查詢操作。此時,我們可以將資料庫擴充套件成 主從複製模式,將 讀操作 和 寫操作 分離開來,多臺資料庫 分攤請求,從而 減少單庫 的 訪問壓力,進而應用得到優

linux 搭建mysql主從複製 ---->第一篇

linux下部署mysql主從複製 第一篇 1.VM安裝我就不具體介紹了,自己去下載,新建兩臺虛擬機器(ps: 虛擬機器上面需要安裝mysql環境,最好配個java環境,java 環境可有可無)     下圖為我本地的兩臺虛擬機器(192.168.226.128為mysql 主伺服器,192.168.226

MySQL-主從複製搭建從資料庫

上一遍我們成功搭建了MySQL-3380作為主從複製架構中的主資料庫,該資料庫我們用於寫資料。那麼接下來我們將搭建MySQL-3381作為從資料庫,用於讀資料。 我們嘗試裝機msi安裝程式,會發現彈出如下的彈出框。這個表示使用安裝器是無法安裝多例項的,只能手動安裝。

MySQL主從複製搭建

前言 MySQL能夠將一個 MySQL Server的 Instance 中的資料完整的複製到另外一個 MySQL Server 的 Instance 中,雖然複製過程並不是實時而是非同步進行的,但是延時非常之少 搭建步驟 1. 修改主伺服器配置 新增使用

Mycat作為中介軟體搭建Mysql主從複製---從選型到搭建的想法和記錄

想了解本人簡陋搭建過程的同學,可以忽略下面這一段: ***************************************************************************************************************

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

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

CentOS下使用docker-compose搭建django+mysql主從複製

CentOS下使用docker-compose搭建django+mysql主從複製 1、環境 2、準備 3、配置 3.1 配置docker-compose.yml 3.2 主資料庫master配置

mysql主從複製延遲問題的相關知識與解決方案

一、如何監控發生了主從延遲? 在從庫機器上,執行show slave status,檢視Seconds_Behind_Master值,代表主從同步從庫落後主庫的時間,單位為秒,若同從同步無延遲,這個值為0。 Mysql主從延遲一個重要的原因之一是:mysql是以單執

Docker學習總結(33)——Docker環境下搭建 MySQL 主從複製

搭建環境Centos 7.2 64位MySQL 5.7.13Docker 1.13.1接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。安裝doc

CentOS6.5搭建MySQL主從複製,讀寫分離(冷月宮主親自整理,最簡單明瞭)

CentOS6.5搭建MySQL主從複製,讀寫分離MySQL主從複製的優點:1、 如果主伺服器出現問題, 可以快速切換到從伺服器提供的服務,保證高可用性2、 可以在從伺服器上執行查詢操作, 降低主伺服器的訪問壓力3、 可以在從伺服器上執行備份, 以避免備份期間影響主伺服器的服

MySQL主從複製非同步原理以及搭建

MySQL主從複製的原理:   1、首先,MySQL主庫在事務提交時會把資料變更作為時間events記錄在二進位制日誌檔案binlog中;MySQL主庫上的sync_binlog引數控制Binlog日誌以什麼樣的方式重新整理到磁碟上。   2、主庫推送二進位制日誌檔案Binlog中的事件到從庫的中繼日誌R

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

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

基於Docker搭建MySQL主從複製

搭建環境Centos 7.2 64位MySQL 5.7.13Docker 1.13.1接下來,我們將會在一臺伺服器上安裝docker,並使用docker執行三個MySQL容器,分別為一主兩從。安裝docker執行命令[root@VM_0_17_centos ~]# yum install docker如果有提

linux6.4搭建mysql主從複製

1 複製概述       Mysql內建的複製功能是構建大型,高效能應用程式的基礎。將Mysql的資料分佈到多個系統上去,這種分佈的機制,是通過將Mysql的某一臺主機的資料複製到其它主機(slaves)上,並重新執行一遍來實現的。複製過程中一個伺服器充當主伺服器,而一個或

mycat搭建 基於 mysql主從複製

mycat    mycat只是一箇中間件,邏輯上的資料庫,在實際應用開發中,需要搭建mysql 的主從複製mysql主從複製的搭建    傳統的mysql主從複製有許多的缺點, 它是基於logbin日誌檔案讀入來實現主和從的資料一致,詳細的搭建過程可以參見這種搭建十分簡單,

Docker Compose搭建mysql主從複製

系統環境 docker 1.12.3 mysql5.7.17 deepin 15.3桌面版(這個沒啥影響,因為我們用docker) 要點說明 使用docker bridge網路,設定靜態IP 使用volumes掛載,不使用資料卷容器(因為我

在docker-compose搭建mysql主從複製中遇到的幾個問題

簡單記錄下配置過程:1、 配置主庫my.cnf檔案[mysqld] lower_case_table_names=1 server-id=248 # 任意數字,一般填寫伺服器IP後幾位 log_bin=/tmp/mysql/mysql-bin binlog-do-db=wha