1.设置7台主机的ip,可以根据自己的ip来。
192.168.10.15 | mysql主 |
192.168.10.16 | mysql主2 |
192.168.10.17 | mysql从1 |
192.168.10.18 | mysql从2 |
192.168.10.19 | lvs+keepalived主 |
192.168.10.20 | lvs+keepalived从 |
192.168.10.21 | 测试 |
1.双主搭建
192.168.10.15和192.168.10.16两台主机做2-4步骤!!!!!
2.首先开始配置,关闭防火墙和setenforce0、配置一个本地源,然后挂载。
systemctl stop firewalld 关闭防火墙
setenforce 0 关闭setenforce
vi /etc/yum.repos.d/bdy.repo 加入以下
[local]
name=bdy
baseurl=file:///mnt
enabled=1
gpgcheck=0
然后挂载mount才可以用这个源,
mount /dev/sr0 /mnt/
3.下载mariadb数据库,配置数据库的主配置文件。
yum -y isntall mariadb* 下载mariadb
配置数据库主配置文件
vi /etc/my.com 加入以下内容
#日志文件名前缀
log-bin=mysql-bin
#标识 唯一的id 要和
server-id=1
#排除不复制的库
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys
#配置排除的库
relay-log=mysql-relay-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
log_slave_updates=1
4.配置数据库密码,启动mariadb。
#配置数据库密码
mysql_secure_installation
Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456 #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456 在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB! 数据库密码配置完毕
启动mariadb
systemctl restart mariadb
5.在这台主机上(192.168.10.15 主)登录数据库,授权远程的主2,在获取主库信息。
数据库密码
mysql -uroot -p123456
创建用户(cdm)
create user "cdm"@"%" identified by '123456';
赋予权限
grant replication slave on *.* to "cdm"@"%" identified by '123456';
刷新权限
flush privileges;
获取主库信息
show master status;
6.show master status; 得到以下内容
7.在(192.168.10.16 主2)上配置连接到第一个主(192.168.10.15),
CHANGE MASTER TO
MASTER_HOST='192.168.10.15', (第一个主的ip)
MASTER_USER='cdm', (第一个设置的用户)
MASTER_PASSWORD='123456', (第一个设置的密码)
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001', (第一个主的信息)
MASTER_LOG_POS=3763; (第一个主的信息)
#完整命令:
CHANGE MASTER TO
MASTER_HOST='192.168.10.15',
MASTER_USER='cdm',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3763;
此两条结果与第六条查出的相对应。
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3763;
8.然后启动slave,查看是否yes;
启动slave
start slave;
查看是否yes;
show slave status \G;
连接第二个主成功。
9. 在第二个主上登录mysql,然后在第二个主2(192.168.10.16)上配置授权远程用户,获取第二个主库的信息
登陆mysql
mysql_-uroot -p
授权用户
grant replication slave on *.* to 'yz'@'%'identified by '123456';
刷新权限
flush privileges;
获取第二个主库的信息
show master status;
10.在返回第一个主(192.168.10.15)上,连接第二个主库的信息,启动slave,测试成功。
解释:
CHANGE MASTER TO
MASTER_HOST='192.168.10.16', (第一个主的ip)
MASTER_USER='yz', (第一个设置的用户)
MASTER_PASSWORD='123456', (第一个设置的密码)
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001', (第一个主的信息)
MASTER_LOG_POS=3763; (第一个主的信息)
#完整命令:
CHANGE MASTER TO
MASTER_HOST='192.168.10.16',
MASTER_USER='yz',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3763;
注意:
这两条是在第二个主上的信息,如果不是yes,请仔细看
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3763;
启动server;
start slave;
出现两个yes表现成功
show slave status \G;
连接第一个主成功。
2.双从搭建
192.168.10.17和192.168.10.18两台主机做12-13步骤!!!!!
12. 现在开始双从步骤,关闭防火墙,setenforce0,下载mariadb*,
关闭防火墙
systemctl stop firewalld
设置防火墙开机启动
systemctl disable firewalld
关闭setenforce
setenforce 0
下载mariadb*
yum -y install mariadb*
13. 配置数据库文件,设置数据库密码,启动mariadb。
配置数据库文件
vi /etc/my.conf
#标识符要和其他3个主机不一样,比如主2是3,那您这里不能是三,范围0-60000
server-id=9
#配置排除的库
relay-log=mysql-relay-bin
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys
配置数据库密码
Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456 #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456 在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB! 数据库密码配置完毕
启动mariadb
systemctl restart mariadb
14.在主库(192.168.10.15)上获取信息。
15.然后返回从1,登录数据库,,然后从1连接主1,启动slave,测试yes。
登录mysql
mysql -uroot -p123456
连接主1
CHANGE MASTER TO
MASTER_HOST='192.168.10.15',
MASTER_USER='cdm',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=3763;
启动slave;
start slave;
测试yes;
show slave status \G;
16.从2连接主2,和以上(从1连接从二一样的操作),首先获取主2信息。
17.然后返回从2,登录数据库,,然后从1连接主1,启动slave,测试yes。
登录mysql
mysql -uroot -p123456
连接主1
CHANGE MASTER TO
MASTER_HOST='192.168.10.16',
MASTER_USER='yz',
MASTER_PASSWORD='123456',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS=1670;
启动slave;
start slave;
测试yes;
show slave status \G;
18.现在4台机子,登录mysql都查看show slave status \G; 如果每一个机子上面有两个yes,那证明你的主从搭建成功,如果看不懂的对方,请私信小编。
3.lvs+keepalived搭建
19.现在搭建(192.168.10.19和192.168.10.20)lvs+keepalved,提示,这两台主机操作基本一样,不一样的只有几个地方,我就拿一台主机做。
20.关闭防火墙,setenforce0,安装软件。
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭setenforce
setenforce 0
下载keepalived
yum -y install keepalived ipvsadm
21.进入目录把里面内容全部删除,重启keepalived。
进入目录
vi /etc/keepalived/keepalived.conf 加入
解析:
注意:这里和192.168.10.20不一样的地方
global_defs {
router_id 1 这里192.168.10.20不要是1,也就是不要和这一台主机相同。
}
vrrp_instance VI_1 {
state MASTER 这里192.168.10.20不是MASTER 是BACKUP
interface ens33
virtual_router_id 1
priority 200 优先级也要不一样,192.168.10.20设置50
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.10.200 (虚拟ip)
}
}
命令:
global_defs {
router_id 1
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 1
priority 200
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.10.200
}
}
启动keepalived
systemctl restart keepalived
查看ip有没有192.168.10.200(也就是虚拟ip)。
22.进入目录,在最后面加入两个主的ip,重新启动keepalived。
进入目录
vi /etc/keepalived/keepalived.conf 加入
virtual_server 192.168.10.200(这里是虚拟IP) 3306 {
delay_loop 15
lb_algo rr
lb_kind DR
protocol TCP
real_server 192.168.10.15(这里是主1的ip) 3306 {
weight 1
TCP_CHECK {
connect_port 3306
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
real_server 192.168.10.16(这里是主2的ip) 3306 {
weight 1
TCP_CHECK {
connect_port 3306
connect_timeout 3
nb_get_retry 3
delay_before_retry 4
}
}
}
启动keepalived
systemctl restart keepalived
23.加载系统内核的服务模块,查看系统模块运行的状态,启动服务。
加载系统内核的服务模块
modprobe ip_vs
查看系统模块运行的状态
lsmod | grep ip_vs
启动服务
systemctl restart keepalived
24.查看规则。看看有没有主1和主2.
25.然后返回主1上,添加一个lo:0网卡,systemctl restart network.
编写lo:0
vi /etc/sysconfig/network-scripts/ifcfg-lo:0 加入
DEVICE=lo:0
IPADDR=192.168.10.200 (虚拟ip)
NETMASK=255.255.255.255
ONBOOT=yes
启动服务
systemctl restart network
26.查看静态路由,添加静态路由。
查看静态路由
route -n
如果没有这个目录,那就下载一个
yum -y install net-tools
添加静态路由
route add -host 192.168.10.200 dev lo:0
27.最后一台机子(192.168.10.21)测试,安装mariadb*,启动maraidb,配置密码。
安装mariadb*
yum -y install mariadb*
启动mariadb
systemctl restart mariadb
配置数据库密码
Enter current password for root (enter for none):按回车
Switch to unix_socket authentication [Y/n] :按回车
Change the root password? [Y/n]:按回车
New password: 123456 #输入设置数据库的密码 123456 在回车
Re-enter new password: 123456 在输一次123456 按回车
Remove anonymous users? [Y/n] 按回车
Disallow root login remotely? [Y/n] 按回车
Remove test database and access to it? [Y/n] 按回车
Reload privilege tables now? [Y/n] 按回车
Thanks for using MariaDB! 数据库密码配置完毕
28,然后使用命令测试能不能用虚拟ip登录到mysql。
用虚拟ip登录mysql
mysql -h192.168.10.200 -uroot -p
如果登录不成功,在主1上赋予权限。
grant all privileges on *.* to 'root'@'%' identified by '123456';
如果登录成功,创建一个表。
create database yz;
这个表会在所有的数据库上都有,双主双从上都有。
29,