2022年MySQLMM+KeepAlived高可用架構(gòu)部署測(cè)試_第1頁(yè)
2022年MySQLMM+KeepAlived高可用架構(gòu)部署測(cè)試_第2頁(yè)
2022年MySQLMM+KeepAlived高可用架構(gòu)部署測(cè)試_第3頁(yè)
2022年MySQLMM+KeepAlived高可用架構(gòu)部署測(cè)試_第4頁(yè)
2022年MySQLMM+KeepAlived高可用架構(gòu)部署測(cè)試_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MySQL MM+KeepAlived高可用架構(gòu)部署測(cè)試馬飛2022-2-23 一、環(huán)境預(yù)備1.1 操作系統(tǒng)信息安裝三臺(tái) CentOS6.7 64 位操作系統(tǒng);采納最小安裝模式;sed -i s/=enforcing/=disabled/g /etc/selinux/config service itpables stop chkconfig iptables off 1.2 配置 NTP同步時(shí)間yum -y install ntp vi /etc/ntp.conf 增加 3 個(gè)時(shí)間服務(wù)器server iburst # 西南地區(qū)網(wǎng)絡(luò)中心 server iburst # 西北地區(qū)網(wǎng)絡(luò)中心 ser

2、ver iburst # 東北地區(qū)網(wǎng)絡(luò)中心啟動(dòng) ntp 服務(wù)systemctl start ntpd systemctl enable ntpd 查看狀態(tài)ntpq -p 1.3 配置角色信息主機(jī)名IP 地址描述Server id Db1 00 Master1 1 Db2 01 Master2 2 Db3 02 Slave1 3 1.4 服務(wù)角色及描述IP 地址角色描述00 ReadWriter 應(yīng)用程序連接該IP 對(duì)主庫(kù)進(jìn)寫(xiě)懇求01 ReadWriter 應(yīng)用程序連接該IP 對(duì)主庫(kù)進(jìn)寫(xiě)

3、懇求02 Read Only 應(yīng)用程序連接到該IP 處理讀懇求40 ReadWriter 應(yīng)用程序連接到該虛IP 處理讀寫(xiě)懇求 (不直聯(lián)100,101),通過(guò)連接 140 實(shí)現(xiàn)高可用;1.5 配置 /etc/hosts 在其中添加全部的主機(jī)信息:rootdb1 mysql# more /etc/hosts localhost localhost.localdomain localhost4 localhost4.localdomain4 :1 localhost localhost.localdomain localhost6 l

4、ocalhost6.localdomain6 2 db1 3 db2 0 b3二、安裝 MySQL 2.1 卸載 rpm 包roothadoop61 # rpm -qa | grep -i mysql mysql-5.1.73-5.el6_7.1.x86_64 mysql-server-5.1.73-5.el6_7.1.x86_64 perl-DBD-MySQL-4.013-3.el6.x86_64 mysql-devel-5.1.73-5.el6_7.1.x86_64 mysql-libs-5.1.73-5.el6_7.1.x

5、86_64 rpm -ev mysql-devel-5.1.73-5.el6_7.1.x86_64 rpm -ev mysql-server-5.1.73-5.el6_7.1.x86_64 rpm -ev perl-DBD-MySQL-4.013-3.el6.x86_64 rpm -ev mysql-5.1.73-5.el6_7.1.x86_64 roothadoop61 # rpm -e -nodeps mysql-libs-5.1.73-5.el6_7.1.x86_64 warning: /etc/f saved as /etc/f.rpmsave 2.2 收集 mysql 對(duì)應(yīng)的文件夾r

6、oothadoop61 # find / -name mysql /var/lib/mysql /var/lib/mysql/mysql 2.3 刪除 mysql 對(duì)應(yīng)的文件夾rm -rf /var/lib/mysql 2.4 下載 mysql 安裝程序2.5 解壓 mysql 安裝程序tar -zxvf mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz -C /usr/local cd /usr/local mv mysql-5.6.31-linux-glibc2.5-x86_64 mysql5.6 2.6 添加用戶和組groupadd mysql user

