千家信息网

mysql双主配置讲义

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,下文内容主要给大家带来mysql双主配置讲义,这里所讲到的知识,与书籍略有不同,都是专业技术人员在与用户接触过程中,总结出来的,具有一定的经验分享价值,希望给广大读者带来帮助。结尾21.数据库架构图:
千家信息网最后更新 2025年01月24日mysql双主配置讲义

下文内容主要给大家带来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=13log-bin=mysql-binsync-binlog=1binlog-checksum=nonebinlog-format=mixedauto-increment-increment=2auto-increment-offset=1log-slave-updatesslave-skip-errors=all

master2修改my.cnf,新增如下配置:

server-id=14log-bin=mysql-binsync-binlog=1binlog-checksum=nonebinlog-format=mixedauto-increment-increment=2auto-increment-offset=1log-slave-updatesslave-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/bashcounter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)if [ "${counter}" -eq 0 ]; then    systemctl stop keepalived
fi

对于以上关于mysql双主配置讲义,如果大家还有更多需要了解的可以持续关注我们的行业推新,如需获取专业解答,可在官网联系售前售后的,希望该文章可给大家带来一定的知识更新。
0