MySQL主從備份和主主備份配置+Keepalived+MySQL讀寫分離
一、MYSQL主從備份
為保證資料庫的安全和效率,可以使用主從備份,當有寫的操作可以在主伺服器上操作,操作完之後備份到從伺服器上,當有讀操作時可以訪問從伺服器,這樣在一定程度上保證了資料庫的安全,當主伺服器的mysql掛掉之後,資料也不會丟失,同時也提高了資料庫的效率。
1.環境
master 192.168.174.129
slave 192.168.174.130
master和slave的防火牆都為關閉狀態,selinux也為disabled,不然會出錯,selinux設定重啟生效。
2.在master和slave上安裝mysql和mysql-server
注:mysql master資料庫版本和slave資料庫版本要相同,或者slave版本比master高
mysql安裝可以yum安裝也可以原始碼安裝,本文采用yum安裝
yum -y install mysql mysql-server
在主伺服器和從伺服器上開啟mysql服務,並設定開機自啟
service mysqld restart
chkconfig mysqld on
3.mysql mater配置
開啟mysql配置檔案/etc/my.cnf,在mysqld下新增
log-bin=mysql-bin ---------啟動二進位制日誌系統
binlog-do-db=test ---------要同步的資料庫
server-id=1 ---------服務id,主伺服器server-id比從伺服器server-id小
binlog-ignore-db=mysql ------避免同步mysql使用者配置
重啟mysql
service mysqld restart
進入資料庫mysql
mysql -u root -p
初始狀態mysql預設沒有密碼,如果要設定密碼可以使用mysqladmin -u root -p "password",設定密碼,這樣也會更安全一些
建立一個同步賬號,並賦予許可權
檢視master的狀態資訊,記錄下file和position的值,在後邊的slave配置中會用到
4.mysql slave配置
開啟mysql配置檔案/etc/my.cnf,在mysqld下新增
server-id=2 -------- 服務id,從伺服器server-id比主伺服器server-id大
replication-ignore-db=mysql -- 遮蔽對mysql庫的同步
replication-do-db=test ---------要同步的資料庫名,與主伺服器配置保持一致
master-connect-retry=60 --------斷點重連時間
master-host=192.168.174.129
master-user=test
master-password=test
master-port=3306
進入mysql
mysql -u root -p
停止slave服務:stop slave;
配置slave同步,完成後開啟slave服務
change master to master_host='192.168.174.129',master_user='test',master_password='test',master_log_file='mysql-bin.000026',master_log_pos=346;
這裡的master_log_file和master_log_pos要和前面記錄的file和position一致
檢視slave狀態
show slave status\G;
當兩個running都為yes時即配置成功,可以在主服務上對test資料庫操作,看是否這些操作會同步到從伺服器上
二、MySQL主主備份
主主備份的設定就是將從伺服器上的設定在主伺服器上操作一遍,主伺服器上的操作在從伺服器上操作一遍,這裡就不再贅述
三、 MySQL+Keepalived
環境:
keepalived主機:192.168.174.129
keepalived備機:192.168.174.130
VIP:192.168.174.222
測試主機:192.168.174.133
master、slave、keepalived主機、keepalived備機、測試主機的防火牆都為關閉狀態,selinux也為disabled,不然會出錯,selinux設定重啟生效。
1.keepalived
keepalived可以監控服務狀態,當主服務宕機後可以將服務自動漂移至從服務,利用keepalived+mysql可以實現mysql的高可用性,當mysql主伺服器宕機後,從伺服器接管主伺服器的工作,保證對外服務,keepalived還可以實現虛擬ip對外服務,保證內部伺服器安全,同時keepalived的主從機制也保證了服務的高可用性
2.keepalived安裝
這裡和前邊博文中keepalived安裝步驟基本一樣,主要是配置檔案不一樣,博主為熟悉keepalived安裝又囉嗦了一遍,下載keepalived原始碼安裝包,解壓
進入keepalived解壓目錄,執行
./configure --prefix=/usr/local/keepalived
拷貝keepalived啟動檔案到/etc/init.d下,這樣keepalived服務才能為系統識別
cp /root/package/keepalived-1.4.5/keepalived/etc/init.d /etc/init.d
執行
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin
新建資料夾keepalived
mkdir /etc/keepalived
將keepalived的配置檔案拷貝過來,keepalived啟動時會從/etc/keepalived目錄下查詢keepalived.conf配置檔案,如果沒有找到則使用預設的配置。
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
以上操作在keepalived主機和備機上都執行
修改主機配置檔案
修改備機配置檔案
主機和備機配置檔案只有router_id和vrrp_instance的state和priority不同
開啟主機和備機的keepalived服務
service keepalived start
在測試機上ping 虛擬IP192.168.174.222,成功,而且我的內網內192.168.174.222的ip
使用虛擬IP192.168.174.222連線3306埠的mysql服務,連線之前需要在mysql主服務和mysql從伺服器為測試機ip賦予許可權
使用虛擬IP192.168.174.222連線3306埠的mysql服務,使用授權的使用者和密碼,成功
檢視當前資料庫
檢視mysql從伺服器資料庫可知連線的應該是從資料庫
停止mysql從伺服器服務:service mysqld stop,再次在測試機連線虛擬IP192.168.174.222連線3306埠的mysql服務,成功
也可以查出資料庫
keepalived+mysql主從同步成功
四、MySQL讀寫分離
mysql讀寫分離是在mysql主從同步的基礎上做的,mysql主伺服器負責寫,多臺mysql從伺服器負責讀,mysql主從同步僅僅是把mysql主伺服器的資料庫同步到了mysql從伺服器上,如果要實現讀寫分離,還需要一個伺服器去協調。這個服務就是mysql-proxy。
1.環境配置
mysql主伺服器:192.168.174.129
mysql從伺服器:192.168.174.130
mysql-proxy伺服器:192.168.174.131
master、slave以及mysql-proxy伺服器的防火牆都為關閉狀態,selinux也為disabled,不然會出錯,selinux設定重啟生效。
2.mysql-proxy安裝
mysql的讀寫分離是靠過rw-splitting.lua指令碼實現的,因此需要安裝lua。
安裝之前先安裝包依賴
yum -y install gcc* gcc-c++ autoconf automake zlib* libxml* ncurses-devel libmcrypt libtool* flex* pkgconfig* libevent* glib*
wget 下載lua,很小,很快就能下載完成,解壓
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
進入lua解壓後目錄,執行
make linux
make && make install
export LUA_CFLAGS="-I/usr/local/include" LUA_LIBS="-L/usr/local/lib -llua -ldl" LDFLAGS="-lm"
下載mysql-proxy,解壓
執行
mkdir /usr/local/mysql-proxy
cp * /usr/local/mysql-proxy
cd /usr/local/mysql-proxy
修改rw-splitting.lua檔案
修改連線數,預設為4,即只有當有四臺mysql伺服器時才啟用讀寫分離,為了試驗成功,改為1
vim /usr/local/mysql-proxy/rw-splitting.lua
啟動msyql-proxy
cd /usr/local/mysql-proxy/bin
./mysql-proxy --proxy-read-only-backend-addresses=192.168.174.130:3306 --proxy-backend-addresses=192.168.174.129:3306 --proxy-lua-script=/usr/local/mysql-proxy/rw-splitting.lua &
引數說明:
--proxy-read-only-backend-addresses ---------只讀伺服器ip地址
--proxy-backend-addresses ----------------------伺服器地址(mysql主伺服器)
--proxy-lua-script ----------------------------lua指令碼路徑
& -----------------------------------------------------表示後臺執行
mysql主從備份+mysql讀寫分離配置完成。
Linux公社的RSS地址: ofollow,noindex" target="_blank">https://www.linuxidc.com/rssFeed.aspx
本文永久更新連結地址: https://www.linuxidc.com/Linux/2018-09/154113.htm