1. 程式人生 > >一臺電腦配置資料庫主從(讀寫分離)

一臺電腦配置資料庫主從(讀寫分離)

今天自己照著網上的方法寫了一下,中間有些小問題!不過已經解決了!!!

MySQL的主從複製是通過binlog日誌來實現的,主從複製中的“主”指的是MySQL主伺服器上的資料庫,“從”指的是MySQL從伺服器上的資料庫,且這種複製是基於資料庫級別的,為此從伺服器中的資料庫名稱必須和主伺服器中的資料庫名稱保持一致,那麼,要想實現主從複製,我們至少要有兩個MySQL伺服器(最好是兩個MySQL伺服器分別位於不同的主機上,或者在一個主機上安裝兩個MySQL,埠不同即可)。

這裡我們只介紹 一主一從 的操作方法。
我的電腦已經安裝了 phpStudy 整合環境(同wamp/xampp安裝包類似),可以把它裡面的MySQL服務作為MySQL的主伺服器。那麼,我們還需要在這臺電腦上再安裝一個MySQL,作為資料庫的從伺服器。
我的電腦phpStudy 中已安裝的MySQL版本為 5.6.20,埠為3306。

我這裡又新建了一個mysql 服務(注意:這個要一個免安裝版,而且要比住資料庫版本要低才好!)
下載mysql的windows安裝包
到mysql的官網:http://dev.mysql.com/downloads/mysql/5.6.html#downloads 進行下載
注意:官網給出的安裝包有兩種格式(msi格式和 zip格式),如果下載的是msi格式的,則直接雙擊安裝即可,這裡我們下載zip格式的。
資料庫伺服器的引數:
- 主伺服器(master): IP為127.0.0.1,埠為3306
- 從伺服器(slave): IP為127.0.0.1,埠為3307
主伺服器配置:
修改主伺服器的資料庫配置檔案(E:\xampp\mysql\bin\my.ini),在 [mysqld] 標籤的最下面,新增如下程式碼:

需要備份的資料庫

binlog-do-db=test

不需要備份的資料庫

binlog-ignore-db=mysql

開啟二進位制日誌

log-bin=mysql-bin

伺服器id

server-id=1

儲存退出,重啟MySQL主伺服器。
binlog-do-db用於指定需要同步的資料庫,binlog-ignore-db指定不需要同步的資料庫,如果這兩個引數都不設定,則從伺服器會複製主伺服器的所有資料庫。

一般不用root賬號作同步賬號,為此,我們需要在主伺服器上建立一個新的使用者(如 user01,密碼為123456)。
這裡我們用命令列的方式建立,方法如下:
開啟cmd,切換至 E:\xampp\mysql\bin,用 root 賬戶連線MySQL主伺服器:
mysql -uroot -p -P3306
建立新使用者:
create user ‘user01’@’127.0.0.1’ identified by ‘123456’;
(@後面的ip地址為允許連線的客戶端的ip地址。)

然後,給新使用者配置主從複製的許可權:
grant replication slave on . to ‘user01’@’127.0.0.1’ identified by ‘123456’;
(@後面的ip地址為允許連線的客戶端的ip地址,如果改為 ‘%’,就表示客戶端沒有ip地址的限制)

如果主伺服器的資料庫(test)中,已經有資料,我們需要先手動把主伺服器中的資料複製到從伺服器。方法如下:
在本案例中,我們只備份一個數據庫(test),test中有一個表basic_user,表中也已經有了資料。為了防止我們複製資料的時候,資料庫test中的資料發生更新,我們需要先鎖定資料庫,命令如下:
flush tables with read lock;
這個命令是全域性讀鎖定,它會給主伺服器中的所有資料庫都加上讀鎖,這裡順便說一下讀鎖和寫鎖的區別:
read lock(讀鎖):也叫共享鎖,允許所有的讀操作,但阻塞寫操作,即所有連線只可以讀資料,但不允許寫資料。
write lock(寫鎖):也叫排它鎖、獨佔鎖,只允許當前連線的讀和寫,不允許其他併發的讀操作和寫操作。
鎖定主伺服器的資料庫後,我們在從伺服器中,也建立一個數據庫test,並將所有的表(包括表結構和表資料)都匯入。
然後,我們執行下面的命令,解鎖:
unlock tables;

檢視主伺服器的 master 狀態:
mysql> show master status;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000008 | 498 | test | mysql | |
+——————+———-+————–+——————+——————-+

從伺服器配置:
修改從伺服器的資料庫配置檔案(E:\mysql\my.ini),在 [mysqld] 標籤的最下面,新增如下程式碼:

port = 3307

伺服器id

