MySQL主主模式+Keepalived高可用( 二 )
我们要记住binlog文件的名字 , 也就是mysql_master.000001 , 和位置 , 也就是516 。
然后 , 我们再登录到192.168.73.142(主2)的数据库 , 执行如下命令:
mysql> CHANGE MASTER TO# MySQL主的IP->MASTER_HOST='192.168.73.141',# MySQL主的端口->MASTER_PORT=3306# MySQL主的备份账号->MASTER_USER='repl_master',# MySQL主的备份账号密码->MASTER_PASSWORD='password',# 日志文件 通过show master status得到的->MASTER_LOG_FILE='mysql_master.000001',# 日志文件位置 通过show master status得到的->MASTER_LOG_POS=516;# 开启从库mysql> START SLAVE;# 查看从库的状态mysql> SHOW SLAVE STATUS;
这样 , 192.168.73.141(主1)->192.168.73.142(主2)的主从就搭建好了 。 然后 , 我们再反过来 , 搭建192.168.73.142(主2)->192.168.73.141(主1)的主从 。
先登录192.168.73.142(主2)的数据库 , 执行如下命令:
# 创建备份的账号 使用MYSQL_NATIVE_PASSWORD的方式加密mysql> CREATE USER 'repl_slave'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY 'password';# 对repl_slave授予备份的权限mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl_slave'@'%';# 刷新权限mysql> FLUSH PRIVILEGES;?# 查看MySQL主节点的状态mysql> SHOW MASTER STATUS;?+-------------------+---------+--------------+---------------------------------------------+------------------+| File| Position | Binlog_Do_DB | Binlog_Ignore_DB| Executed_Gtid_Set |+-------------------+---------+--------------+---------------------------------------------+------------------+| mysql_slave.000001 |379 || information_schema,mysql,performance_schema,sys ||+-------------------+---------+--------------+---------------------------------------------+------------------+1 row in set
再登录到192.168.73.141(主1)的数据库 , 执行如下命令:
mysql> CHANGE MASTER TO# MySQL主的IP->MASTER_HOST='192.168.73.142',# MySQL主的端口->MASTER_PORT=3306# MySQL主的备份账号->MASTER_USER='repl_slave',# MySQL主的备份账号密码->MASTER_PASSWORD='password',# 日志文件 通过show master status得到的->MASTER_LOG_FILE='mysql_slave.000001',# 日志文件位置 通过show master status得到的->MASTER_LOG_POS=379;# 开启从库mysql> START SLAVE;# 查看从库的状态mysql> SHOW SLAVE STATUS;
这样 , 192.168.73.142(主2)->192.168.73.141(主1)的主从也搭建好了 。 我们可以使用navicat分别连接192.168.73.141(主1)和192.168.73.142(主2) , 并执行建表、插入语句 , 验证一下主主同步是否成功 , 这里就不给大家演示了 。
Keepalived高可用MySQL主主结构已经搭建好了 , 无论从哪个MySQL插入数据 , 都会同步到另外一个MySQL 。 虽然有了MySQL主主结构 , 但是不能保证高可用 , 比如 , 我们的应用程序连接的是192.168.73.141(主1) , 倘若192.168.73.141(主1)的MySQL挂掉了 , 我们的应用程序并不能自动的切换到192.168.73.142(主2) , 我们的应用程序也是不可用的状态 。 要做到这一点 , 就要借助于Keepalived 。
Keepalived有两个主要的功能:
- 提供虚IP , 实现双机热备
- 通过LVS , 实现负载均衡
yum install keepalived
我们直接使用yum进行安装 。 安装完之后 , 编辑keepalived的配置文件 , 首先编辑192.168.73.141(主1)上的配置文件 , 如下:vim /etc/keepalived/keepalived.conf?# 全局配置 不用动只需注释掉vrrp_strictglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#必须注释掉 否则报错#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0}?# 检查mysql服务是否存活的脚本vrrp_script chk_mysql {script "/usr/bin/killall -0 mysqld"}# vrrp配置虚IPvrrp_instance VI_1 {# 状态:MASTER另外一台机器为BACKUPstate MASTER# 绑定的网卡interface ens33# 虚拟路由id两台机器需保持一致virtual_router_id 51# 优先级 MASTER的值要大于BACKUPpriority 100advert_int 1authentication {auth_type PASSauth_pass 1111}# 虚拟IP地址 两台keepalived需要一致virtual_ipaddress {192.168.73.150}# 检查脚本 vrrp_script的名字track_script {chk_mysql}}?###后边的virtual_server全部注释掉 它是和LVS做负载均衡用的这里用不到###
再编辑192.168.73.142(主2)上的配置文件 , 只需要将state MASTER改为state BACKUP , 如下:state BACKUP
通过keepalived的配置 , 我们对外提供192.168.73.150的IP , 这个IP实际指向是192.168.73.141(主1) , 因为它的state是MASTER 。 当keepalived检测到192.168.73.141(主1)上的MySQL不可用时 , 会自动切换到192.168.73.142(主2) 。 对于外部用户是无感知的 , 应为外部统一使用的是192.168.73.150 。
- 抖音小店|抖音进军电商,短视频的商业模式与变现,创业者该如何抓住机遇?
- 小店|抖音小店无货源是什么?与传统模式有什么区别?
- 运营|首个OTA智能社区落地 社区运营酿发展模式之变
- 便携式水枪|区城管委保洁一队创新作业模式
- 部署模式|5G toB大戏拉开帷幕,公网专用正当其时
- 模式|破解出租车巡游模式天然短板 嘀嗒出行“出租车·新出行”卓有成效
- 不良|打开“无痕模式”就以为无人知?殊不知,“不良网站”正在利用你
- 模式|刚了解到无货源电商模式,淘宝好还是抖音小店好?
- 冲突|智能互联汽车:通过数据托管模式解决数据使用方面的冲突
- 降低|降低中后台产品体验复杂性的设计模式