MySQL的Master/Slave群集安裝和配置

本文介紹MySQL的Master/Slave群集安裝和配置,版本號安裝最新的穩定版GA 5.6.19。

為了支持有限HA。我們用Master/Slave讀寫簡單孤立的集群。有限HA這是當Master不可用,數據不會丟失。但在Master寫的,必須手工處理故障。假設要支持更高的可用性。能夠使用兩臺Master來做熱切換。

Master和Slave的MySQL安裝是同樣的,僅僅是my.cnf的配置不同,須要配置二進制日志文件復制。

沒有特殊說明,命名中帶#的為root用戶操作。帶$的為mysql?Linux用戶的操作。

安裝準備

1. 在安裝MySQL前,須要確認以下的系統軟件已經安裝在Linux中。

軟件名稱

軟件描寫敘述

gcc-4.4.7

編程語言編譯器

gcc-c++-4.4.7

C++語言編譯器

cmake-2.6.4-5

跨平臺的開源構建系統

ncurses-devel-5.7-3.20090208

控制打印控制臺屏幕

2. 創建mysql?Linux用戶

# groupadd mysql

# useradd -g mysql mysql

# passwd mysql

3.?準備安裝文件夾

創建MySQL安裝文件夾,并賦權限給mysql用戶:

# mkdir /usr/local/mysql-5.6.19

# chown mysql:mysql /usr/local/mysql-5.6.19

# chmod -R 770 /usr/local/mysql-5.6.19

4. 創建MySQL數據存儲文件夾:

# mkdir /data

# mkdir /data/mysql

# chown mysql:mysql /data/mysql

5. 授權MySQL解壓源代碼文件夾/usr/local/src文件夾的可運行權限給全部用戶:

# chmod -R 757 /usr/local/src

安裝MySQL

1. 解壓縮安裝包:

$ cd /usr/local/src

$ tar -xzvf mysql-5.6.19.tar.gz

2. 配置MySQL編譯參數

$ cd /usr/local/src/mysql-5.6.19

$ cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-5.6.19\

?????? -DMYSQL_DATADIR=$MYSQL_DATA_PATH\

?????? -DSYSCONFDIR=/usr/local/mysql-5.6.19/conf\

?????? -DDEFAULT_CHARSET=utf8\

?????? -DDEFAULT_COLLATION=utf8_general_ci\

?????? -DWITH_READLINE=1\

?????? -DWITH_INNOBASE_STORAGE_ENGINE=1\

-DWITH_ARCHIVE_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

備注:

-DCMAKE_INSTALL_PREFIX: 配置MySQL的安裝文件夾。

-DMYSQL_DATADIR: 配置MySQL的數據文件夾。

-DSYSCONFDIR: ?配置MySQL的配置文件文件夾。

-DDEFAULT_CHARSET: 默認字符集。

-DDEFAULT_COLLATION:設定默認語言的排序規則。

-DWITH_READLINE:支持批量導入mysql數據。

-DWITH_INNOBASE_STORAGE_ENGINE:使用INNOBASE存儲引擎。

-DWITH_ARCHIVE_STORAGE_ENGINE:常應用于日志記錄和聚合分析,不支持索引。

-DWITH_BLACKHOLE_STORAGE_ENGINE:黑洞存儲引擎。

-DWITH_PERFSCHEMA_STORAGE_ENGINE:性能模式引擎。

3.?運行make

$ make

$ make install

4. 改動myql用戶的環境變量,添加MYSQL_HOME。并把bin加到PATH:

$ vi ~/.bash_profile

在文件里添加藍色字體部分:

# User specific environment and startup programs

# MySQL home文件夾

export MYSQL_HOME=/usr/local/mysql-5.6.19

?

PATH=$PATH:$HOME/bin:$MYSQL_HOME/bin

?

export PATH









$ source ~/.bash_profile

初始化MySQL

1. 安裝service腳本

# cp /usr/local/mysql-5.6.19/support-files/mysql.server/etc/init.d/mysqld

# chown mysql:mysql/etc/init.d/mysqld

# chmod 700 /etc/init.d/mysqld

