0
点赞
收藏
分享

微信扫一扫

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


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

一、架构思路

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

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

3、使用​​keepalive​​​来实现​​mysql_A​​​与​​mysql_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_host​​​、​​master_log_file​​​、​​master_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​​,脚本内容如下

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

剩余内容请转至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 条评论