此文档旨在为业务系统,提供数据库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,脚本内容如下
剩余内容请转至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服务器加网卡。