MYSQL 数据库主从同步(局域网)

一. MYSQL 数据库主从复制,实时同步的再现

1. 1 先下载虚拟机(硬件)与lunxi系统(centos7)

步骤:

  1. 下载虚拟机下载方法与步骤
  2. 下载centos7 DVD版 镜像

如果版本与centos7 不匹配,则需要升级安装:VM16pro

装系统:在“虚拟电脑”里装centos: 编辑虚拟机设置 -CD/DVD中 指定 centos的文件位置 - 开启:新建虚拟机

关于vmware中 计算机名字:

虚拟机名:bigdata001
计算机名:bigdata001
网络中的名字:bigdata001
用户名:root
密码:root
默认超级管理员:root/自己设置
  1. 磁盘布局
    /boot:系统启动时 需要的内存 200M
    /:系统的可用磁盘大小 10240M
    swap:交换内存 ,建议大小 和内存一致 2048M
  2. 查看计算机名:hostname
    修改计算机名:/etc/sysconfig/network
  3. 配置网关(分配网络)
    在这里插入图片描述

6.配置网络服务
在这里插入图片描述
7.防火墙:关闭
centos:
service iptables stop 关闭防火墙
chkconfig iptables off 禁止开机自启
查看防火墙状态service iptables status
windows:
网络-右键 属性-关闭防火墙
8. 自动同步时间:
设置时间同步,为防止多个节点之间通信时,时间不同步,造成服务拒绝的现象。
安装用于同步时间的 ntp插件 :
yum -y install ntp ntpdate
ntpdate cn.pool.ntp.org
将系统时间写入硬盘时间
hwclock --systoch
9. windows真实机 通过SecureCRT 操作centos
下载SecureCRT
通过SecureCRT 对centos进行文件的上传下载:yum install lrzsz
上传:切换到当前目录 cd /tmp, 直接用鼠标拖拽,Zmodem…
10. 集群(3台) :完整克隆
bigdata01 -> bigdata02/bigdata03

克隆完毕后:
	a.将从计算机 的内存适当降低
	
	b.修改从计算中 唯一性 的配置(ip、uuid、hostname映射)
		在克隆后的bigdata02/bigdata03中
		
		打开:vi /etc/sysconfig/network-scripts/ifcfg-ens33
		
	修改ip地址:
		删除uuid/hwaddr(在重启时,自动生成)
		删除文件 rm -r  /etc/udev/rules.d/70-persistent-net.rules 输入yes

		计算机名:vi /etc/sysconfig/network
		  更改名字:hostnamectl set-hostname bigdata002
		  
		
	c.更改映射
	  
	在centos:
		vi /etc/hosts,
		追加:
		192.168.2.128 bigdata01
		192.168.2.129 bigdata02
		192.168.2.130 bigdata03

	在本机windows:
		C:\Windows\System32\drivers\etc\hosts
		追加:
		192.168.2.128 bigdata01
		192.168.2.129 bigdata02
		192.168.2.130 bigdata03
		
		重启命令:
		systemctl restart network 

再检查是否ping通:ping www.baidu.com 查看是否能连接上Windows的网

11. SSH免密钥登陆

私钥:密钥留在本机
公钥: 密钥发给本机
bigdata01:
生成密钥:ssh-keygen -t rsa   (密钥存放位置:/root/.ssh ,  id_rsa:私钥     id_rsa.pub)
发送私钥(本机): ssh-copy-id localhost    , 需要输入bigdata01节点(root)的密码
发送公 钥(其他计算机):ssh-copy-id bigdata02, 需要输入bigdata02节点(root)的密码
测试免密钥登陆:
	ssh localhost
	ssh bigdata02
	
用上述方法,给每2台计算机 设置免密钥

1.2 在lunxi 系统安装rpm 版mysql 5.5.55

步骤:

  1. 先去官网下载安装报包到本地
    使用SecureCRT 对centos进行文件的上传下载:yum install lrzsz

  2. 使用命令安装:rpm -ivh rpm文件名(服务端+客服端)
    (若发生冲突,需要先卸载对赢得mysql -lib 文件)

  3. 安装时需要修改密码

  4. 验证MYSQL:
    mysqladmin --version

  5. 启动: service mysql start
    关闭:service mysql stop
    重启:service mysql restart

  6. 继续更改配置mysql配置文件,编码问题(详见视频,有点繁琐)

