利用Keepalived构建高可用的MySQL
公司大牛让用keepalived构建高可用的MySQL,在网上看到一篇很完整的文章,于是乎照着前辈的足迹,加上自己补充。如上述均正确配置
前言:公司大牛让用keepalived构建高可用的MySQL,在网上看到一篇很完整的文章,于是乎照着前辈的足迹,加上自己补充。
环境拓扑如下:
MySQL-VIP:192.168.1.150
MySQL-master1:192.168.1.151
MySQL-master2:192.168.1.152
OS版本:RedHat 5.4
MySQL版本:5.0.77
Keepalived版本:1.1.20
一、MySQL master-master的安装及配置
1、安装mysql
#yum install mysql-server -y \\为了节省时间,这里两台server都直接yum装,希望你配好了yum源。
2、修改配置文件
On server1:
#vim /etc/my.cnf
[mysqld]
server-id = 10
log-bin = mysql-bin
replicate-do-db = ccledb
auto-increment-increment = 2
auto-increment-offset = 1
On server2 :
#vim /etc/my.cnf
[mysqld]
server-id = 20
log-bin = mysql-bin
replicate-do-db = ccledb
auto-increment-increment = 2
auto-increment-offset = 2
3、建立授权用户
On server1:
mysql> grant replication client,replication slave on *.* to cclo1@’192.168.1.%’ identified by ‘123456’;
On server2:
mysql> grant replication client,replication slave on *.* to cclo2@’192.168.1.%’ identified by ‘123456’;
4、指定主服务器
On server1
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 | 374 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.152',master_user='cclo2',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)
On server2
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| MySQL-bin.000003 | 374 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
mysql> change master to master_host='192.168.1.151',master_user='cclo1',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=374;
Query OK, 0 rows affected (0.05 sec)
5、开启主主服务
mysql> start slave; \\两台server分别执行
MySQL> show slave status\G \\查看主主状态
Slave_IO_Running: Yes
Slave_SQL_Running: Yes \\如果此2项都为yes,master-master配置即成功
如上述均正确配置,现在在任何一台MySQL上更新数据都会同步到另一台MySQL。
二、keepalived安装及配置
1、192.168.1.151服务器上keepalived安装及配置
安装keepalived
#tar zxvf keepalived-1.1.20.tar.gz
#cd keepalived-1.1.20
#./configure --prefix=/usr/local/keepalived --with-kernel-dir=/usr/src/kernels/2.6.18-164.el5-i686
\\此处一定确保你的linux中有/usr/src/kernels/2.6.18-164.el5-i686这个目录,如果没有请安装kernel- devel包,建议最好是下载和你的linux系统内核版本相同的devel包安装(一般安装镜像有),此处直接#yum install -y kernel-devel
#make && make install
配置keepalived
此处需新建一个配置文件,默认情况下keepalived启动时会去/etc/keepalived目录下找配置文件
#mkdir /etc/keepalived
#vim /etc/keepalived/keepalived.conf \\配置文件内容如下:
! Configuration File for keepalived
global_defs {
notification_email {
cclo@cer.cn
}
notification_email_from cclo@cer.cn
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MySQL-ha
}
vrrp_instance VI_1 {
state BACKUP #两台配置此处均是BACKUP
interface eth0
virtual_router_id 51
priority 100 #优先级,另一台改为90
advert_int 1
nopreempt #不主动抢占资源,只在优先级高的机器上设置即可,优先级低的机器不设置
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.150
}
}
virtual_server 192.168.1.150 3306 {
delay_loop 2 #每个2秒检查一次real_server状态
lb_algo wrr #LVS算法
lb_kind DR #LVS模式
persistence_timeout 60 #会话保持时间
protocol TCP
real_server 192.168.1.151 3306 {
weight 3
notify_down /usr/local/my/my.sh #检测到服务down后执行的脚本
TCP_CHECK {
connect_timeout 10 #连接超时时间
nb_get_retry 3 #重连次数
delay_before_retry 3 #重连间隔时间
connect_port 3306 #健康检查端口
}
}
编写检测服务down后所要执行的脚本:
#vim /usr/local/my/my.sh
#!/bin/sh
pkill keepalived
#chmod +x /usr/local/my/my.sh
注:此脚本是上面配置文件notify_down选项所用到的,keepalived使用notify_down选项来检查real_server的服务状态,当发现real_server服务故障时,便触发此脚本;我们可以看到,脚本就一个命令,通过pkill keepalived强制杀死keepalived进程,从而实现了MySQL故障自动转移。另外,,我们不用担心两个MySQL会同时提供数据更新操作,因为每台MySQL上的keepalived的配置里面只有本机MySQL的IP+VIP,而不是两台MySQL的IP+VIP
启动keepalived:
#/usr/local/keepalived/sbin/keepalived –D
#ps -aux | grep keepalived
测试
找一台局域网PC,然后去ping MySQL的VIP,这时候MySQL的VIP是可以ping的通的
停止MySQL服务,#ps -aux | grep keepalived 看keepalived健康检查程序是否会触发我们编写的脚本

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Cara menggunakan seni bina pangkalan data teragih untuk membina kluster MySQL yang sangat tersedia Dengan pembangunan Internet, permintaan untuk ketersediaan tinggi dan skalabiliti pangkalan data semakin tinggi. Seni bina pangkalan data teragih telah menjadi salah satu cara yang berkesan untuk menyelesaikan keperluan ini. Artikel ini akan memperkenalkan cara menggunakan seni bina pangkalan data teragih untuk membina kluster MySQL yang sangat tersedia dan menyediakan contoh kod yang berkaitan. Membina kluster replikasi tuan-hamba MySQL replikasi tuan-hamba MySQL ialah penyelesaian asas ketersediaan tinggi yang disediakan oleh MySQL. Melalui replikasi tuan-hamba, data boleh

Golang ialah bahasa pengaturcaraan yang cekap, ringkas dan selamat yang boleh membantu pembangun melaksanakan sistem teragih yang sangat tersedia. Dalam artikel ini, kami akan meneroka cara Golang melaksanakan sistem teragih yang sangat tersedia dan menyediakan beberapa contoh kod khusus. Cabaran Sistem Teragih Sistem teragih ialah sistem di mana berbilang peserta bekerjasama. Peserta dalam sistem teragih mungkin nod berbeza yang diedarkan dalam pelbagai aspek seperti lokasi geografi, rangkaian dan struktur organisasi. Apabila melaksanakan sistem teragih, terdapat banyak cabaran yang perlu ditangani, seperti:

Linux dan Docker: Bagaimana untuk melaksanakan kluster kontena yang sangat tersedia? Abstrak: Dengan perkembangan teknologi kontena, semakin banyak perusahaan secara beransur-ansur menggunakan aplikasi ke dalam kontena. Dalam persekitaran pengeluaran, mencapai ketersediaan tinggi untuk kelompok kontena adalah penting. Artikel ini akan memperkenalkan cara menggunakan Linux dan Docker untuk membina kluster kontena yang sangat tersedia, dan menunjukkan kaedah pelaksanaan khusus melalui contoh kod. Bina kluster DockerSwarm DockerSwarm ialah pengurusan kluster kontena asli yang disediakan oleh Docker

Dengan perkembangan pesat teknologi pengkomputeran awan dan kontena, sistem orkestrasi kontena telah menjadi bahagian penting dalam penggunaan dan pengurusan aplikasi moden. Sistem orkestrasi kontena boleh menjadualkan, mengatur dan mengurus berbilang bekas secara automatik, memberikan ketersediaan dan kebolehskalaan yang tinggi. Di antara banyak bahasa pengaturcaraan, bahasa Go telah mendapat perhatian yang meluas kerana ciri konkurensi yang berkuasa dan prestasi tinggi, dan digunakan oleh banyak sistem orkestrasi kontena yang terkenal seperti Docker dan Kubernetes. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan sistem orkestrasi kontena yang sangat tersedia

Cara mengkonfigurasi pemantauan platform orkestrasi kontena ketersediaan tinggi di Linux Dengan perkembangan teknologi kontena, platform orkestrasi kontena digunakan oleh semakin banyak perusahaan sebagai alat penting untuk mengurus dan menggunakan aplikasi kontena. Untuk memastikan ketersediaan tinggi platform orkestrasi kontena, pemantauan adalah bahagian yang sangat penting. Ini boleh membantu kami memahami status pengendalian platform dalam masa nyata, mencari masalah dengan cepat dan melakukan pemulihan kerosakan. Artikel ini akan memperkenalkan cara mengkonfigurasi pemantauan platform orkestrasi kontena ketersediaan tinggi pada Linux dan menyediakan contoh kod yang berkaitan. 1. Pilih alat pemantauan yang sesuai

Dengan perkembangan pesat Internet, semakin banyak data perlu disimpan dan diproses. Untuk memastikan keselamatan dan kebolehpercayaan data, sistem storan teragih menjadi semakin penting. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan sistem storan teragih yang sangat tersedia, dan meneroka beberapa konsep dan teknologi utama dalam amalan. Sebelum memulakan, mari kita fahami prinsip asas sistem storan teragih. Sistem storan teragih terdiri daripada berbilang nod storan, setiap nod menyimpan sebahagian daripada data secara bebas. Untuk memastikan ketersediaan data yang tinggi, sistem akan

Cara melaksanakan sistem teragih yang sangat tersedia dalam pembangunan bahasa Go Ringkasan: Dengan perkembangan pesat Internet, permintaan untuk sistem teragih semakin meningkat. Cara melaksanakan sistem teragih yang tersedia dalam pembangunan bahasa Go telah menjadi isu penting. Artikel ini akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan sistem teragih yang sangat tersedia. 1. Pengenalan Sistem teragih terdiri daripada berbilang nod bebas, dan nod berkomunikasi dan menyelaras melalui rangkaian. Ketersediaan tinggi adalah salah satu keperluan teras sistem teragih Ia dapat memastikan sistem masih boleh beroperasi dalam menghadapi pelbagai keabnormalan dan kegagalan.

Bagaimana untuk mencapai ketersediaan tinggi dan pengimbangan beban di Jawa Dalam era Internet hari ini, ketersediaan tinggi dan pengimbangan beban adalah salah satu elemen utama dalam membina sistem yang stabil dan boleh dipercayai. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java mempunyai banyak perpustakaan dan alatan yang boleh membantu kami mencapai ketersediaan tinggi dan pengimbangan beban. Artikel ini akan memperkenalkan cara melaksanakan ketersediaan tinggi dan pengimbangan beban dalam Java dan memberikan contoh kod khusus. 1. Ketersediaan tinggi Ketersediaan tinggi bermakna sistem boleh mengekalkan operasi yang stabil untuk masa yang lama dalam apa jua keadaan. Di Jawa, anda boleh