server_id = 2

開啟二進位制日誌(從伺服器不是必須要開啟二進位制日誌)

log-bin=mysql-bin

儲存退出,重啟MySQL服務。

連線MySQL從伺服器:
mysql -uroot -p -P3307

配置複製的引數:
change master to master_host=’127.0.0.1’,master_user=’user01’,master_password=’123456’,master_port=3306,master_log_file=’mysql-bin.000008’,master_log_pos=498;

引數詳解:
master_host: 主伺服器的IP
master_user: 主伺服器上新建立的使用者名稱
master_password: 使用者的密碼
master_port: 主伺服器的埠,如果未曾修改,預設即可。

master_log_file: 主伺服器二進位制日誌檔案的名稱,填寫檢視主伺服器的master狀態時顯示的File的值

master_log_pos: 日誌的位置,填寫檢視主伺服器的master狀態時顯示的Position的值

啟動從伺服器的slave複製功能:
start slave;

檢視從伺服器的slave狀態:
mysql> show slave status \G
***************** 1. row *****************
Slave_IO_State: Waiting for master to send event
Master_Host: 127.0.0.1
Master_User: user01
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000009
Read_Master_Log_Pos: 120
Relay_Log_File: hp-PC-relay-bin.000004
Relay_Log_Pos: 283
Relay_Master_Log_File: mysql-bin.000009
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

如果 Slave_IO_Running 和 Slave_SQL_Running 的值都為 Yes,則說明主從複製的所有配置已成功,即從伺服器已經可以自動與主伺服器的資料庫資料實現同步了。

此後,只要主伺服器的資料有更新(比如:在 test資料庫中新建了一張表或者表中的資料發生了變化),從伺服器都會自動與主伺服器保持一致。但如果有人刻意改變了從伺服器的資料,主伺服器中的資料並不會同步更新,除非我們把這兩個MySQL伺服器設定為互為主從。

相關推薦

電腦配置資料庫主從分離

今天自己照著網上的方法寫了一下,中間有些小問題!不過已經解決了!!! MySQL的主從複製是通過binlog日誌來實現的,主從複製中的“主”指的是MySQL主伺服器上的資料庫,“從”指的是MySQL從伺服器上的資料庫,且這種複製是基於資料庫級別的,為此從伺服器

CentOS6中MySql5.6資料庫主從複製/分離

程式碼層面實現讀寫分離 在文章(一)中我們已經有了兩個資料庫而且已經實現了主從資料庫同步,接下來的問題就是在我們的業務程式碼裡面實現讀寫分離,假設我們使用的是主流的ssm的框架開發的web專案,這裡面我們需要多個數據源。 在此之前,我們在專案中一般會使用一

spring + mybatis + mysql(主從) 配置多個resource分離

改造原有的專案 實現讀寫分離 準備工作: 1.需要一個能夠執行的spring + mybatis的專案 2.mysql 主從資料庫 拆分Dao(按照讀寫去拆分) 拆分mapping檔案 新增資料庫配置檔案(jdbc.properties)

docker-compose.yml樣例mysql主從+mycat分離

mysqld 系統 環境變量 服務端 nbsp dock 自定義 host expose Docker-compose.yml文件示例 1、mysql主從復制的docker-compose.yml文件 # cat docker-compose.yml version: ‘2

使用amoeba配置mysql主從同步分離

mysql主從同步 mysql讀寫分離 amoeba搭建 使用amoeba配置mysql主從同步讀寫分離 實驗環境:需要三臺手工編譯安裝的mysql,一臺主,兩臺從主: 192.168.88.100從1: 192.168.88.10

配置mysql主從同步分離,amoeba做中間代理服務

前言 最近自己利用課餘時間研究了MySQL的的主從同步,讀寫分離的配置過程,期間遇到了很多的問題,在這篇博文中我把自己的配置過程遇到的問題和配置流程總結一下。 環境 我的伺服器叢集使用自己電腦上的虛擬機器虛擬機器模擬的,虛擬機器裝的是centos的系統 系統:三臺裝的CentOS的伺

redis在Docker下的主從複製分離、哨兵主從切換

       公司專案涉及到redis,最近不太忙於是準備仔細學習下,起初是直接在Windows下搭建,現在試試Docker下搭建redis然後試下哨兵配置,廢話不多說,直接搭建步驟: 1.Docker安裝redis 指令1)docker search redis 查詢

redis4.x 主從複製分離

基於Redis版本: redis-4.0.11 主從複製      ▶ 避免redis單點故障      ▶ 構建讀寫分離架構,滿足讀多寫少的應用場景 主從架構 一:下載 、安裝 解壓、複製: tar -zxvf redis-4.0.11.t

