设为首页 收藏本站
查看: 1602|回复: 0

[经验分享] mysqld_multi+keepalived高可用实践

[复制链接]
发表于 2018-12-30 10:14:08 | 显示全部楼层 |阅读模式
系统环境Centos6.3x64
拓扑如下

一、配置mysql(四台都安装)
1.安装mysql
#./lnmp.shinstallmysql
mysql安装目录为/home/soft/mysql
mysql添加默认搜索路径
#exportPATH=$PATH:/home/soft/mysql/bin
#echoexportPATH=$PATH:/home/soft/mysql/bin>>/etc/profile
2.创建数据存放目录和日志存放目录,并修改目录权限
#mkdir-p/home/data/dbdata
#cd/home/data/dbdata/
#mkdir/data_3306data_3307data_3308data_3309logs
#chownmysql.mysql-R.
3.初始化数据库
#/home/soft/mysql/scripts/mysql_install_db--basedir=/home/soft/mysql--datadir=/home/data/dbdata/data_3306--user=mysql
#/home/soft/mysql/scripts/mysql_install_db--basedir=/home/soft/mysql--datadir=/home/data/dbdata/data_3307--user=mysql
#/home/soft/mysql/scripts/mysql_install_db--basedir=/home/soft/mysql--datadir=/home/data/dbdata/data_3308--user=mysql
#/home/soft/mysql/scripts/mysql_install_db--basedir=/home/soft/mysql--datadir=/home/data/dbdata/data_3309--user=mysql
初始化完成后,查看data_3306,data_3307,data_3308,data_3309目录下是否生成数据
4.编辑/etc/my.cnf配置文件
#vim/etc/my.cnf
[mysqld_multi]
mysqld=/home/soft/mysql/bin/mysqld_safe
mysqladmin=/home/soft/mysql/bin/mysqladmin


[mysqld1]
port=3306
basedir=/home/soft/mysql
datadir=/home/data/dbdata/data_3306
pid-file=/home/data/dbdata/data_3306/mysql_3306.pid
socket=/home/data/dbdata/data_3306/mysql_3306.sock
log_error=/home/data/dbdata/logs/mysql_3306_error.log
user=mysql


[mysqld2]
port=3307
basedir=/home/soft/mysql
datadir=/home/data/dbdata/data_3307
pid-file=/home/data/dbdata/data_3307/mysql_3307.pid
socket=/home/data/dbdata/data_3306/mysql_3307.sock
log_error=/home/data/dbdata/logs/mysql_3307_error.log
user=mysql




[mysqld3]
port=3308
basedir=/home/soft/mysql
datadir=/home/data/dbdata/data_3308
pid-file=/home/data/dbdata/data_3308/mysql_3308.pid
socket=/home/data/dbdata/data_3308/mysql_3308.sock
log_error=/home/data/dbdata/logs/mysql_3308_error.log
user=mysql


[mysqld4]
port=3309
basedir=/home/soft/mysql
datadir=/home/data/dbdata/data_3309
pid-file=/home/data/dbdata/data_3309/mysql_3309.pid
socket=/home/data/dbdata/data_3309/mysql_3309.sock
log_error=/home/data/dbdata/logs/mysql_3309_error.log
user=mysql
启动服务并查看
#mysqld_multistart1
#ps-ef|grepmysql

启动3307,3308,3309
#mysqld_multistart2,3,4
登陆查看
#mysql-uroot-h127.0.0.1-P3306
或者
#mysql-uroot-S/home/data/dbdata/data_3306/mysql_3306.sock

关闭服务,对应启动的数字
#mysqld_multistop1
6.配置mysql主主同步(现在配置master1为主,master2为从)
修改my.cnf主要设置个不一样的ID(mysql_master1)
#vim/etc/my.cnf


[mysqld1],[mysqld2],[mysqld3],[mysqld4]中加入内容如下
server-id=1
log-bin=binlog
replicate-ignore-db=test#这是指定不需要同步的数据库
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
重启服务使配置生效
#mysqld_mulitstop1-4
#mysqld_mulitstart1-4
登陆主库master1赋予master2权限账号
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
grantreplicationslaveon*.*to'admin'@'192.168.240.83'identifiedby'Pwd.123.!@#';
为验证账号我们可以在master2的机器上用命令做如下测试
mysql-uadmin-pPwd.123.!@#-h192.168.240.82