7、add -r -g mysql mysql 2.7 安裝數(shù)據(jù)庫(kù)進(jìn)入安裝 mysql 軟件目錄:cd /usr/local/mysql 修改當(dāng)前目錄擁有者為 mysql 用戶:chown -R mysql:mysql ./ 安裝數(shù)據(jù)庫(kù):mkdir -p /data/mysql/data chown -R mysql.mysql /data/mysql #如是最小安裝系統(tǒng),仍需要安裝以下包:yum -y install perl perl-devel yum -y install libaio ./scripts/mysql_install_db -basedir=/usr/local/mysql

8、5.6 -datadir=/data/mysql/data -user=mysql 修改配置文件:cp /usr/local/mysql5.6/f /etc/f # vi /etc/f mysqld basedir=/usr/local/mysql datadir= /data/mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTIO character-set-server=utf8 mysql default-character-set=utf8 client default-character-set=utf8 啟動(dòng)腳本放到開(kāi)機(jī)初始化目錄cp

9、 support- /etc/init.d/mysql 啟動(dòng) mysql 服務(wù):service mysql start 查看 mysql 進(jìn)程:ps -ef|grep mysql 三、修改 MySQL配置db1,db2,db3 三臺(tái)主機(jī)上分別建立如下目錄 mkdir /var/log/mysql & chown -R mysql:mysql /var/log/mysql/ 3.1 db1配置mysqld basedir=/usr/local/mysql datadir=/data/mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTIO chara

10、cter-set-server=utf8 server_id = 1 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 1024M log_slave_updates = 1 auto-incr

11、ement-increment = 2 auto-increment-offset = 1 binlog_format = MIXED replicate-ignore-db = mysql binlog-ignore-db = mysql mysql default-character-set=utf8 client default-character-set=utf8 3.2 db2配置mysqld basedir=/usr/local/mysql datadir=/data/mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTIO chara

12、cter-set-server=utf8 server_id = 2 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 1024M log_slave_updates = 1 auto-incr

13、ement-increment = 2 auto-increment-offset = 2 binlog_format = MIXED replicate-ignore-db = mysql binlog-ignore-db = mysql mysql default-character-set=utf8 client default-character-set=utf8 3.3 db3配置mysqld basedir=/usr/local/mysql datadir=/data/mysql/data port=3306 sql_mode=NO_ENGINE_SUBSTITUTIO chara

14、cter-set-server=utf8 server_id = 3 log_bin = /var/log/mysql/mysql-bin.log log_bin_index = /var/log/mysql/mysql-bin.log.index relay_log = /var/log/mysql/mysql-relay-bin relay_log_index = /var/log/mysql/mysql-relay-bin.index expire_logs_days = 10 max_binlog_size = 1024M log_slave_updates = 1 binlog_fo

15、rmat = MIXED replicate-ignore-db = mysql binlog-ignore-db = mysql read-only mysql default-character-set=utf8 client default-character-set=utf8 四、 MySQL復(fù)制配置從 master-001 復(fù)制到 master-002 從 master-002 復(fù)制到 slave-001 4.1 配置 db1 作為主復(fù)制到 db2 (1)配置 db1 由于這里是配置db1 做為源數(shù)據(jù),所以不需要設(shè)置change master 和啟動(dòng) slave 進(jìn)程#在 db1 上

16、創(chuàng)建復(fù)制用戶 grant replication slave on *.* to repl192.168.8.% identified by 123456; #從 db1 上導(dǎo)出數(shù)據(jù) mysqldump -master-data=2 -single-transaction -R -triggers -A all.sql #拷貝 all.sql 至 db2,db3 scp all.sql rootdb2:/usr/local/mysql5.6 scp all.sql rootdb3:/usr/local/mysql5.6(2)配置 db2 #將 all.sql 導(dǎo)入 db2,db3 從庫(kù) mys

