mysql 主從優點_MySql主從配置實踐及其優勢淺談

1、增加兩個MySQL,我將C:\xampp\mysql下的MYSQL復制了一份,放到D:\Mysql2\Mysql5.1

修改my.ini(linux下應該是my.cnf):

[client]

port =?3307

[mysqld]

port =?3307

basedir=D:/Mysql2/Mysql5.1/mysql

datadir=D:/Mysql2/Mysql5.1/mysql/data/

之后,再增加MySQL2服務,

mysqld?–install?MySQL2??--defaults-file=D:\Mysql2\Mysql5.1\mysql\my.ini(需要管理員權限,否則會被無情拒絕)

另一個MySQL將端口號設置為3308服務名為MySQL1(打算用做從數據庫)

2、新建了一個test數據庫,新建一張twenty_million表(id,name,value)往里面插入2000W條數據(5min)

3、主從數據庫同步配置, 如果不是同一個臺服務器上的需要設置權限用戶給它。

mysql>?GRANT?REPLICATION?SLAVE?ON?*.*?TO?'slave001'@'192.168.0.99'?IDENTIFIED?BY?'123456';

Query?OK,?0?rows?affected?(0.13?sec)

因為我的是一臺機器上進行測試,所以直接用root用戶了,密碼123

修改主數據庫的配置文件,my.ini,開啟BINLOG,并設置server-id的值,修改之后必須重啟Mysql2服務:

[mysqld]

log-bin=D:/Mysql2/Mysql5.1/mysql/log/mysql-bin.log

server-id=1

之后可以得到主服務器當前二進制日志名和偏移量,這個操作的目的是為了在從數據庫啟動后,從這個點開始進行數據的恢復

接下來停止主數據的更新操作,并生成數據庫的備份,可以通過mysqldump到從數據庫,當然也可以直接用cp命令將數據文件復制到從數據庫中去(1%拷了384秒,情何以堪?我還不如重新插一遍測試數據呢,果斷掐了)

也算學個命令,其實完全可以用navicate里的導出數據庫再導入數據庫

進行從數據庫的配置:

修改my,ini(my.cnf)

[mysqld]

server-id=2

log_bin?=?/var/log/mysql/mysql-bin.log

