摘要
一. MYSQL 数据库主从复制,实时同步的再现
1. 1 先下载虚拟机(硬件)与lunxi系统(centos7)
步骤:
- 下载虚拟机:下载方法与步骤
- 下载centos7 DVD版 镜像
如果版本与centos7 不匹配,则需要升级安装:VM16pro
装系统:在“虚拟电脑”里装centos: 编辑虚拟机设置 -CD/DVD中 指定 centos的文件位置 - 开启:新建虚拟机 加粗样式 关于vmware中 计算机名字: 虚拟机名:bigdata001 计算机名:bigdata001 网络中的名字:bigdata001 用户名:root 密码:root 默认超级管理员:root/自己设置
- 磁盘布局:
/boot:系统启动时 需要的内存 200M /:系统的可用磁盘大小 10240M swap:交换内存 ,建议大小 和内存一致 2048M - 查看计算机名:hostname
修改计算机名:/etc/sysconfig/network - 配置网关(分配网络)
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
步骤:
-
先去官网下载安装报包到本地 使用SecureCRT 对centos进行文件的上传下载:yum install lrzsz -
使用命令安装:rpm -ivh rpm文件名(服务端+客服端) (若发生冲突,需要先卸载对赢得mysql -lib 文件) -
安装时需要修改密码 -
验证MYSQL: mysqladmin --version -
启动: service mysql start 关闭:service mysql stop 重启:service mysql restart -
继续更改配置mysql配置文件,编码问题(详见视频,有点繁琐)
1.3 在Windows 系统中安装新的MYSQL5.55
步骤:按道理 先应该彻底删除之前的MYSQL文件及注册文件(本机采用两个端口号安装了两个mysql ,但只不同时启动)
- 去下载Windows版mysql安装包(不叙述了就)
- 在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 访问
- 查看主机状态: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:
如果有问题,查看日志:Last_IO_Errno(1539)/Last_SQL_Errno 本次提示:master和slave有相同的server-id
查看日志:Last_IO_Errno(2003)/Last_SQL_Errno
本次再次提示端口号或者授权访问受阻
11.再次尝试: stop slave ; start slave;
- 在navicat 中验证是否同步:
在主数据库(Windows mysql中)的test库中新建表success:
1.5 总结
mysql 数据库的主从复制,实时同步数据终于实现了,在虚拟机服务器,与搭配的windows 中,同一个局网中,使用上述的二进制日志与mysql数据库的配置功能可以不需要借助第三软件实现。
|