显示主库信息
showmasterstatus;(记录fileposition,从库设置将会用到)

修改master2配置文件my.cnf
在下面字段添加
[mysqld1],[mysqld2],[mysqld3],[mysqld4],
server-id=2
在master2上设置同步
#mysqluroot-h127.0.0.1P3306
mysql>stopslave;
changemasterto
master_host='192.168.240.82',master_user='admin',master_password='Pwd.123.!@#',master_log_file='binlog.000001,master_log_pos=120;
mysql>startslave;
查看从库状态
mysql>showslavestatus\G

说明已经于主库同步
测试,在master1上面创建一个库,看master2是否同步过来
如果能看到主库中建立的那么表示成功同步了
这里才是主主复制的开始,我们之前可以实现主从复制也就是说,再把从做为主,主再做为从,就实现主主复制了
7.编辑master2,my.cnf配置文件
vim/etc/my.cnf
[mysqld1],[mysqld2],[mysqld3],[mysqld4]中加入内容如下
log-bin=binlog
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
重启数据库使配置生效
#mysqld_multistop1-4
#mysqld_multistart1-4
登录master2数据库赋予master数据库权限账号
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
grantreplicationslaveon*.*to'admin'@'192.168.240.82'identifiedby'Pwd.123.!@#';
master2上登录数据库查看file和position

master1上登录数据库做如下配置
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
mysql>stopslave;
changemasterto
master_host='192.168.240.83',master_user='admin',master_password='Pwd.123.!@#',master_log_file='binlog.000001,master_log_pos=411;
mysql>startslave;
查看从库状态
mysql>showslavestatus\G

看到上两个进程为数据库与另一边的master已经建立连接
8.配置mysql_slave1
登录master1数据库赋予slave1数据库权限账号
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
grantreplicationslaveon*.*to'admin'@'192.168.240.84'identifiedby'Pwd.123.!@#';
master1上登录数据库查看file和position

登陆slave1,修改my.cnf
#vim/etc/my.cnf
[mysqld1],[mysqld2],[mysqld3],[mysqld4]中加入内容如下
server-id=3
log-bin=binlog
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#mysqld_multistop1-4
#mysqld_multistart1-4
分别登陆mysql3306,3307,3308,3309,操作如下:
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
mysql>stopslave;
changemasterto
master_host='192.168.240.82',master_user='admin',master_password='Pwd.123.!@#',master_log_file='binlog.000002',master_log_pos=300;
mysql>startslave;
查看从库状态
mysql>showslavestatus\G

8.配置mysql_slave2
登录master2数据库赋予slave1数据库权限账号
#mysql-uroot-h127.0.0.1-P3306#f分别登陆3306,3307,3308,3309


grantreplicationslaveon*.*to'admin'@'192.168.240.85'identifiedby'Pwd.123.!@#';
master2上登录数据库查看file和position

登陆slave2,修改my.cnf
#vim/etc/my.cnf
[mysqld1],[mysqld2],[mysqld3],[mysqld4]中加入内容如下
server-id=4
log-bin=binlog
replicate-ignore-db=test
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
#mysqld_multistop1-4
#mysqld_multistart1-4
分别登陆mysql3306,3307,3308,3309,操作如下:
#mysql-uroot-h127.0.0.1-P3306#分别登陆3306,3307,3308,3309
mysql>stopslave;
changemasterto
master_host='192.168.240.83',master_user='admin',master_password='Pwd.123.!@#',master_log_file='binlog.000001',master_log_pos=702;
mysql>startslave;
查看从库状态
mysql>showslavestatus\G