master-host?=192.168.1.100(本機的話:127.0.0.1//localhost是它的別名!)

master-user=test

master-pass=123456

master-port?=3306

master-connect-retry=60

replicate-do-db?=test

但是,我一直都無法啟動,晚上搞了很久也沒搞出個所以然來,最后只能添加錯誤日志

log-error=D:/Mysql1/Mysql5.1/mysql/log/mysql-bin.log

net?start?mysql1

日志截圖

繼續度娘的干活:

然后我就想知道自己的mysql版本,進入cmd:

我次奧,我一直以為我的mysql是5.1啊.知道了問題原因,解決也比較容易

在從數據庫的my.ini中只需要添加兩項:

server-id?=?2

replicate-do-db?=?mydatabase

之后再在cmd下:

mysql>?change?master?to?master_host='127.0.0.1',master_user='root',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=60,?master_port=3307;

其中master_log_file和master_log_pos通過在主數據庫show?master?status;得到。

端口不是默認端口的話,如master_port=3307,不要加引號。

接下來就是重啟服務,先啟動主數據庫服務(我的是mysql2),再啟動從數據庫服務,然后就算完成了主從配置,在主數據庫中更改test數據庫中數據,理論上,在從數據庫中也會做相應的更改

當然這是理論上的,實際上,我特么又出問題了,從數據庫中的數據并沒有按照理論上做出相應的更改,我仔細看了下show?slave?stats\G和別人成功的截圖對比下,其中slave_IO_Running這項,我的是NO人家的是YES,目測是這個問題,查看log日志

在主數據庫中

再更改從數據庫(建議開兩個CMD,我之前一直都是一個CMD,exit?cd麻煩死)

搞定,測試,成功!

4、最后總要說說它的實際作用的么,在我百度之前,我在想,這不就是數據庫的實時備份么,也沒什么大不了的,這樣的想法,只能說明自己對數據庫讀寫壓力完全不了解。

在MySQL數據庫中,支持單項、異步復制。在復制過程中,一個服務器充當主服務器,而另外一臺服務器充當從服務器。如下圖所示。此時主服務器會將更新信息寫入到一個特定的二進制文件中。并會維護文件的一個索引用來跟蹤日志循環。這個日志可以記錄并發送到從服務器的更新中去。當一臺從服務器連接到主服務器時,從服務器會通知主服器從服務器的日志文件中讀取最后一次成功更新的位置。然后從服務器會接收從那個時刻起發生的任何更新,然后鎖住并等到主服務器通知新的更新。

好處一:實現服務器負載均衡

即可以通過在主服務器和從服務器之間切分處理客戶查詢的負荷,從而得到更好的客戶相應時間。通常情況下,數據庫管理員會有兩種思路。

一是在主服務器上只實現數據的更新操作。包括數據記錄的更新、刪除、新建等等作業。而不關心數據的查詢作業。數據庫管理員將數據的查詢請求全部?轉發到從服務器中。這在某些應用中會比較有用。如某些應用,像基金凈值預測的網站。其數據的更新都是有管理員更新的,即更新的用戶比較少。而查詢的用戶數?量會非常的多。此時就可以設置一臺主服務器,專門用來數據的更新。同時設置多臺從服務器,用來負責用戶信息的查詢

二是在主服務器上與從服務器切分查詢的作業。在這種思路下,主服務器不單單要完成數據的更新、刪除、插入等作業,同時也需要負擔一部分查詢作業。而從服務器的話,只負責數據的查詢。當主服務器比較忙時,部分查詢請求會自動發送到從服務器重,以降低主服務器的工作負荷。

好處二:通過復制實現數據的異地備份

如上圖所示,可以定期的將數據從主服務器上復制到從服務器上,這無疑是先了數據的異地備份。在傳統的備份體制下,是將數據備份在本地。此時備份?作業與數據庫服務器運行在同一臺設備上,當備份作業運行時就會影響到服務器的正常運行。有時候會明顯的降低服務器的性能。同時,將備份數據存放在本地,也?不是很安全。如硬盤因為電壓等原因被損壞或者服務器被失竊,此時由于備份文件仍然存放在硬盤上,數據庫管理員無法使用備份文件來恢復數據。這顯然會給企業?帶來比較大的損失。

好處三:提高數據庫系統的可用性

數據庫復制功能實現了主服務器與從服務器之間數據的同步,增加了數據庫系統的可用性。當主服務器出現問題時,數據庫管理員可以馬上讓從服務器作為主服務器,用來數據的更新與查詢服務。然后回過頭來再仔細的檢查主服務器的問題。此時一般數據庫管理員也會采用兩種手段。

一是主服務器故障之后,雖然從服務器取代了主服務器的位置,但是對于主服務器可以采取的操作仍然做了一些限制。如仍然只能夠進行數據的查詢,而?不能夠進行數據的更新、刪除等操作。這主要是從數據的安全性考慮。如現在一些銀行系統的升級,在升級的過程中,只能夠查詢余額而不能夠取錢。這是同樣的道?理。

二是從服務器真正變成了主服務器。當從服務器切換為主服務器之后,其地位完全與原先的主服務器相同。此時可以實現對數據的查詢、更新、刪除等操?作。為此就需要做好數據的安全性工作。即數據的安全策略,要與原先的主服務器完全相同。否則的話,就可能會留下一定的安全隱患

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python 多線程并發編程(生產者、消費者模式),邊讀圖像,邊處理圖像,處理完后保存圖像實現提高處理效率

文章目錄需求實現先導入本次需要用到的包一些輔助函數如下函數是得到指定后綴的文件如下的函數一個是讀圖像,一個是把RGB轉成BGR下面是主要的幾個處理函數在上面幾個函數構建對應的處理函數main函數按順序執行結果需求 本次的需求是邊讀圖像,邊處理圖像…

Sharepoint學習筆記—Site Definition系列-- 2、創建Content Type

Sharepoint本身就是一個豐富的大容器,里面存儲的所有信息我們可以稱其為“內容(Content)”,為了便于管理這些Conent,按照人類的正常邏輯就必然想到的是對此進行“分類”。分類所涉及到的層面又必然包括: 1、分類的標準或特征描述{即&#xf…

arduino byte轉string_Java數組轉List集合的三駕馬車

點擊上方 藍字關注我們來源:blog.csdn.net/x541211190/article/details/79597236前言本文中的代碼命名有的可能不太規范,是因為沒法排版的問題,小仙已經很努力去解決了,希望各位能多多點贊、分享。好了,不多bb了(不要讓…

ES6筆記(4)-- Symbol類型

系列文章 -- ES6筆記系列 Symbol是什么?中文意思是標志、記號,顧名思義,它可以用了做記號。 是的,它是一種標記的方法,被ES6引入作為一種新的數據類型,表示獨一無二的值。 由此,JS的數據類型多了…

mysql類型說明_MYSQL 數據類型說明

MySQL支持大量的列類型,它可以被分為3類:數字類型、日期和時間類型以及字符串(字符)類型。本節首先給出可用類型的一個概述,并且總結每個列類型的存儲需求,然后提供每個類中的類型性質的更詳細的描述。概述有意簡化,更…

LeetCode OJ - Convert Sorted List to Binary Search Tree

題目: Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST. 解題思路: 注意是讓構造平衡二叉搜索樹。 每次將鏈表從中間斷開,分成左右兩部分。左邊部分用來構造左子樹&#xff…

手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行

文章目錄手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行打開Ubuntu終端創建 helloworld.c編譯C文件手把手教你如下在Linux下如何寫一個C語言代碼,編譯并運行 打開Ubuntu終端 我這里的終端是Windows下的WSL,如果有疑問,…

郵件群發工具的編寫(二)數據的保存

數據的保存與讀取 人類是在不斷探索與改進中進步的 上一篇,郵件群發工具的編寫(一)郵件地址提取,我們講到了郵箱的提取。 那么這一篇,講一下提取完的郵箱信息的保存和讀取。 首先,我希望對上一篇郵箱提取類…

mysql 文件描述符_MySQL沒有發布臨時文件描述符

幾天前,我們遇到了MySQL安裝的一些嚴重問題:MySQL不斷打開臨時文件(正常行為)但這些文件從未發布過.結果是,最終磁盤空間耗盡,我們必須重新啟動服務并手動清理/ tmp.使用lsof,我們看到這樣的事情:mysqld 16866 mysql 5u REG 8,3 0 692 /tmp/ibyWJylQ (de…

c++ lambda函數_C++11 之 lambda函數的詳細使用

1. lambda 函數概述lambda 表達式是一種匿名函數,即沒有函數名的函數;該匿名函數是由數學中的λ演算而來的。通常情況下,lambda函數的語法定義為:[capture] (parameters) mutable ->return-type {statement}其中:[c…

zabbix監控 openstack 的實例的資源使用情況

領導提出的需求:在不給云主機安裝客戶端的情況下,監控云主機的 cpui 內存 網絡 io,并且能出圖。想了幾個方案:1、ceilometer取數據,存入mangodb,用zabbix來讀mangodb數據繪圖2 ceilometer 取數據 &#xff…

pytorch 正向與反向傳播的過程 獲取模型的梯度(gradient),并繪制梯度的直方圖

記錄一下怎樣pytorch框架下怎樣獲得模型的梯度 文章目錄引入所需要的庫一個簡單的函數模型梯度獲取先定義一個model如下定義兩個獲取梯度的函數定義一些過程與調用上述函數的方法可視化一下梯度的histogram引入所需要的庫 import os import torch import torch.nn as nn impor…

2012-9

響應式設計的典范 http://www.bostonglobe.com/ 網站測試頁面 http://www.webpagetest.org/ 編程算法 http://blog.sina.com.cn/s/articlelist_1647038822_1_1.html C Programmers Cookbook http://www.cppblog.com/mzty/category/7609.html Blade 是一個現代構建系統&#xff…

PV操作 (轉載)

PV操作與信號量的處理相關,P表示通過的意思,V表示釋放的意思。信號量是最早出現的用來解決進程同步與互斥問題的機制,包括一個稱為信號量的變量及對它進行的兩個原語操作。 信號量(semaphore)的數據結構為一個值和一個…

ubuntu升級python_Ubuntu 升級python3為更高版本【已實測】

2020-04-13 更新安裝步驟: 1. 先update一下 sudo apt update 2. 安裝依賴庫 sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-d…

mysql5.0 java連接_Java連接mysql5.0

網上的資料真爛,千篇一律的拷貝的,根本不能用,鄙視! 正題: 到MYSQL網站下載mysql-connector-java-5.0.4.zip文件,解壓; 解壓后有一個文件:mysql-connector-java-5.0.4-bin.jar 把這個…

Framework打包

2019獨角獸企業重金招聘Python工程師標準>>> iOS app需要在許多不同的CPU架構下運行: arm7: 在最老的支持iOS7的設備上使用 arm7s: 在iPhone5和5C上使用 arm64: 運行于iPhone5S的64位 ARM 處理器 上 i386: 32位模擬器上使用 x86_64: 64為模擬器上使用…

windows 10 下利用WSL的Linux環境實現vscode C/C++環境的配置

本文主要結合二個工具,介紹如何在windows搭建Linux開發環境: WSL(Windows Subsystem for Linux)VSCode(Visual Studio Code) 文章目錄WSL安裝VSCode安裝配置Linux下的C/C環境1. 打開WSL的控制臺2. 更新ubuntu軟件3. 安裝GCC和GDB4. 配置VSCode(1). 打開…

java類初始化順序

轉自:http://zangweiren.iteye.com/blog/208122 對于靜態變量、靜態初始化塊、變量、初始化塊、構造器,它們的初始化順序以此是(靜態變量、靜態初始化塊)>(變量、初始化塊)>構造器。我們也可以通過下…

Java 8 - Interface Default Method接口默認方法

Java 8 相比于Java 7 推出了幾大特色(features)(接口默認方法)default methods in interface, (接口靜態方法)static method in interface, 函數編程(functional programming), lamda expression, stream API.這里首先…