2.?創建mysql權限數據庫

$ $MYSQL_HOME/scripts/mysql_install_db--basedir=$MYSQL_HOME --datadir=/data/mysql

3. 創建PID文件文件夾

$ mkdir $MYSQL_HOME/var

4. 為master配置my.cnf

my.cnf格式不對,非常easy在啟動時錯誤,最好在原有文件的基礎上通過vi工具在linux上改動。

假設文件已經損壞,能夠通過默認的模板中拷貝:

$ cp $MYSQL_HOME/support-files/my-default.cnf$MYSQL_HOME/my.cnf

編輯my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件里添加藍色字體部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

?

[mysqld]

?

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

?

# Remove leading # to turn on a very important data integrity option: logging

# changes to the binary log between backups.

log_bin=master-bin

log_bin_index=master-bin.index

?

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first master server id

server_id = 1

socket = /tmp/mysql.sock

pid-file = ?/usr/local/mysql-5.6.19/var/master.pid

?

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

?

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


































5. 為slave配置my.cnf

和master的配置文件一樣進行改動。但注意文件里的log文件名稱、datadir和server_id等內容不同。

編輯my.cnf

$ vi $MYSQL_HOME/my.cnf

在文件里添加藍色字體部分:

# For advice on how to change settings please see

# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html

?

[mysqld]

?

# Remove leading # and set to the amount of RAM for the most important data

# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 256M

innodb_flush_log_at_trx_commit=1

?

# Replication

# relay-log=slave-relay-bin

# relay-log-index=slave-relay-bin.index

?

# These are commonly set, remove the # and set as required.

# basedir = .....

datadir = /data/mysql

port = 3306

# first slave server id of master 1

server_id = 101

socket = /tmp/mysql.sock

pid-file = ?/usr/local/mysql-5.6.19/var/slave.pid

?

# Remove leading # to set options mainly useful for reporting servers.

# The server defaults are faster for transactions and fast SELECTs.

# Adjust sizes as needed, experiment to find the optimal values.

# join_buffer_size = 128M

# sort_buffer_size = 2M

# read_rnd_buffer_size = 2M

?

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

































6.?啟動MySQL

啟動和停止master和slave都全然一樣。

$ service mysqldstart

通過以下命令查看是否啟動成功:

$ service mysqldstatus

7.?停止MySQL

$ service mysqld stop

管理MySQL安全性

默認MySQL的root的用戶password為空。為了提高安全性,應該設置root用戶一個安全的password。

在server上通過mysql用戶打開MySQLclient:

$ mysql –u root

設置一個安全的password:

mysql> SET PASSWORD FORroot@localhost=PASSWORD('secret');

配置Master和Slave之間的復制

1. 創建運行復制的MySQL用戶

在Master上創建一個復制用戶,當中secret為用戶的password:

mysql> CREATEUSER repl_user IDENTIFIED BY 'secret';

并賦給復制權限:

mysql>GRANTREPLICATION SLAVE ON *.* TO repl_user;

2. 鎖定Master并獲取二進制日志位置值

獲取讀鎖:

mysql> FLUSH TABLES WITHREAD LOCK;

顯示當前二進制文件名稱及位置值:

mysql> SHOW MASTER STATUS;

3. 通過mysqldump工具獲取Master數據快照

在另外一個會話中在Master上運行:

$ mysqldump -u root-p --all-databases --master-data > data_dump.sql

運行后。保存在當前文件夾中。

4. 釋放Master上的讀鎖

在獲取讀鎖的會話中。運行釋放鎖命令:

mysql> UNLOCK TABLES;

5. 導入dump數據到Slave中

通過scp拷貝data_dump.sql到Slave的機器上。

$ scp data_dump.sqlmysql@<ip of slave>:/home/mysql

在Slave上通過以下的命令導入到Slave的MySQL中。

$ mysql –u root -p

mysql> source data_dump.sql;

6. 配置Master和Slave之間的復制

mysql> CHANGE MASTER TO MASTER_HOST='<ip or hostame of master>',

MASTER_USER='repl_user',

MASTER_PASSWORD='secret',

MASTER_PORT = 3306,

