前提环境
此处使用的镜像包:CentOS-7-X86_64-DVD-1810.iso镜像 ##不是只能用这一种,自己选择
在VMware上准备两台虚拟机,分别作为mysql1节点和mysql2节点. 下面是VMware上虚拟机的基础配置。
mysql1节点对应主节点
mysql1节点对应从节点
一、基本配置
修改主,从节点主机名
主节点:
hostnamectl set-hostname mysql1
bash
从节点:
hostnamectl set-hostname mysql2bash
##修改后重新连接终端
##MobaXterm中按ctrl+d 退出 按R重新登陆
##SecureCRTPortable中按ctrl+d 退出 按回车重新登陆
##直接bash执行也可,不过如果执行脚本可能报错##su也可以使之生效
配置虚拟机的虚拟网卡
修改主机网卡配置文件,我的网卡为NAT模式 ## 什么模式都可以,可以自己选择
主节点:
vi /etc/sysconfig/network-scripts/ifcfg-ens33 #ifcfg-需要配置的网卡名
BOOTPROTO=dhcp #修改为static静态IP
ONBOOT=no # 修改为yes,设为开机自启
#文件最后添加
IPADDR=192.168.200.128 #配置的IP地址,根据虚拟网络编辑器的网段来配置
NETMASK=255.255.255.0 #子网掩码,也可以用PREFIX=24来表示
GATEWAY=192.168.200.2 #网关
DNS1=114.114.114.114 #DNS域名解析
DNS2=8.8.8.8 #备用DNS域名解析
# :wq (保存退出)
2.配置好后重启网络服务,使配置生效
systemctl restart network #第一种重启网络的方法
service network restart #第二种重启网络的方法
从节点:
vi /etc/sysconfig/network-scripts/ifcfg-ens33 #ifcfg-需要配置的网卡名
BOOTPROTO=dhcp #修改为static静态IP
ONBOOT=no # 修改为yes,设为开机自启
#文件最后添加
IPADDR=192.168.200.129 #配置的IP地址,根据虚拟网络编辑器的网段来配置
NETMASK=255.255.255.0 #子网掩码,也可以用PREFIX=24来表示
GATEWAY=192.168.200.2 #网关
DNS1=114.114.114.114 #DNS域名解析
DNS2=8.8.8.8 #备用DNS域名解析
# :wq (保存退出)
2.配置好后重启网络服务,使配置生效
systemctl restart network #第一种重启网络的方法
service network restart #第二种重启网络的方法
#可能出现的问题:网络重启报错先停掉NetworkManager
systemctl stop NetworkManager
#也可以直接将NetworkManager,disable掉
二、基本环境配置
主从节点关闭防火墙,selinux
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config
将enforcing改为disabled
setenforce 0
配置yum源
主节点:
cd /etc/yum.repos.d
ls
mkdir bak
mv *.repo bak
ls
vi local.repo
示例内容如下:
[centos]
name= centos
baseurl=file:///mnt/centos
enabled=1
gpgcheck=0
mkdir /mnt/centos
mount /dev/cdrom /mnt/centos
yum clean all
yum repolist从节点:
cd /etc/yum.repos.d
ls
mkdir bak
mv *.repo bak
ls
vi local.repo
##从节点配置的为ftp的yum源[centos]
name= centos
baseurl=ftp://192.168.200.128/centos
enabled=1
gpgcheck=0
mkdir /mnt/centos
mount /dev/cdrom /mnt/centosyum clean all
yum repolist
安装 ,配置ftp 服务
yum install -y vsftpd
systemctl start vstpd修改配置文件
vi /etc/vsftpd/vsftpd.conf添加一行代码
anon_root=/mnt
##添加位置不固定,可以尝试在现有配置项的相关部分或者文件末尾添加这行代码。这样做可以更容易地维护和管理配置文件。
以上是在/etc/vsftpd/vsftpd.conf文件中添加anon_root=/mnt,添加的这一行是为了指定FTP服务器的匿名用户的根目录为/mnt,这个位置是可以随意指定的。
systemctl restart vsftpd
设置主机映射
主节点:
vi /etc/hosts
192.168.200.128 mysql1 ##主节点的ip 主节点的主机名
192.168.200.129 mysql2 ##从节点的ip 从节点的主机名
从节点:
scp 192.168.200.128:/etc/hosts /etc
## 以上命令为从主节点复制/etc/hosts文件到从节点的/etc目录下,并覆盖原来的hosts文件
## 192.168.200.128为主节点的IP
三、主从数据库安装与配置
1、安装数据库
主节点:
yum install -y mariadb mariadb-server
systemctl start mariadb初始化数据库,设置密码
mysql_secure_installation
直接敲enter键
输入两次相同的想设置的密码
除了此处输入n ,其他均输入y,如果输入 y为禁止远程登录,就不可以使用远程连接工具了
从节点:
yum install -y mariadb mariadb-server
systemctl start mariadb初始化数据库,设置密码 ##此处与主节点相同
mysql_secure_installation
此处输入 n ,同上
2、修改配置文件
主节点:
vi /etc/my.cnf在[mysqld]下面添加三行,示例如下
log_bin=mysql_bin
binlog_ignore_db =mysql
server_id=128重启数据库
systemctl restart mariadb
从节点:
vi /etc/my.cnf
在[mysqld]下面添加三行,示例如下
log_bin=mysql_bin
binlog_ignore_db =mysql
server_id=129重启数据库
systemctl restart mariadb
3、登录数据库,授权
主节点:
mysql -uroot -p000000
grant all privileges on *. * to root@'%' identified by "000000";
##以上这行代码的作用是授予用户 root 在任何主机上对所有数据库的所有权限,并使用密码 "000000" 进行身份验证。% 表示允许从任何主机连接
grant replication slave on *. * to 'user'@'mysql2' identified by "000000";##这行代码的作用是授予用户 user 在 mysql2 主机上进行复制从属的权限,并使用密码 "000000" 进行身份验证。
重启数据库
systemctl restart mariadb
从节点:
登录数据库
mysql -uroot -p000000
change master to master_host='mysql1',master_user='user',master_password='000000';
将当前数据库实例配置为一个从属实例,从名为
mysql1
的主数据库实例复制数据。这行代码的含义如下:
change master to
:表示要修改主从复制的配置。master_host='mysql1'
:指定主数据库的主机名为mysql1
。master_user='user'
:指定用于连接主数据库的用户名为user
。master_password='000000'
:指定用于连接主数据库的密码为000000
。需要注意的是,这行代码需要在从数据库实例上执行,并且需要在开始复制之前进行配置。在执行这行代码之后,你还需要执行
start slave;
命令来启动从数据库实例的复制进程。
start slave; ###启动从数据库实例的复制进程
show slave status \G ###检查从数据库实例的复制状态
四、验证数据库主从服务
主节点:
mysql -uroot -p000000
create database test;
use test;
create table school(id int not null primiary key, name varchar(50),addr varchar(255));
insert into school values(1, 'beijingdiyigaozhong', 'beijing');
select * from school;
从节点:
show databases;
use test;
show tables;
select * from school;