目录
一、源码安装mysql
首先下载myql的安装包之后进行解压,并下载cmake
下载完成后删除缓存文件,并进行环境检测
环境检测完成后用make -j2命令编译,等待时间较长
之后修改启动文件
修改环境变量,改完之后要source应用
复制启动文件
创建文件记录数据库密码
启动数据库
启动完毕后进入安全初始化修改密码
重复上述步骤完成第二台数据库的编译。
二、数据库的主复制
第一台主数据库node1修改配置文件/etc/my.cnf
修改第二台副数据库node2配置文件/etc/my.cnf
在主数据库node1中创建一个用户relp密码为lee
将数据放在这个用户中
查看状态
完成后向数据库中加入信息
切换到从数据库node2中,接入用户并查看状态
完成后能够看到主数据库中的信息
多线程回放
修改mysql-node2的主配置文件
将日志记录在表中不记录在文件里
查看进程
gitd的日志模式
编写node1的主配置文件
设置之后在node3,node2中也添加设置gtid模式
之后重启node1、node2、node3的mysql服务
添加完成后可以看到是自动识别
完成后设置完毕,可以用全局id进行回放。
三、mysql的半同步模式
半同步模式原理
编辑node1的主配置文件
下载插件并查看是否开启
将上述操作在node2和node3中slave中完成。
四、mysql高可用之组复制(MGR)
首先停用所有的mysql删除之前所有的数据
之后修改主配置文件
修改完成后初始化数据库
完成后启动数据库并修改用户密码
之后对数据库进行配置
配置完成后可以看到效果
对node2和node3也进行同样的上述操作,需要注意的是得有解析文件在/etc/hosts
主配置文件主要的是这两个地方要修改
最后测试如图所示
五、mysql路由
首先下载安装包
编写主配置文件
编写完成后在node2和node3中创建远程连接的用户并授权
完成后在node1上停用数据库并用命令进入数据库
之后进行测试可以看到node2和node3在轮循
六、mysql高可用集群MHA
首先创建一个ip为192.168.35.50的mha之后将压缩包解压
解压完成后与node1、node2、node3进行免密认证
认证完成后注意解析文件的编写
之后让node1和node2、node3构成一个组从系统,以node1为主,node2和node3为从,详细做法请查看上述。
完成后安装mha的软件包,在node1、node2和node3上都得安装
故障切换
手动切换
#切换过程如下:
[root@mysql-mha masterha]# masterha_master_switch --conf=/etc/masterha/app1.cnf -
-master_state=alive --new_master_host=192.168.84.20 --new_master_port=3306 --
orig_master_is_new_slave --running_updates_limit=10000
#模拟master故障
[root@mysql-node10 mysql]# /etc/init.d/mysqld stop
#在MHA-master中做故障切换
[root@mysql-mha masterha]# masterha_master_switch --master_state=dead --
conf=/etc/masterha/app1.cnf --dead_master_host=192.168.56.12 --
dead_master_port=3306 --new_master_host=192.168.56.11 --new_master_port=3306 --
ignore_last_failover
--ignore_last_failover 表示忽略在/etc/masterha/目录中在切换过程中生成的锁文件
自动切换
[root@mysql-mha masterha]# rm -fr app1.failover.complete #删掉切换锁文件
#监控程序通过指定配置文件监控master状态,当master出问题后自动切换并退出避免重复做故障切换
[root@mysql-mha masterha]# masterha_manager --conf=/etc/masterha/app1.cnf
[root@mysql-mha masterha]# cat /etc/masterha/manager.log
#恢复故障节点
[root@mysql-node2 mysql]# /etc/init.d/mysqld start
mysql> CHANGE MASTER TO MASTER_HOST='192.168.84.10', MASTER_USER='repl',
MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1
清除锁文件
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log
MHA添加VIP
#修改脚本在脚本中只需要修改下vip即可
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_failover
my $vip = '192.168.84.100/24';
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
[root@mysql-mha ~]# vim /usr/local/bin/master_ip_online_change
my $vip = '192.168.84.100/24';
my $ssh_start_vip = "/sbin/ip addr add $vip dev eth0";
my $ssh_stop_vip = "/sbin/ip addr del $vip dev eth0";
my $exit_code = 0;
[root@mysql-mha masterha]# masterha_manager --conf=/etc/masterha/app1.cnf & 启动监
控程序
[root@mysql-node10 tmp]# ip a a 192.16.100/24 dev eth0 #在master节点添加VIP
清除锁文件
[root@mysql-mha masterha]# rm -rf app1.failover.complete manager.log