17、ql -f -default-character-set=utf8 show slave statusG * 1. row * Slave_IO_State: Waiting for master to send event Master_Host: 12 Master_User: replication Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-master-002-bin.000001 Read_Master_Log_Pos: 120 Relay_Log_File: mysql-master-

18、001-bin.000004 Relay_Log_Pos: 294 Relay_Master_Log_File: mysql-master-002-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: mysql Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Sk

19、ip_Counter: 0 Exec_Master_Log_Pos: 120 Relay_Log_Space: 472 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Err

20、no: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 2 Master_UUID: 3d3b9f4f-f74f-11e5-9a30-005056b324c4 Master_Info_File: /opt/mysql/data/ SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waitin

21、g for the slave I/O thread to update it Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 1 row in set 0.00 sec 留意 : Slave_IO_Running: Yes Slave_SQL_Running: Yes 4.2 配置

22、 db1 作為主復(fù)制到 db3 (1)配置 db3 指定change master 為 db1,表示從 db1 復(fù)制到db3 #ssh 到 db3 服務(wù)器mysql -u root -p #在 mysql 掌握臺(tái)錄入#這個(gè)是在 f 中沒(méi)有使用 CHANGE MASTER TO GTIDMySQL5.6新特性 下的命令:MASTER_HOST=3, MASTER_USER=repl, MASTER_PASSWORD=repl, MASTER_PORT=3306, MASTER_LOG_FILE=mysql-bin.000007, MASTER_LOG_POS=120, MA

23、STER_CONNECT_RETRY=10; # 這個(gè)是在 f 中使用 GTIDMySQL5.6新特性 下的命令 CHANGE MASTER TO MASTER_HOST=3, MASTER_USER=repl, MASTER_PASSWORD=repl, MASTER_PORT=3306, MASTER_AUTO_POSITION = 1; #重置 reset reset slave; #啟動(dòng) slave start slave; #查看 slave 狀態(tài) show slave statusG #結(jié)果如下mysql show slave statusG 4.3 配置 d

24、b2 作為主復(fù)制到 db1 (1)配置 db1 指定change master 為 db2,表示從 db2 復(fù)制到db1 #ssh 到 master-001 服務(wù)器 mysql -u root -p #在 mysql 掌握臺(tái)錄入,這個(gè)是在f 中沒(méi)有使用GTIDMySQL5.6新特性 下的命令CHANGE MASTER TO MASTER_HOST=3, MASTER_USER=repl, MASTER_PASSWORD=repl, MASTER_PORT=3306, MASTER_LOG_FILE=mysql-bin.000007, MASTER_LOG_POS=1733

25、12, MASTER_CONNECT_RETRY=10; #這個(gè)是在 f 中使用 GTIDMySQL5.6新特性 下的命令 CHANGE MASTER TO MASTER_HOST=3, MASTER_USER=repl, MASTER_PASSWORD=repl, MASTER_PORT=3306, MASTER_AUTO_POSITION = 1; #重置 reset reset slave; #啟動(dòng) slave start slave; #查看 slave 狀態(tài) show slave statusG #結(jié)果如下 mysql show slave statusG *

26、1. row * Slave_IO_State: Waiting for master to send event Master_Host: 12 Master_User: replication Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-master-002-bin.000001 Read_Master_Log_Pos: 120 Relay_Log_File: mysql-master-001-bin.000004 Relay_Log_Pos: 294 Relay_Master_Log_File

27、: mysql-master-002-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: mysql Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 120 Relay_Log_Space:

28、 472 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error:

29、Replicate_Ignore_Server_Ids: Master_Server_Id: 2 Master_UUID: 3d3b9f4f-f74f-11e5-9a30-005056b324c4 Master_Info_File: /opt/mysql/data/ SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Master_Retry_Co

