1.准备工作
从已经安装的linux虚拟机克隆一个下来做为从库做准备
然后开启克隆的虚拟机 登录
vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.220.128" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.220.2" # 网关地址
DNS1="192.168.220.2" # DNS服务器
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=afd0baa3-8bf4-4e26-8d20-5bc426b75fd6
DEVICE=ens33
ONBOOT=yes
ZONE=public
如果你的系统没有vim 下载一个就好,不然用vi 一样的效果
vi /etc/sysconfig/network-scripts/ifcfg-ens33
里面的静态资源根据自己的实际情况配置
特别注意ip地址如果要修改的话一定要在起始的ip中间 我这里就是128~254之间
好了言归正传
从库的IP地址在128~254里面随便写一个就好了
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR="192.168.220.130" # 设置的静态IP地址
NETMASK="255.255.255.0" # 子网掩码
GATEWAY="192.168.220.2" # 网关地址
DNS1="192.168.220.2" # DNS服务器
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=afd0baa3-8bf4-4e26-8d20-5bc426b75fd6
DEVICE=ens33
ONBOOT=yes
ZONE=public
我这里就写130了
这里从库的IP配置好了以后ESC 退出 -->: wq 保存退出
重启网络服务
ip地址修改完毕之后,需要重启网络服务,执行如下指令:
systemctl restart network
重启网络以后IP已经发生了改变,此时重启虚拟机
重启后登录,输入ip addr 就完成从库的服务器设置
然后两台服务器上做如下准备工作
1.防火请开放3306端口号
firewall-cmd --zone=public --add-port=3306/tcp --permanent
立即加载
firewall-cmd --reload
查看端口号
firewall-cmd --zone=public --list-ports
成功,开放其他端口同理
2.在两台服务器上将两台数据库启动起来
systemctl start mysqld
然后两台服务器上登录MySQL验证是否可以正常启动
主库配置
1.退出数据库
输入
vim /etc/my.cnf
在[mysqld]
最下面配置
log-bin=mysql-bin #[必须]启用二进制日志
server-id=200 #[必须]服务器唯一ID(唯一即可)
2.重启Mysql服务
systemctl restart mysqld
3.登录MySql 并执行如下指令,创建用户并授权
GRANT REPLICATION SLAVE ON *.* to 'xiaozhang'@'%' identified by 'Root@123456';
注:上面SQL的作用是创建一个用户 xiaozhang ,密码为 Root@123456 ,并且给xiaozhang用户授予REPLICATION SLAVE权限。常用于建立复制时所需要用到的用户权限,也就是slave必须被master授权具有该权限的用户,才能通过该用户复制。
4.登录MySql数据库,查看master同步状态
show master status;
记录下File 和Position的值
然后就不要操作了
从库配置
1). 修改Mysql数据库的配置文件vim /etc/my.cnf
因为从库是从主库的服务器上克隆的 所有本身有一个server-uuid是相同的,要修改一下,不然最后会报错,slave_IO_Running:no
如下才是正确的
输入
vim /var/lib/mysql/auto.cnf
到这样的一个内容界面,将后面的数字随便改一个就好,使主库和从库的server-uuid不一致就可以提前避免啦
不要删多了 多删了就登录不了MySql了
2. 重启Mysql服务
systemctl restart mysqld
3. 登录Mysql数据库,设置主库地址及同步位置
change master to master_host='192.168.220.128',master_user='xiaozhang',master_password='Root@123456',master_log_file='mysql-bin.000001',master_log_pos=154;
注意: 这里的IP根据自己主库的服务器地址配置,后面的用户名和密码,根据自己刚刚设置的配置,
其次特别注意file和position根据刚刚的值配置,这里的特别注意的是这里的"0"的个数,小编吃过亏
到十几的时候前进啦
这里配置3步骤以后如果出现这样的报错,表示当前有slave在运行
输入
start slave;
将之前的关闭
4. 查看从数据库的状态
show slave status;
输入这个会以行的形式的展示数据,不让变查看(可以复制到在Notepad++中查看)
建议直接输入
show slave status\G
表示将查询结果进行按列打印
双yes就可以了
测试
到Navicat中连接
在主库中创建一个数据库,以后刷新一下从库的数据库,看一下从库有没有同时创建一个同名的数据库,同步出现就表示成功了,后面创建表,测试增删改查就简单啦!