同步操作将从 陈xx/mysql-mha 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
虚拟机linux版本:centos7
Mysql版本:5.7.29
MHA manage 和node版本 0.58
epel:epel-release-latest-7.noarch.rpm
首先解压tar包
tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
因为是centos环境,所以centos会默认安装mariadb数据库,需要查看是否存在,存在则卸载
rpm -qa |grep mariadb
rpm -e mariadb-libs-5.5.65-1.el7.x86_64 --nodeps
按照依赖顺序安装mysql各个组件
rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
在安装server时遇到第一个问题有依赖没有安装
既然有依赖没有被安装,那么我们就按照提示安装即可
yum -y install perl.x86_64 yum install -y libaio.x86_64 yum -y install net-tools.x86_64
继续安装devel
rpm -ivh mysql-community-devel-5.7.29-1.el7.x86_64.rpm
初始化mysql
mysqld --initialize --user=mysql
查询初始化的root密码,登录时使用
cat /var/log/mysqld.log
启动mysql服务
systemctl start mysqld.service
mysql -uroot -p
填入刚刚获得的密码,进入数据库后可以修改密码
set password=password('root')
然后我们需要关闭防火墙功能。centos可能有iptables没有的话会提示,不用管。
systemctl stop iptables
systemctl stop firewalld
systemctl disable firewalld.service
master数据库
vi /etc/my.cnf
在mysqld中加入以下配置
log-bin=mysql-bin //binlog日志名称
server-id=1 //服务名称 接下来的主从server id不能相同
sync-binlog=1 //同步复制
binlog-ignore-db=performance_schema //binlog不复制的数据库
binlog-ignore-db=information_schema
binlog-do-db=abc //binlog复制的数据库
给其他服务器root用户访问权限
grant replication slave on *.* to 'root'@'%' identified by 'root';
grant all privileges on *.* to 'root'@'%' identified by 'root';
flush privileges;
show master status;
slave数据库my.cnf配置
server-id=2
relay_log=mysql-relay-bin
read_only=1
slave_parallel_type=LOGICAL_CLOCK
slave_parallel_workers=8
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log-recovery=1
relay_log_purge = 0
将slave数据库的master改为我们的master数据库
change master to master_host='192.168.230.129',master_port=3306,master_user='root',master_password='root',master_log_file='mysql-bin.000002',master_log_pos=869;
start slave;
半同步
是否可以动态插件安装
这里需要注意,在后面的MHA实践中,由于master宕机后,从库会晋升未master,所以从库不仅需要安装slave插件,也需要安装master插件,这样成为主库之后才能也使用半同步复制
select @@have_dynamic_loading;
show plugins;
#主库安装
install plugin rpl_semi_sync_master soname 'semisync_master.so'
show variables like '%semi%'
#开启
set global rpl_semi_sync_master_enabled=1;
#延迟时间
set global rpl_semi_sync_master_timeout=1000;
#从库安装
install plugin rpl_semi_sync_slave soname 'semisync_slave.so'
set global rpl_semi_sync_slave_enabled=1;
创建表sql
CREATE TABLE `position` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL DEFAULT '',
`salary` varchar(255) NOT NULL DEFAULT '',
`city` varchar(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)
CREATE TABLE position_detail (
`id` int(10) NOT NULL AUTO_INCREMENT,
`pid` int(30) NULL DEFAULT 0,
`description` text NULL ,
PRIMARY KEY (`id`)
)
首先修改host,将四台主机加上
vi /etc/hosts
192.168.230.129 node1.keer.com node1
192.168.230.130 node2.keer.com node2
192.168.230.131 node3.keer.com node3
192.168.230.132 node4.keer.com node4
每个主机生成sshkey并共享,实现ssh免密登录
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@node1
cd .ssh/
cat authorized_keys
scp authorized_keys root@node2:~/.ssh/
scp authorized_keys root@node3:~/.ssh/
scp authorized_keys root@node4:~/.ssh/
每个节点都需要安装node组件,MHA服务器还需要安装manager组件
yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm
yum install -y mha4mysql-manager-0.58-0.el7.centos.noarch.rpm
安装manager组件是报错,可以看到缺少perl-Log-Dispatch
如之前一样,缺什么安装什么。更新epel源,并安装perl-Log-Dispatch
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install perl-Log-Dispatch
创建mha配置文件
mkdir /etc/mha_master
vi /etc/mha_master/mha.cnf
[server default] //适用于server1,2,3个server的配置
user=root //mha管理用户
password=root //mha管理密码
manager_workdir=/etc/mha_master/app1 //mha_master自己的工作路径
manager_log=/etc/mha_master/manager.log // mha_master自己的日志文件
remote_workdir=/mydata/mha_master/app1 //每个远程主机的工作目录在何处
ssh_user=root // 基于ssh的密钥认证
repl_user=root //数据库用户名
repl_password=root //数据库密码
ping_interval=1 //ping间隔时长
[server1] //节点2
hostname=192.168.230.129 //节点2主机地址
ssh_port=22 //节点2的ssh端口
candidate_master=1 //将来可不可以成为master候选节点/主节点
[server2]
hostname=192.168.230.130
ssh_port=22
candidate_master=1
[server3]
hostname=192.168.230.131
ssh_port=22
candidate_master=1
查看ssh连接
masterha_check_ssh -conf=/etc/mha_master/mha.cnf
这里有一个天坑,mha应该是不认conf的空格,当配置后面有注释时,会报错
需要将注释全部去掉
检查管理的MySQL复制集群的连接配置参数是否OK
masterha_check_repl -conf=/etc/mha_master/mha.cnf
从库也需加给账号权限
log-bin=mysql-bin
sync-binlog=1
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
read_only=1
log_slave_updates = 1
从库也要配置log_bin不然无法成为主库
启动MHA
nohup masterha_manager -conf=/etc/mha_master/mha.cnf &> /etc/mha_master/manager.log &
查看MHA状态
masterha_check_status -conf=/etc/mha_master/mha.cnf
is running并显示当前master服务器
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。