MASTER_LOG_FILE='master-bin.000003',

MASTER_LOG_POS=881;

上面的MASTER_LOG_FILE和MASTER_LOG_POS須要配置6.2中查詢到的信息。<ipor hostame of master>是Master的IP或主機名。

啟動Slave:

mysql> START SLAVE;

7. 驗證Master和Slave的狀態

在Master上運行:

mysql> SHOW MASTER STATUS;

在Slave上運行:

mysql> SHOW SLAVE STATUS;

上述資料顯示,無論是什么錯誤,Slave_IO_State信息‘Waitigfor master to send event’,說明復制連接配置OK。


至今,二MySQL的Master/Slave集群模式已成功部署。能夠Master運行數據更新操作,研究發現,正常的副本Slave上。

轉載于:https://www.cnblogs.com/blfshiye/p/5049055.html

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

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

相關文章

動態申請二維數組

以下是動態申請a[m][n]的源代碼 代碼一&#xff1a; /* 編譯器&#xff1a;DEV C */ #include<stdio.h> #include<stdlib.h> int main() {int **a;int i,j,m,n;scanf("%d%d",&m,&n); a (int **)malloc(sizeof(int *)*m);for (i0;i<m; i){a[i…

判斷線段和直線相交 POJ 3304

1 // 判斷線段和直線相交 POJ 33042 // 思路&#xff1a;3 // 如果存在一條直線和所有線段相交&#xff0c;那么平移該直線一定可以經過線段上任意兩個點&#xff0c;并且和所有線段相交。4 5 #include <cstdio>6 #include <cstring>7 #include <iostream>8 …

JavaOne正在重建動力

在JavaOne上度過了一個非常忙碌的一周&#xff0c;今年的活動有很多讓人喜歡的地方。 有很多驚喜的公告&#xff0c;很多很好的內容/會議&#xff0c;并且在場地和組織上都有很多改進。 對于一直耐心等待我發表我所有演講的人們&#xff0c;我為您的延遲表示歉意……給4個演講一…

tensorflow http調用_《TensorFlow 內核剖析》筆記——系統架構

3 系統架構系統整體組成&#xff1a;Tensorflow的系統結構以C API為界&#xff0c;將整個系統分為前端和后端兩個子系統&#xff1a;前端構造計算圖后端執行計算圖&#xff0c;可再細分為&#xff1a;運行時&#xff1a;提供本地模式和分布式模式計算層&#xff1a;由kernal函數…

SGU 187.Twist and whirl - want to cheat( splay )

維護一個支持翻轉次數M的長度N的序列..最后輸出序列.1<N<130000, 1<M<2000splay裸題...-------------------------------------------------------------#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int ma…

練習一萬小時成天才

隨著暢銷書《異類》的流行&#xff0c;“練習一萬小時成天才”這個口號現在是盡人皆知。也許仍然有不少人相信那些不世出的天才必有天生的神秘能力&#xff0c;但科學家通過大量的調查研究已經達成共識&#xff0c;那就是所有頂級高手都是練出來的。不但如此&#xff0c;最近幾…

(轉)數據流圖

轉自:http://jingyan.baidu.com/article/4f34706eefdb04e387b56deb.html 數據流圖4種圖元 數據流圖的實例 轉載于:https://www.cnblogs.com/wrencai/p/5852389.html

從CLI監視OpenJDK

目前&#xff0c;我大部分時間在Java虛擬機 &#xff08;JVM&#xff09;內或周圍進行大量工作&#xff0c;大部分時間是在Linux上。 當事情變得不對勁并且我試圖確定原因時&#xff0c;我接觸了Java性能分析工具。 這些工具有兩種形式&#xff0c;一種是精美的GUI&#xff08;…

python數據庫優化_python | Mysql性能優化一

對mysql優化是一個綜合性的技術&#xff0c;主要包括表的設計合理化(符合3NF)添加適當索引(index) [四種: 普通索引、主鍵索引、唯一索引unique、全文索引]分表技術(水平分割、垂直分割)讀寫[寫: update/delete/add]分離存儲過程 [模塊化編程&#xff0c;可以提高速度]對mysql配…

