mysql MHA高可用实战
一. 环境准备
准备4台Linux,装好mysql
最好是全新安装,可以避免之前的配置造成的异常
尽量创建一个服务器标识
如 mysql1, mysql2, mysql3, MHA-manager, 便于操作进辨识
准备4台Linux,装好mysql
最好是全新安装,可以避免之前的配置造成的异常
尽量创建一个服务器标识
如 mysql1, mysql2, mysql3, MHA-manager, 便于操作进辨识
参考前面0-安装文档,安装两台mysql用于实战测试
Tips:
如果mysql安装是通过虚拟机克隆的, 则以下配置文件
/var/lib/mysql/auto.cnf
中的uuid可能一样, 导致同步不了, 停止其中一个mysql, 删除该文件, 重启后再配置一下即可
使用Mysql-Proxy
下载并解压
wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
tar -zxvf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz
配置文件 vim /etc/mysql-proxy.cnf 并保存
[mysql-proxy] #这个必须加
user=root
#mysql用户
admin-username=root
admin-password=密码
#代理
#ip: proxy安装的机器, 默认4040端口
proxy-address=192.168.0.237:4040
#写库,配master
proxy-backend-addresses=192.168.0.237:3306
#读库,配slave
proxy-read-only-backend-addresses=192.168.0.60:3306,192.168.0.236:3306
#使用自带lua脚本 mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua, 配置解压目录
proxy-lua-script=/opt/mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit/share/doc/mysql-proxy/rw-splitting.lua
#日志文件
log-file=/var/log/mysql-proxy.log
log-level=info
#进程运行方式
daemon=true
keepalive=true
配置读写权限
vim /etc/my.cnf 添加以下bin_log配置
#bin_log配置
log_bin=mysql-bin
server-id=1
sync-binlog=1
binlog-ignore-db=information_schema
binlog-ignore-db=mysql
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#relay_log配置
relay_log=mysql-relay-bin
log_slave_updates=1
relay_log_purge=0
重启服务 systemctl restart mysqld
主库给从库授权
grant replication slave on *.* to root@'%' identified by '123456';
grant all privileges on *.* to root@'%' identified by '123456';
flush privileges;
//查看主库状态信息,例如master_log_file='mysql-bin.000007',master_log_pos=154
show master status;
修改Slave的MySQL配置文件my.cnf,两台Slave的server-id分别设置为2和3
设计遵从三个维度: 可用性, 扩展性, 一致性
保证高可用的方法是冗余。但是数据冗余带来的问题是数据一致性问题。实现高可用的方案有以下几种架构模式: