如何部署mysql高可用呢?本文带你学习

此文档旨在为业务系统,提供数据库mysql高可用方案,此方案在基于mysql双主模式下,采用keepalive漂移VIP地址的方式,实现高可用。

一、架构思路

1、在两台服务器上,分别搭建mysql数据库,这两台数据库都可读写,互为主从,下文统称mysql_Amysql_B

2、默认情况下,只使用一台数据库,即mysql_A,在这种情况下mysql_B处于闲置状态;

3、使用keepalive来实现mysql_Amysql_B的高可用;

4、keepalive使用非抢占模式,使其不会因为故障恢复后抢占VIP的情况。

缺点与不足:mysql_B可能长时间处于空闲状态,造成一部分的资源浪费。

二、mysql的安装

1、检查是否安装有mysql

[root@loaclhost ~]# rpm -qa | grep mysql
[root@loaclhost ~]#

如果存在请使用如下命令进行卸载

[root@loaclhost ~]# yum remove mysql*

2、安装mysql软件

可查看历史文章

运维家,公众号:运维家centos7/linux编译安装mysql8最新版

三、mysql双主模式配置文件


mysql_A的配置文件参考

[root@loaclhost ~]# vim /etc/my.cnf

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
user=mysql
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
skip-external-locking
wait_timeout=86400
key_buffer_size = 2024M
max_allowed_packet = 32M
table_open_cache = 2048
sort_buffer_size = 8M
net_buffer_length = 64K
read_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections=10000
slow-query-log=On
slow_query_log_file="/home/mysql/logs/localhost-slow.log"
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
skip-name-resolve
innodb_buffer_pool_size = 4096M
innodb_thread_concurrency = 4
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=192.168.1.1
server_id = 1
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=1

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

输入 :wq 保存退出
[root@loaclhost ~]# 

mysql_B的配置文件参考

[root@loaclhost ~]# vim /etc/my.cnf

[client]
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]
datadir=/var/lib/mysql
user=mysql
port = 3306
socket = /var/lib/mysql/mysql.sock
character-set-server=utf8
skip-external-locking
wait_timeout=86400
key_buffer_size = 2024M
max_allowed_packet = 32M
table_open_cache = 2048
sort_buffer_size = 8M
net_buffer_length = 64K
read_buffer_size = 8M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
max_connections=10000
slow-query-log=On
slow_query_log_file="/home/mysql/logs/localhost-slow.log"
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
skip-name-resolve
innodb_buffer_pool_size = 4096M
innodb_thread_concurrency = 4
log-bin=mysql-bin
gtid-mode=on
enforce-gtid-consistency=true
master-info-repository=TABLE
relay-log-info-repository=TABLE
sync-master-info=1
slave-parallel-workers=2
binlog-checksum=CRC32
master-verify-checksum=1
slave-sql-verify-checksum=1
binlog-rows-query-log_events=1
report-port=3306
report-host=192.168.1.2
server_id = 2
log-slave-updates
slave-skip-errors=all
auto_increment_increment=2
auto_increment_offset=2

[mysqldump]
quick
max_allowed_packet = 16M

[mysql]
no-auto-rehash

[myisamchk]
key_buffer_size = 20M
sort_buffer_size = 20M
read_buffer = 2M
write_buffer = 2M

[mysqlhotcopy]
interactive-timeout

输入 :wq 保存退出
[root@loaclhost ~]# 

配置文件修改完毕,需要分别重启两台mysql数据库,建议root用户权限只限制本地登录。

四、mysql的双主模式调试

1、防火墙开通

采用telnet命令,检测两台mysql数据库是否互通,确保网络通信正常。

2、分别在mysql_A与mysql_B上新建用以同步数据的用户

grant replication slave on *.* to 'slave'@'192.168.1.1' identified by 'Jier@123456'; -- 在mysql_A上执行
grant replication slave on *.* to 'slave'@'192.168.1.2' identified by 'Jier@123456'; -- 在mysql_B上执行

3、分别在mysql_A与mysql_B上执行如下命令,来查看binlog信息

show master status\G;

4、分别在mysql_A与mysql_B上执行如下命令,需根据实际情况进行更改相关参数

例如master_hostmaster_log_filemaster_log_pos等:

change master  to master_host='192.168.1.2',master_user='slave', master_password='Jier@123456',master_log_file='mysql-bin.000052',master_log_pos=500;  -- 此命令在master_A上执行,其中master_log_file与master_log_pos就是mysql_B上所查看到的信息,在mysql_B上执行的命令类似,但是信息是mysql_A上查看到的信息。

5、启动双主复制

 start slave; -- 分别在两台数据库里面执行此命令。

6、输入以下命令进行状态查看

show slave status\G;

如果看到查出的其中两个信息如下所示,即表示mysql双主模式搭建成功。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

五、keepalieve搭建-非抢占模式

1、安装keepalive

此步骤略(只需要安装好keepalive版本即可,无需进行任何配置修改)。

2、部署检测脚本

放置mysql状态检测脚本,命名为check_mysql.sh,脚本内容如下

图片
剩余内容请转至VX公众号 “运维家” ,回复 “162” 查看。

------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------
------ 以下内容为防伪内容,忽略即可 ------

linuxmpi安装,linux的特点是什么,linux定位段错误的是,linux流量攻击,linuxreadv,linux停止ftp服务,centos和linux是一个操作系统吗,linuxqt32,linux建立递归目录树,gpsrtk使用linux,linuxjad,linux服务器启动方法,linux嵌入式tcp协议栈,psqllinux登录,linux下载tar的包,linux的文件挂载方式,linux给用户sudo全息,linux创建pv,linux安装pycham,linux服务器加网卡。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值