Mysql資料庫主從複製部署詳解

來源:互聯網
上載者:User

650) this.width=650;" title="mysql-ms1.png" src="http://www.bkjia.com/uploads/allimg/131228/224554OO-0.png" />

目的:

  1. 主從伺服器設定的穩健性得以提升,如果主伺服器發生故障,可以把本來作為備份的從伺服器提升為新的主伺服器。

  2. 在主從伺服器上分開處理使用者的請求,可獲得更短的回應時間。

  3. 用從伺服器做資料備份而不會佔用主伺服器的系統資源。

 

情境描述

主伺服器:IP地址192.168.56.128,mysql已經安裝,無使用者資料。

從伺服器:IP地址192.168.56.129,mysql已經安裝。

主伺服器的mysql服務已經正常啟動。

 

主從複製配置

  1. 主伺服器上進行操作

1)建立使用者並授權

insert into mysql.user(host,user,password) values("localhost","rep1",password("mysql"));flush privileges;grant replication slave on *.* to rep1@192.168.56.129 identified by 'mysql';

2)查詢主要資料庫的狀態

mysql> show master status;

650) this.width=650;" title="m1.png" src="http://www.bkjia.com/uploads/allimg/131228/2245543B9-1.png" />

記下File以及Position的值,在後面進行從伺服器操作的時候需要使用。

  1. 配置從伺服器

1)修改從伺服器的設定檔/etc/my.cnf

使得“server-id=2”,並確定這個id沒有被別的mysql服務所使用。

2)啟動mysql服務

mysqld_safe --user=mysql &

3)mysql登入

mysql -uroot -p

4)執行同步的sql語句

mysql> change master to master_host='192.168.56.128',master_user='rep1',master_password='mysql',master_log_file='mysql-bin.000004',master_log_pos=477;

正確執行後再執行

mysql> start slave;

就啟動了slave同步功能。

5)主從同步檢查

執行如下語句

mysql>show slave status\G

來檢查從伺服器的同步情況,一個正常的輸出結果應該如下面的形式:

650) this.width=650;" title="m2.png" style="float:none" src="http://www.bkjia.com/uploads/allimg/131228/22455411a-2.png" />

650) this.width=650;" title="m3.png" style="float:none" src="http://www.bkjia.com/uploads/allimg/131228/2245541144-3.png" />

 

Slave_IO進程以及slave_SQL進程都必須正常運行,在狀態輸出中表現為:“slave”;否則都是不正確的狀態如一個值是Yes,另一個是No則不行)。

 

如果主要資料庫伺服器已經存在使用者資料,那麼在進行主從複製時,需要做以下處理。

1)主要資料庫鎖表操作,不讓資料再進行寫入動作。

mysql>flush tables with read lock;

2)查看主要資料庫的狀態

mysql>show master status;

650) this.width=650;" title="m4.png" src="http://www.bkjia.com/uploads/allimg/131228/2245543102-4.png" />

記下File以及Position的值,以備從伺服器使用。

3)把主伺服器的資料檔案複製到從伺服器,最好先用tar歸檔壓縮處理一下

4)取消主要資料庫鎖定

mysql>unlock tables;

從伺服器的操作和前面的步驟一樣,略過。

  1. 實驗一

在主要資料庫伺服器上建立庫和表,然後插入記錄,再登入到從伺服器,查看是否也建立相一致的庫和表以及記錄。

1)主伺服器上的操作

mysql>create database first_tb;

①在主要資料庫伺服器建立庫first_tb;

mysql>create table first_db(id int(3)),name char (10));

②在主要資料庫伺服器建立表first_tb;

mysql>insert into first_tb values (001,'myself');

③在主要資料伺服器的表first_tb中插入記錄;

2)從伺服器上查看

mysql>show databases;

①資料庫first_db自動產生

②表first_tb也自動產生,資料記也錄存在。

  實驗二

匯入資料庫,在主庫上查看現在的資料庫

650) this.width=650;" title="m5.png" src="http://www.bkjia.com/uploads/allimg/131228/224554C38-5.png" />

建立資料庫buy並且匯入資料

650) this.width=650;" title="m7.png" src="http://www.bkjia.com/uploads/allimg/131228/2245541005-6.png" />

在從庫上查看,資料庫已經完全匯入。

650) this.width=650;" title="m6.png" src="http://www.bkjia.com/uploads/allimg/131228/2245545493-7.png" />

本文出自 “老徐的私房菜” 部落格,謝絕轉載!

相關文章

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.