MySQL主從複製步驟詳解

來源:互聯網
上載者:User

標籤:mysql主從複製

MySQL主從複製步驟詳解

1 主從伺服器開啟時間同步

[[email protected]  ~]# ntpdate 172.18.0.1

2 恢複操作

       首先判斷在構建主從複製架構時主伺服器是否有資料。若是已有資料對其備份後在從伺服器恢複。若主從架構的構建都為從0開始。可以略過此步。主從複製的起始點為備份操作時,主節點所處的記錄檔及其事件位置。

       注意:從伺服器的MySQL版本需和主伺服器的版本相同或高於其版本

3 配置主要資料庫

[[email protected]  ~]# vim /etc/my.cnf

[mysqld]

log_bin  = /var/log/mariadb/mysql-bin 

server-id  = 1  

innodb_file_per_table  = on

skip_name_resolve  = on

log_bin:該參數後跟檔案路徑表示開啟二進位日誌,所跟路徑mysql使用者必須有讀寫權限。建議與資料目錄分別存放,並放置於不同磁碟所在分區,用以降低其損壞率。

server-id:在做主從同步架構中,主伺服器的server-id為1,從伺服器不為1。

Innodb_file_per_table:後跟on或者1為設定InnoDB為獨立資料表空間模式,在設定此參數後使用InnoDB引擎的每個資料庫的每個表都會建立一個獨立的資料表空間,該項有一下特點:每個表都有自己獨立的資料表空間;每個表的資料和索引都會儲存在自己的資料表空間中。可以實現單表在不同資料庫之間移動(單表匯入,匯出);空間可以回收(除drop table操作外,資料表空間不能自己回收)。

skip_name_resolve:跳過使用DNS網域名稱解析。

       啟動服務(若資料庫正在使用並開啟binlog可不重啟)

[[email protected]  ~]# systemctl restart mariadb

添加主從複製的使用者:

MariaDB  [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO  [email protected]‘192.168.10.%‘ IDENTIFIED BY ‘copypass‘;

MariaDB  [(none)]> FLUSH PRIVILEGES;

4 配置從資料庫

[[email protected]  ~]# vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql/

server-id=2

relay_log=relay-log

relay_log_index=relay-log.index

read_only=1

innodb_file_per_table=1

skip_name_resolve=1

datadir:指定資料所在目錄

server-id不能為1,當一主多從時,其server-id也最好不同

relay_log:後跟路徑表示開啟中繼日誌,使用相對路徑時表示在於資料目錄在同一目錄下。

read_only:從伺服器唯讀。其他與主伺服器一致。

啟動服務:

[[email protected]  storage1 ~]# systemctl start mariadb

與主伺服器建立串連

MariaDB  [(none)]> CHANGE MASTER TO MASTER_HOST=192.168.10.6,

    -> MASTER_USER=copyuser,

    -> MASTER_PASSWORD=copypass,

    -> MASTER_LOG_FILE=‘ mysql-bin.000005‘,

-> MASTER_LOG_POS=24622;

MASTER_LOG_FILE, MASTER_LOG_FILE為備份時截止的事務時間點。可在恢複時使用的備份目錄下xtrabackup_info檔案中找出。

[[email protected] storage1 ~]# grep ‘binlog_pos‘  2017-11-13_20-29-22/xtrabackup_info

binlog_pos = filename ‘mysql-bin.000005‘, position ‘24622‘

當然,如果主從複製架構構建時為從0開始。需要在主伺服器上使用以下命令查看:

[[email protected]  ~]# mysql

MariaDB  [(none)]> show master status;

+------------------+----------+--------------+------------------+

|  File             | Position |  Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

|  mysql-bin.000005 |    49652 |              |                  |

+------------------+----------+--------------+------------------+

1  row in set (0.00 sec)

開啟一個IO_THREAD線程

MariaDB  [(none)]> START SLAVE ;

START SLAVE [IO_THREAD|SQL_THREAD];# 啟動複製線程,停止的話使用STOP

 

主從複製架構中應注意要點:

1 應限制從伺服器為唯讀

       在從服務上設定read_only=ON;此限制對擁有SUPER許可權的使用者均無效

 

              如何阻止所有使用者:     

                  mysq> FLUSH TABLES WITH READ LOCAK;    # 連上去不退出(測試時使用)

2如何保證主從複製的事物安全?

       在主節點啟用參數:sync_binlog=ON,即遇到事物提交時,必須將bin-log緩衝區中記錄下來的事件立即刷寫至磁碟上的二進位記錄檔中,從而通知從節點來複製同步。也可使用sysnc_binlog=n的方式,來開啟此選項,當n次事務提交之後,MySQL執行一次fsync之類的磁碟同步命令,將緩衝區中內容寫入磁碟。當n=0時,表示當事務提交之後,只將binlog_cache中的資料寫入bin_log檔案,而不進行磁碟同步,這種方式效能最好,但無法保證事務安全性

如果使用的是innodb儲存引擎:

innodb_flush_logs_at_trx_commit= 1    # 將記憶體中的事物相關立即寫到磁碟上的事物日誌中去。

innodb_support_xa= ON      # xa:分布式式事物;即是否讓innodb支援分布式事物,分布式提交

在SLAVE節點: 

skip_slave_start= ON    # 關閉自動認可。選取手動啟動,避免錯誤

必要的時候可以開啟# MariaDB[(none)]> show variables like "%relay_log%";

    主節點:

       sync_slave_start = ON

    從節點:

       sync_relay_log

       sync_relay_log_info

所遇故障:

 使用備份恢複至從檔案時在copy-back過程中出現Error: datadir must be specified.

故障說明:

說明是恢複時,未能找到資料恢複目錄,此時只需要在mariaDB的設定檔中指定資料庫檔案目錄即可

解決辦法:

在設定檔中添加datadir參數。

本文出自 “Keep simple keep stupid” 部落格,請務必保留此出處http://yangzhiheng.blog.51cto.com/11586378/1981493

MySQL主從複製步驟詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.