赞
踩
此文档旨在为业务系统,提供数据库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
可能长时间处于空闲状态,造成一部分的资源浪费。
[root@loaclhost ~]# rpm -qa | grep mysql
[root@loaclhost ~]#
如果存在请使用如下命令进行卸载
[root@loaclhost ~]# yum remove 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
用户权限只限制本地登录。
采用telnet
命令,检测两台mysql
数据库是否互通,确保网络通信正常。
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上执行
show master status\G;
例如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上查看到的信息。
start slave; -- 分别在两台数据库里面执行此命令。
show slave status\G;
如果看到查出的其中两个信息如下所示,即表示mysql
双主模式搭建成功。
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
此步骤略(只需要安装好keepalive
版本即可,无需进行任何配置修改)。
放置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服务器加网卡。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。