30、unt: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 1 row in set 0.00 sec 留意 : Slave_IO_Running: Yes Slave_SQL_Running: Yes 4.4 MM 環(huán)境測(cè)試在 db1 上,增刪改表空間,表,字段,內(nèi)容可以同步到db2,db3 在 db2 上,增刪改表空間,

31、表,字段,內(nèi)容可以同步到db1,db3 五、 keepalived安裝5.1、軟件下載(1)軟件下載keepalived-1.2.7.tar.gz(2)內(nèi)核參數(shù)修改留意:修改修改操作系統(tǒng)內(nèi)核參數(shù)“net.ipv4.ip_forward”#修改內(nèi)核參數(shù)“net.ipv4.ip_forward”vi /etc/sysctl.conf # Controls IP packet forwarding net.ipv4.ip_forward = 1 #使配置生效 sysctl -p 功能:設(shè)置或重新設(shè)置聯(lián)網(wǎng)功能,如IP 轉(zhuǎn)發(fā)、IP 碎片去除以及源路由檢查等; 用戶只需要編輯 /etc/sysctl.co

32、nf 文件,即可手工或自動(dòng)執(zhí)行由 sysctl 掌握的功能;(3)系統(tǒng)環(huán)境操作系統(tǒng)角色I(xiàn)P 地址Keepalived版本CentOS6.7 主角色00 1.2.7 CentOS6.7 主角色01 1.2.7 CentOS6.7 備角色02 5.2、軟件安裝(1)解壓軟件 tar zxvf keepalived-1.2.7.tar.gz cd keepalived-1.2.7 (2)安裝工具 yum install -y gcc openssl-devel popt-devel 如是本地掛載光盤(pán)鏡像就使用如下方法:yum -dis

33、ablerepo=* -enablerepo=c6-media install -y gcc openssl-devel popt-devel 安裝上述工具編譯有以下警告信息:configure: WARNING: keepalived will be built without libnl support. Keepalived configuration - Keepalived version : 1.2.7 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -lpopt -lssl -lcrypto Use IPVS Framewor

34、k : Yes IPVS sync daemon support : Yes IPVS use libnl : No Use VRRP Framework : Yes Use VRRP VMAC : Yes SNMP support : No Use Debug flags : Nos 解決方法:yum -y install libnl* Keepalived configuration - Keepalived version : 1.2.7 Compiler : gcc Compiler flags : -g -O2 Extra Lib : -lpopt -lssl -lcrypto -l

35、nl Use IPVS Framework : Yes IPVS sync daemon support : Yes IPVS use libnl : Yes Use VRRP Framework : Yes Use VRRP VMAC : Yes SNMP support : No Use Debug flags : No #將包下載至本地并進(jìn)行安裝 mkdir /root/libnl3 yum install -downloadonly -downloaddir=/root/libnl3 libnl* cd /root/libnl3 rpm -ivh *.rpm (3)編譯安裝軟件./co

36、nfigure make & make install configure.txt(4)軟件配置cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ chmod +x /etc/init.d/keepalived chkconfig -add keepalived chkconfig keepalived on mkdir /etc/keepalived ln -s /usr/local/sbin/keepalived /usr/s

37、bin/ 主節(jié)點(diǎn)配置文件 :/etc/keepalived/ keepalived.conf check_oracle_status.sh備節(jié)點(diǎn)配置文件:keepalived.conf check_oracle_status.sh(5)啟動(dòng)服務(wù)rootdb9 keepalived# service keepalived start 確定 正在啟動(dòng) keepalived: rootdb9 keepalived# service keepalived status keepalived pid 30799 正在運(yùn)行 . rootdb9 keepalived# ps -ef | grep keep

38、root 30799 1 0 13:25 . 00:00:00 keepalived -D root 30800 30799 0 13:25 . 00:00:00 keepalived -D root 30802 30799 0 13:25 . 00:00:00 keepalived -D root 30879 20806 0 13:25 pts/0 00:00:00 grep keep (6)配置日志文件#修改 keepalived 配置文件 vi /etc/sysconfig/keepalived KEEPALIVED_OPTIONS=-D -d -S 0 #修改系統(tǒng)日志配置文件 vi /