二、安装与配置keepalived(每台都安装)
1.安装兼容包
#yum-yinstallopensslopenssl-develipvsadmpopt-devel
2.下载并安装keepalived
#wgethttp://www.keepalived.org/software/keepalived-1.2.7.tar.gz
#tarzxvfkeepalived-1.2.7.tar.gz
#cdkeepalived-1.2.7
#./configure&&make&&makeinstall
#cp/usr/local/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/
#cp/usr/local/etc/sysconfig/keepalived/etc/sysconfig/
#mkdir/etc/keepalived
#cp/usr/local/sbin/keepalived/usr/sbin/
#cp/usr/local/etc/keepalived/keepalived.conf/etc/keepalived/
#chkconfig--addkeepalived
3.mysql_master1,mysql_master2keepalived配置
#vi/etc/keepalived/keepalived.conf
!ConfigurationFileforkeepalived


global_defs{
notification_email{
zhengxiaofeiccc@126.com
}
notification_email_fromAlexandre.Cassen@firewall.loc
smtp_serversmtp.126.com
smtp_connect_timeout30
router_idLVS_DEVEL
}


vrrp_instanceVI_1{
stateBACKUP
interfaceeth0
virtual_router_id54
priority100#master2改为90
advert_int1
nopreempt#不抢占ip,只在master1上设置
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.240.91
}
}
4.Mysql_slave1,mysql_slave2keepalived配置
#vi/etc/keepalived/keepalived.conf
!ConfigurationFileforkeepalived
global_defs{
notification_email{
zhengxiaofeiccc@126.com
}
notification_email_fromAlexandre.Cassen@firewall.loc
smtp_serversmtp.126.com
smtp_connect_timeout30
router_idLVS_DEVEL
}


vrrp_instanceVI_1{
stateBACKUP
interfaceeth0
virtual_router_id55
priority100#mysql_slave2改为90
advert_int1
nopreempt#不抢占ip,只在slave1上设置
authentication{
auth_typePASS
auth_pass1111
}
virtual_ipaddress{
192.168.240.92
}
}


5.启动keepalived,并查看
#serviceseepalivedstart


6.编写mysql_master监控脚本
#vimcheck_mysql_master.sh
#!/bin/sh


#############check_port################
netstat -antlp|grep :::3306 && mysql_port[0]=3306
netstat -antlp|grep :::3307 && mysql_port[1]=3307
netstat -antlp|grep :::3308 && mysql_port[2]=3308
netstat -antlp|grep :::3309 && mysql_port[3]=3309


############check_status###############
mysql -u root -h 127.0.0.1 -P 3306 -e "showdatabases" && mysql_status[0]=1
mysql -u root -h 127.0.0.1 -P 3307 -e "showdatabases" && mysql_status[1]=2
mysql -u root -h 127.0.0.1 -P 3308 -e "showdatabases" && mysql_status[2]=3
mysql -u root -h 127.0.0.1 -P 3309 -e "showdatabases" && mysql_status[3]=4


if [ ${#mysql_port
  • } -ne 4 -o ${#mysql_status
  • } -ne 4 ];
    then
    echo"service keepalived stop"
    fi
    加入计划任务,每隔一分钟执行一次
    7.编写mysql_slave监控脚本
    #vimcheck_mysql_slave.sh
    #!/bin/sh


    #############check_status####################
    mysql -u root -h 127.0.0.1 -P 3306 -e "showdatabases" && mysql_status[0]=1
    mysql -u root -h 127.0.0.1 -P 3307 -e "showdatabases" && mysql_status[1]=2
    mysql -u root -h 127.0.0.1 -P 3308 -e "showdatabases" && mysql_status[2]=3
    mysql -u root -h 127.0.0.1 -P 3309 -e "showdatabases" && mysql_status[3]=4


    #############check_slave_status##############
    mysql -u root -h 127.0.0.1 -P 3306 -e "show slaves tatus\G"|head-13|tail-2|grep No\
    && mysql_slave_status=1||mysql_slave_status=0


    if [ ${#mysql_status
  • } -ne 4 -o $mysql_slave_status -eq 1 ];then
    service keepalived stop
    fi




  • 运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-657491-1-1.html 上篇帖子: 搭建Keepalived+LVS实现简单高可用 下篇帖子: lvs+keepalived 高可用负载均衡模式分析
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表