mysql主主备份_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讀寫分離配置完成。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的mysql主主备份_MySQL主从备份和主主备份配置+Keepalived+MySQL读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka to mysql_Flink
- 下一篇: mysql导出数据到本地_mysql怎么