MySQL中文亂碼問題

項目中用到MySQL數據庫時中文出現亂碼問題&#xff08;中文字符都變成了&#xff1f;&#xff09;解決&#xff1a; 1、統一項目與數據庫的編碼&#xff0c;項目中用的是UTF-8因此我的把數據庫的編碼統一成UTF-8 修改方式&#xff1a;修改 MySQL根目錄中的 my.ini 文件替換d…

json與字符串互轉

1 字符串轉JSON var objeval((str"))var objJSON.parse(str)var objstr.parseJSON()2 JSON轉字符串 var strobj.toJSONString()var strJSON.stringify(obj)轉載于:https://www.cnblogs.com/liu-xia/p/5050878.html

使用RequestFactory API進行Spring GWT集成

從GWT 2.4開始&#xff0c;將RequestFactory API與后端的Spring服務集成很容易&#xff0c;您需要做的就是在服務器上創建一個自定義ServiceLocator&#xff0c;GWT將使用它來正確定位被調用的服務&#xff1a; public class SpringServiceLocator implements ServiceLocator {…

C++實例講解Binder通信

binder是android里面的通信機制&#xff0c;這就不說它如何如何好了&#xff0c;Goog已經說過了&#xff0c;這里不多說。binder是一個面向對象的編程方法&#xff0c;大量使用虛函數類。最近研究binder看到一網友寫的&#xff0c;就借鑒一下。這個例子很好的解釋里binder通信關…

2014編程之美初賽第一場

題目1 : 焦距 時間限制:2000ms單點時限:1000ms內存限制:256MB描述 一般來說&#xff0c;我們采用針孔相機模型&#xff0c;也就是認為它用到的是小孔成像原理。 在相機坐標系下&#xff0c;一般來說&#xff0c;我們用到的單位長度&#xff0c;不是“米”這樣的國際單位&#x…

高中python公開課怎么上好_如何上好高中英語公開課

談如何上好高中英語公開課對青年教師來說&#xff0c;開一節公開課&#xff0c;如同完成一次蛻變&#xff0c;累掉一層皮&#xff0c;有著刻骨銘心的陣痛&#xff0c;但換來的是突飛猛進的專業成長。可以說&#xff0c;公開課是青年教師培訓的有效途徑&#xff0c;是名師培養的…

Codeforces Round #261 (Div. 2) - E (459E)

題目連接&#xff1a;http://codeforces.com/contest/459/problem/E 題目大意&#xff1a;給定一張有向圖&#xff0c;無自環無重邊&#xff0c;每條邊有一個邊權&#xff0c;求最長嚴格上升路徑長度。(1≤n&#xff0c;m≤3 *10^5) 初見此題覺得以邊為點&#xff0c;以點為邊&…

回收對象以提高性能

總覽 在上一篇文章中&#xff0c;我說過對象反序列化更快的原因是由于使用了回收對象。 由于兩個原因&#xff0c;這可能令人驚訝&#xff1a;1&#xff09;相信如今創建對象是如此之快&#xff0c;無關緊要或與回收自己一樣快&#xff0c;2&#xff09;默認情況下&#xff0c;…

jquery GET POST

<!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <head> <!--引入百度庫--> <script src"http://libs.baidu.com/jquery/1.10.2/jquery.min.js"> </script> <title></title> <scrip…

C++高精度運算類bign (重載操作符)

大數據操作&#xff0c;有如下問題&#xff1a; 計算&#xff1a;45678913561232654213212314875231656511323132 456789135612326542132123*14875231656511323132 比較&#xff1a;7531479535511335666686565>753147953551451213356666865 ? long long類型存儲不了&…

oj系統格式錯誤_論文查重會不會檢查格式?【paperpp吧】

高等學校一般都會要求大學生在畢業時需要寫作畢業論文&#xff0c;并且會提前發出關于畢業論文的通知&#xff0c;在通知上一般會說明論文寫作的相關要求&#xff0c;其中就會規定論文的相關格式。當然&#xff0c;學校也會在通知中說明論文查重的相關事宜&#xff0c;那么論文…