39、etc/rsyslog.conf local0.* /var/log/keepalived.log #重啟系統(tǒng)日志服務(wù) /etc/init.d/rsyslog restart #查詢 keepalived 日志 more /var/log/keepalived.log 5.3、安裝問(wèn)題(1)啟動(dòng) keepalived 服務(wù) rootdb9 keepalived-1.2.7# service keepalived status keepalived 已死,但是 subsys 被鎖文件;rootdb9 keepalived-1.2.7# service keepalived stop 停止 kee

40、palived: 失敗 問(wèn)題緣由:在啟動(dòng)前沒(méi)有置/etc/keeplivied/keeplivied.conf(2)刪除虛擬網(wǎng)卡地址 ip addr del 01/32 dev eth1 (3)刪除 keepalived find / -name keepalived (4) 腳本不能啟動(dòng)緣由 主從節(jié)點(diǎn),以下腳本無(wú)執(zhí)行權(quán)限chmod u+x /usr/local/script/check_oracle_status.sh 5.4、軟件測(cè)試(1)主節(jié)點(diǎn)啟動(dòng)服務(wù) service keepalived start 查看 VIP 情形 ip addr | grep 20.255.

41、82.201/32 inet 01/32 scope global eth1 查看服務(wù)運(yùn)行情形: service keepalived status 查看主節(jié)點(diǎn)日志情形more /var/log/keepalived.log (2)從節(jié)點(diǎn)啟動(dòng)服務(wù) service keepalived start 查看 VIP 情形: ip addr | grep 01/32 inet 01/32 scope global eth1 查看服務(wù)運(yùn)行情形: service keepalived status 查看主節(jié)點(diǎn)日志情形 more /var/l

42、og/keepalived.log 六、 keepalived 配置(1)db01 上 keepalived.conf 文件內(nèi)容rootdb1 mysql# more /etc/keepalived/keepalived.conf #. Configuration keepalived global_defs router_id db1 #修改為自己的主機(jī)名 vrrp_instance VI_1 state BACKUP #都修改成 BACKUP interface eth0 virtual_router_id 60 #默認(rèn) 51 主從都修改為60 90,備用節(jié)點(diǎn)必需比主節(jié)priority 1

43、00 #優(yōu)先級(jí)( 1-254 之間),另一臺(tái)改為點(diǎn)優(yōu)先級(jí)低;advert_int 1 nopreempt #不搶占資源,意思就是它活了之后也不會(huì)再把主搶回來(lái) authentication #設(shè)置驗(yàn)證信息,兩個(gè)節(jié)點(diǎn)必需一樣 auth_type PASS auth_pass 1111 virtual_ipaddress 40 virtual_server 40 3306 delay_loop 6 lb_algo wrr #LVS算法 lb_kind DR #LVS模式 nat_mask persistence_timeout

44、50 # 會(huì)話保持時(shí)間 protocol TCP real_server 00 3306 weight 1 notify_down /usr/local/script/mysql.sh #檢測(cè)到服務(wù)down 后執(zhí)行的腳本TCP_CHECK connect_timeout 10 #連接超時(shí)時(shí)間 nb_get_retry 3 #重連次數(shù) connect_port 3306 #健康檢查端口 (2)db02 上 keepalived.conf 文件內(nèi)容rootdb2 mysql# more /etc/keepalived/keepalived.conf #. Configurat

45、ion keepalived global_defs router_id db2 #修改為自己的主機(jī)名 vrrp_instance VI_1 state BACKUP #都修改成 BACKUP interface eth0 virtual_router_id 60 #默認(rèn) 51 主從都修改為 60 priority 80 #在 mysql-ha1 上 LVS上修改成 100 advert_int 1 authentication auth_type PASS auth_pass 1111 virtual_ipaddress 40 virtual_server 40 3306 delay_

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論