扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
下文内容主要给大家带来mysql双主配置讲义,这里所讲到的知识,与书籍略有不同,都是创新互联专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。
站在用户的角度思考问题,与客户深入沟通,找到永城网站设计与永城网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、国际域名空间、网站空间、企业邮箱。业务覆盖永城地区。结尾2
1.数据库架构图:
2.安装环境信息:
master1 172.16.90.13 CentOS 7.2 Keepalived读 VIP:172.16.90.15
master2 172.16.90.14 CentOS 7.2 Keepalived读 VIP:172.16.90.16
3.MySQL双主配置
master1修改my.cnf,新增如下配置:
server-id=13
log-bin=mysql-bin
sync-binlog=1
binlog-checksum=none
binlog-format=mixed
auto-increment-increment=2
auto-increment-offset=1
log-slave-updates
slave-skip-errors=all
master2修改my.cnf,新增如下配置:
server-id=14
log-bin=mysql-bin
sync-binlog=1
binlog-checksum=none
binlog-format=mixed
auto-increment-increment=2
auto-increment-offset=1
log-slave-updates
slave-skip-errors=all
在master1中为mysql从库账户授权:
grant replication slave on . to 'sync'@'%' identified by 'syncpwd';
flush privileges;
show master status; #当前主库状态,即master1
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000004 | 599 | | | |
+------------------+----------+--------------+------------------+-------------------+
在master2中为mysql从库账户授权:
grant replication slave on . to 'sync'@'%' identified by 'syncpwd';
flush privileges;
show master status; #当前主库状态,即master2
show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000002 | 468 | | | |
+------------------+----------+--------------+------------------+-------------------+
在maste1中指定master2为主库:
stop slave;
change master to master_host='172.16.90.14',master_user='sync',master_password='syncpwd',master_log_file='mysql-bin.000002',master_log_pos=468;
flush privileges;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
start slave;
在maste2中指定master1为主库:
stop slave;
change master to master_host='172.16.90.13',master_user='sync',master_password='syncpwd',master_log_file='mysql-bin.000004',master_log_pos=599;
flush privileges;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
start slave;
MySQL双主配置完成,验证配置成功:
show slave status\G #master1中显示的信息
1. row
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.90.13
Master_User: sync
Master_Port: 3306
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
show slave status\G #master2中显示的信息
1. row
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.90.14
Master_User: sync
Master_Port: 3306
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
4.Keepalived高可用配置
安装:yum install -y keepalived
启动:systemctl stop keepalived
说明:
当两台云服务器都正常的时候
用户写数据默认访问服务器A,如果A有异常则访问B服务器。
用户读数据默认访问服务器B,如果B有异常则访问A服务器。
服务器A的写数据初始权重为100,B为90
服务器A的读数据初始权重为90,B为100
检测进程检测到异常时,会使得本机的权重下降20
服务器A
vrrp_script chk_master1 {
script "/opt/context/keepalive_check/chk_mysql.sh"
interval 2
weight -20
}
vrrp_instance VI_MASTER1 {
state MASTER
interface eno16780032
virtual_router_id 51
priority 100
mcast_src_ip 172.16.90.13
advert_int 1
authentication {
auth_type PASS
auth_pass 5678
}
virtual_ipaddress {
172.16.90.15
}
track_script {
chk_master1
}
}
vrrp_instance VI_MASTER2 {
state BACKUP
interface eno16780032
virtual_router_id 52
priority 90
mcast_src_ip 172.16.90.13
advert_int 1
authentication {
auth_type PASS
auth_pass 15678
}
virtual_ipaddress {
172.16.90.16
}
}
服务器B
vrrp_script chk_master2 {
script "/opt/context/keepalive_check/chk_mysql.sh"
interval 2
weight -20
}
vrrp_instance VI_MASTER1 {
state BACKUP
interface eno16780032
virtual_router_id 51
priority 90
mcast_src_ip 172.16.90.14
advert_int 1
authentication {
auth_type PASS
auth_pass 5678
}
virtual_ipaddress {
172.16.90.15
}
}
vrrp_instance VI_MASTER2 {
state MASTER
interface eno16780032
virtual_router_id 52
priority 100
mcast_src_ip 172.16.90.14
advert_int 1
authentication {
auth_type PASS
auth_pass 15678
}
virtual_ipaddress {
172.16.90.16
}
track_script {
chk_master2
}
}
检测脚本
#!/bin/bash counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l) if [ "${counter}" -eq 0 ]; then systemctl stop keepalived
fi
对于以上关于mysql双主配置讲义,如果大家还有更多需要了解的可以持续关注我们创新互联的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流