搭建mariadb基于keepaived高可用的主从复制-读写分离

1.测试环境

在这里插入图片描述

iprole
192.168.159.137
192.168.159.134

yum install -y mariadb mariadb-server
#在配置文件加上本地socket配置
[mysql]
socket=/var/lib/mysql/mysql.sock


#修改密码方式1
mysql -uroot -p
set password=password("123456");

#设置密码方式2
mysql_secure_installation
回车以后提示:
enter current password for root (enter for none):  ## 如果是初次运行直接回车,因为没有密码
set root password?[Y/n]   #是否设置root用户密码,输入y回车
new password:  #设置root用户密码
re-enter new password:   #国际惯例再输入一次密码
remove anonymous users?[Y/n]  #是否删除匿名用户
disallow root login remotely?[Y/n]  #是否禁止root用户远程登录
remove test database and access to it?[Y/n]   #是否删除test数据库
reload privilege tables now?[Y/n]   # 是否重新加载权限表

#退出重启服务
quit
systemctl restart mariadb
#设置开机自启
systemctl enable mariadb


>假如有数据
>reset master;  //重置binlog日志
>quit;
mysqldump -u root -p --all-databases > /root/mysql.sql   //备份主服务器库
scp /root/mysql.sql root@192.168.159.134:/root/  //将备份文件拷贝到从服务器
mysql -u root -p < /root/mysql.sql //将备份数据库导入从服务器MariaDB
2.修改配置文件

vim /etc/my.cnf

主服务器配置

在这里插入图片描述

从服务器配置

在这里插入图片描述

进入主服务器mariadb界面
#查看配置是否生效
 show variables like 'server_id' ;
 show master status;
#授权给从服务器
grant replication slave on *.* to 'root'@'%' identified by '123456';
进入从服务器mariadb界面
#查看配置是否生效
 show variables like 'server_id' ;
 show slave status;
#连接到主服务器
 stop slave;
change master to master_host='192.168.159.137',master_user='root',master_password='123456';
start slave;
3.验证主从复制

show slave status\G
出现下图,则表明部署成功
在这里插入图片描述

4.实现读写分离

从服务器作为主服务器的备份, 避免写入冲突, 在采用主、从复制结构时, 为保持主、从数据库的一致性, 用户不能在从服务器上执行数据库写入操作.
可以通过my.cnf将从服务器配置为只读模式. 在只读模式下, 只有super权限的用户和slave同步线程才能写入.

vim /etc/my.cnf
[mysql]
read-only=on  //设置从服务器为只读模式
systemctl restart mariadb   //重启服务
5.使用mysql-router实现读写分离

准备一台布置中间件的主机:192.168.159.138

安装mysql-router
wget http://dev.mysql.com/get/Downloads/MySQL-Router/mysql-router-2.0.3-1.el7.x86_64.rpm
rpm -ivh mysql-router-2.0.3-1.el7.x86_64.rpm
配置
[DEFAULT]
logging_folder = /opt/mysqlrouter/logs

[logger]
level = INFO

[routing:master]
bind_address = 192.168.159.138:7001
destinations = 192.168.159.137:3306
mode = read-write
max_connections = 1024
max_connect_errors = 100 
client_connect_timeout = 9

[routing:slave]
bind_address = 192.168.159.138:7002
destinations = 192.168.159.134:3306
mode = read-only
max_connections = 65535
max_connect_errors = 100 
client_connect_timeout = 9
启动

systemctl start mysqlrouter
netstat -antupl |grep mysqlrouter

测试
在布置中间件的主机进入mariadb
grant all on *.* to 'root'@'%' identified by '123456';
 flush privileges;
退出后,在命令行输入
 mysql -uroot -h192.168.159.138 -P7001 -p123456 -e 'select @@server_id;'
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200227213341519.png)
 >如果想远程连接中间件主机,修改配置文件vim /etc/my.cnf
 >[mysqld]
 >...
 >bind_address = 0.0.0.0
 >...
搭建基于keepalived的高可用集群

需要再安装一台mariadb服务器(可不安装mariadb,但不能进行远程连接了),小编使用的是192.168.159.136,并且安装上mysql-router,并且配置一样

安装keepalived

yum install keepalived -y

修改配置文件
> 主:

! Configuration File for keepalived

global_defs {
  notification_email {
       root@localhost
  }
  notification_email_from keepalived01@localhost
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id keepalived01
  vrrp_skip_check_adv_addr
  #vrrp_strict #一定要注释掉
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}

vrrp_instance VI_1 {
   state MASTER
   interface ens33
   virtual_router_id 51
   priority 100
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.159.200 #要同一局域网上
   }
}

>备:

! Configuration File for keepalived

global_defs {
  notification_email {
       root@localhost
  }
  notification_email_from keepalived02@localhost
  smtp_server 127.0.0.1
  smtp_connect_timeout 30
  router_id keepalived02
  vrrp_skip_check_adv_addr
  #vrrp_strict
  vrrp_garp_interval 0
  vrrp_gna_interval 0
}

vrrp_instance VI_1 {
   state BACKUP
   interface ens33
   virtual_router_id 51
   priority 99
   advert_int 1
   authentication {
       auth_type PASS
       auth_pass 1111
   }
   virtual_ipaddress {
       192.168.159.200
   }
}
修改mysqlrouter配置

把bind_address地址改为VIP的地址或者0.0.0.0
之后重启服务

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值