1.3 在Windows 系统中安装新的MYSQL5.55

步骤:按道理 先应该彻底删除之前的MYSQL文件及注册文件(本机采用两个端口号安装了两个mysql ,但只不同时启动)

  1. 去下载Windows版mysql安装包(不叙述了就)
  2. 在navicat 中测试连接是否成功(注意更改端口号与从库lunxi 一致)

1.4 主从复制的原理与实践

实现主从同步的原理:
在这里插入图片描述
1.master将改变的数 记录在本地的 二进制日志中(binary log);该过程:二进制事件
2.slave 将master 的binary log 拷贝自己的relay log 中继日志文件)中
3.中继日志文件事件,将数据读取到自己的数据库中
4. MYSQL 主从复制 是异步的,串行的,有延迟的(master:slave=1:n)

实战将windows - bigdata001实现主从同步,实时同步(跨服务器,跨系统)

	windows主机(IP:192.168.2.2,mysql 用户名:root,密码:root)
	bigdata001:从机(IP:192.168.2.128,mysql 用户名:root,密码:root)

1.关闭防火墙
centos7:
systemctl stop firewalld
systemctl disable firewalld
Windows:去网络中关闭即可
2. 允许远程访问操作——(在centos 和Windows中分别操作):
grant all privileges on . to ‘root’@’%’ identified by ‘root’ with grant option ;
flush privileges;

3.配置master(windows) my.ini
[mysqld]
#id
server-id=1
#二进制日志文件
log-bin=“D:/Program Files/MySQL/MySQL Server 5.5/data/mysql-bin”
错误记录日志文件
log-error=“D:/Program Files/MySQL/MySQL Server 5.5/data/mysql-error”
#主从同步时 忽略的数据库
binlog-ignore-db=mysql
#可以指定需要同步的数据库
binlog-do-db=test
保存,重启即可。

4. 处理mysql权限:
开放(windows/centos)远程访问MySql的权限:(授权)
登录Mysql管理员账户:在主机中授权哪些机子是从机
grant all privileges on . to ‘root’@‘192.168.2.%’ identified by ‘root’ with grant option ;
flush privileges;
本地的mysql可以被: 192.168.2.% ,root/root 访问

  1. 查看主机状态:show master status;
    记录:( mysql-bin.000001 | 107) 文件位置(配置从库要用)

6. 配置slave(centos)
进入my.cnf : vi /etc/my.cnf 修改命令
[mysqld]
server-id=2(待会可以设置成全局变量 set global server_id=2;)
log-bin=mysql-bin
replicate-do-db=test

windwos/centos需要在配置完毕后 重启

7. 设置主从关系 :
slave ->master
显示master的位置
通过以下命令查看master的信息:
(windows)show master status;
File: mysql-bin.000001
Position:107

salve:指定master (slave指定master作为自己的老大)
(bigdata001,mysql命令)

change master to
master_host=‘192.168.2.2’,
master_user=‘root’,
master_password=‘root’,
master_port=3306,
master_log_file=‘mysql-bin.000001’,
master_log_pos=107;

若报错:先停止之前的同步:stop slave;

9. 开启slave (bigdata001,mysql命令):
start slave ;

10. 验证主从是否成功执行:
show slave status \G
必须保证以下两个为yes:
Slave_IO_Running:
Slave_SQL_Running:

如果有问题:
1.查看日志:Last_IO_Errno(1539)/Last_SQL_Errno 
	本次提示:master和slave有相同的server-id 
2.查看日志:Last_IO_Errno(2003)/Last_SQL_Errno 
本次再次提示端口号或者授权访问受阻

11.再次尝试:
stop slave ;
start slave;

  1. 在navicat 中验证是否同步:
    在主数据库(Windows mysql中)的test库中新建表success:
    在这里插入图片描述

1.5 总结

mysql 数据库的主从复制,实时同步数据终于实现了,在虚拟机服务器,与搭配的windows 中,同一个局网中,使用上述的二进制日志与mysql数据库的配置功能可以不需要借助第三软件实现。

猜你喜欢

转载自blog.csdn.net/weixin_44790306/article/details/123792400