liunx
CentOS7
准备环境: 四台服务器 CentOS7 mariadb
192.168.42.140 manager 管理节点
192.168.42.141 master 主mysql
192.168.42.142 slave1 从mysql
192.168.42.143 slave2 从mysql
1.首先把防火墙在全部服务器上全部关掉,把4台服务器时间都同步了。
setenforce 0
systemctl stop firewalld
同步时间:
sudo cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
init 6
2.安装mariadb数据库,并开启数据库
yum -y install mariadb-server mariadb
systemctl start mariadb
3.在四台服务器都配置epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
mv epel-7.repo /etc/yum.repos.d/
4.修改主机名
hostnamectl set-hostname manager
su -
5.建立ssh无交互登录环境
ssh-keygen
ssh-copy-id root@192.168.42.140
ssh-copy-id root@192.168.42.141
ssh-copy-id root@192.168.42.142
ssh-copy-id root@192.168.42.143
四台服务器都一样的配置
配置hosts环境
vim /etc/hosts
192.168.42.140 manager
192.168.42.141 master
192.168.42.142 slave1
192.168.42.143 slave2
四台服务器都一样的配置
mysql
show variables like ‘%have_dynamic%’;
INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so’;
INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so’;
show plugins;
show variables like ‘%rpl_semi_sync%’;
show status like ‘%rpl_semi_sync%’;
192.168.42.141:在主上面配置
修改my.cnf文件,配置主从同步
vim /etc/my.cnf
server-id = 1
log-bin = mysql-bin
binlog_format = mixed
log-bin-index = mysql-bin.index
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 1000
rpl_semi_sync_slave_enabled = 1
relay_log_purge = 0
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
重新开启mariadb
systemctl restart mariadb
在manager上面配置
修改my.cnf文件,配置主从同步
vim /etc/my.cnf
server-id = 2
log-bin = mysql-bin
binlog_format = mixed
log-bin-index = mysql-bin.index
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 1000
rpl_semi_sync_slave_enabled = 1
relay_log_purge = 0
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
重新开启mariadb
systemctl restart mariadb
在slave1和slave2上面配置
修改my.cnf文件,配置主从同步
vim /etc/my.cnf
server-id = 3
log-bin = mysql-bin
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
read_only = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 10000
server-id = 4
log-bin = mysql-bin
relay-log = relay-bin
relay-log-index = slave-relay-bin.index
read_only = 1
rpl_semi_sync_slave_enabled = 1
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 10000
重新开启mariadb
systemctl restart mariadb
在manager和主上面配置
mysql
show variables like ‘%rpl_semi_sync%’;
show status like ‘%rpl_semi_sync%’;
grant replication slave on . to mharep@‘192.168.42.%’ identified by ‘123456’;
grant all privileges on . to manager@‘192.168.42.%’ identified by ‘123456’;
grant all privileges on . to manager@‘master’ identified by ‘123456’;
grant all privileges on . to manager@‘slave1’ identified by ‘123456’;
grant all privileges on . to manager@‘slave2’ identified by ‘123456’;
flush privileges;
use mysql
select host,user,password from user ;
在slave1和slave2上面配置
mysql
show variables like ‘%rpl_semi_sync%’;
show status like ‘%rpl_semi_sync%’;
grant all privileges on . to manager@‘192.168.42.%’ identified by ‘123456’;
grant all privileges on . to manager@‘master’ identified by ‘123456’;
grant all privileges on . to manager@‘slave1’ identified by ‘123456’;
grant all privileges on . to manager@‘slave2’ identified by ‘123456’;
flush privileges;
use mysql
select host,user,password from user ;
在master上面配置
mysql
show master status;
在manager和slave1和slave2上面配置
change master to master_host=‘192.168.42.141’,master_port=3306,master_user=‘mharep’,master_password=‘123456’,master_log_file=‘mysql-bin.000001’,master_log_pos=1059;
start slave;
show slave status\G
四台服务器都一样的配置
yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-ParallelForkManager perl-Config-IniFiles ncftp perl-Params-Validate perl-CPAN perl-TestMock-LWP.noarch perl-LWP-Authen-Negotiate.noarch perl-devel perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker
yum install perl-DBD-MySQL -y
在manager上面配置
tar zxf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57/
perl Makefile.PL
make && make install
tar zxf mha4mysql-manager-0.57.tar.gz
cd mha4mysql-manager-0.57/
perl Makefile.PL
make && make install
在master和slave1和slave2上面配置
tar zxf mha4mysql-node-0.57.tar.gz
cd mha4mysql-node-0.57/
perl Makefile.PL
make && make install
在manager上面配置
mkdir /etc/masterha
mkdir -p /masterha/app1
mkdir /scripts
cd mha4mysql-manager-0.57/
cp samples/conf/* /etc/masterha/
cp samples/scripts/* /scripts/
在manager上面配置
vim /etc/masterha/app1.cnf
[server default]
manager_workdir=/masterha/app1
manager_log=/masterha/app1/manager.log
user=manager
password=123456
ssh_user=root
repl_user=mharep
repl_password=123456
ping_interval=1
[server1]
hostname=192.168.42.141
port=3306
candidate_master=1
[server2]
hostname=192.168.42.140
port=3306
candidate_master=1
[server3]
hostname=192.168.42.142
port=3306
no_master=1
[server4]
hostname=192.168.42.143
port=3306
no_master=1
192.168.42.140:在manager上面查看
masterha_check_repl -global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
ln -s /usr/local/mysql/bin/* /usr/local/bin/
masterha_check_ssh --global_conf=/etc/masterha/masterha_default.cnf --conf=/etc/masterha/app1.cnf
masterha_check_repl -conf=/etc/masterha/app1.cnf 在manager上测试
nohup masterha_manager --conf=/etc/masterha/app1.cnf &>/tmp/mha_manager.log &
masterha_check_status --conf=/etc/masterha/app1.cnf 检查状态
cat /masterha/app1/manager.log 查看
masterha_stop --conf=/etc/masterha/app1.cnf 关闭