Docker配置mysql主從實現分離

1. 獲取mysql映象獲取映象$ sudo docker pull mysql 檢視映象$ sudo docker images REPOSITORY TAG IMAGE ID CREATED

ProxySQL分離部署

保護 info 環境 故障切換 mysql主從 start 生效 with 文件的 proxySQL是MySQL的中間件產品,是靈活強大的代理層,實現讀寫分離,支持Query路由功能,支持動態指定某個SQL進行緩存,支持動態加載配置,故障切換和一些SQL 過濾功能 環境

原理解密 → Spring AOP 實現動態資料來源分離,底層原理是什麼

開心一刻   女孩睡醒玩手機,收到男孩發來一條資訊:我要去跟我喜歡的人表白了!  女孩的心猛的一痛,回了條資訊:去吧,祝你好運!  男孩回了句:但是我沒有勇氣說不來,怕被打!  女孩:沒事的,我相信你!此時女孩已經傷心的流淚了  男孩:我已經到她家門口了,不敢敲門!  女孩擦了擦眼淚:不用怕,你是個好人,會有

windows下用機器配置分散式redis主從伺服器

目錄 1、Replication的工作原理 2、如何配置Redis主從複製 1、Replication的工作原理 在Slave啟動並連線到Master之後,它將主動傳送一條SYNC命令。此後Master將啟動後臺存檔程序,同時收集所有接收到的用於修改資料集的命令,在後臺

CentOS7,MySQL主從配置分離MySQL主從分離、分散式、資料庫分離主從配置

一、實驗目標搭建兩臺MySQL伺服器,一臺作為主伺服器,一臺作為從伺服器,主伺服器進行寫操作,從伺服器進行讀操作。二、測試環境主資料庫: CentOS7, MySQL15.1 , 192.168.1.233從資料庫: CentOS7, MySQL15.1 , 192.168.

電腦配置多個GigHub賬號

換了新的公司,原來的公司用SVN(比較老了),自己平時用碼雲(Gitee),新公司使用GitHub。前天通知我註冊GitHub賬號,但是並未通知使用者名稱的事情(要求用自己的名字),原來的GitHub賬號不符合要求,只能重新再申請一個。 重新申請了GitHub賬號之後,當然又要配置新的SSH公鑰,原來自己用

Redis 主從複製(分離)————哨兵(主從切換)配置轉載

當資料量變得龐大的時候,讀寫分離還是很有必要的。同時避免一個redis服務宕機,導致應用宕機的情況,我們啟用sentinel(哨兵)服務,實現主從切換的功能。redis提供了一個master,多個slave的服務。          準備三個redis服務,依次命名資料夾子

電腦配置多個tomcat,同時執行,互不衝突

當第一個tomcat啟動後,後面tomcat的server.xml中的埠不管怎麼改,仍然會報埠衝突。後來在dos下執行才發現所有的tomcat都會去找CATALINA_HOME和CATALINA_BASE這兩個環境變數,因此步驟如下: 1.使用壓縮版的tom

MySQL第六天主從同步,數據分離

dsfaday05一、數據備份與恢復-增量備份和增量恢復a.binlog日誌介紹(二進制文件):使用Mysql數據庫服務日誌文件類型的一種。記錄除查詢之外的sql命令。默認沒啟用 查詢的sql包括:select desc show 不是查詢的命令:insert update delete create dr

ORACLE 資料同步 容災備份恢復 主從架構 分離 OGG,ADG,DSG,高階複製,流複製,logmnr

ORACLE 幾種同步災備手段(OGG,ADG,DSG,高階複製,流複製,logmnr) 2017年07月14日 13:45:47 小學生湯米 閱讀數:11073 目前所接觸的Oracle 的災備以及同步手段主要有ADG,OGG,DSG,高階複製,流複製以及自主開發的基於

Java架構學習三十redis高階&redis高可用&主從複製&分離&叢集&哨兵機制&持久化RDB儲存&持久化AOF儲存&事務機制&Redis釋出訂閱

redis高階 一、基礎回顧 什麼是redis? 答:redis是非關係型資料庫,使用redis的目的是:減輕資料庫訪問壓力。 資料庫是做IO操作,使用redis是記憶體操作,記憶體資料庫, 效率要比IO效率高。這個就是快取。 如果資料庫值與redis

資料庫設計】分庫,分表,主從分離

Mysql效能優化 一 資料庫設計合理性 1.1正規化          為了建立冗餘較小、結構合理的資料庫,設計資料庫時必須遵循一定的規則。在關係型資料庫中這種規則就稱為正規化。正規化是符合某一種設計要求的