IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySql主从复制的部署实现 -> 正文阅读

[大数据]MySql主从复制的部署实现

🍅程序员小王的博客:程序员小王的博客

🍅 欢迎点赞 👍 收藏 ?留言 📝

🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕

🍅java自学的学习路线:java自学的学习路线

🍅参考文献:mysql官网

一、Mysql主从复制

1、什么是主从复制

? 简单来说就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟),通过这种方式来保证数据的一致性,就是主从复制

2、主从复制解决的问题

(1)高可用

因为数据都是相同的,所以当Master挂掉后,可以指定一台Slave充当Master继续保证服务运行

(2)负载均衡

(3)数据备份

主从就能很好的解决数据备份问题

(4)业务模块化

(5)高扩展

二、在两台机器上安装MySql

1、环境准备(本地还是在线都需要准备)

#?1.卸载mariadb,否则安装mysql会出现冲突

#?2.执行命令rpm?-qa?|grep?mariadb

#?3.列出所有被安装的mariadb?rpm?包;

#?4.执行命令rpm?-e?--nodeps?mariadb-libs-5.5.56-2.el7.x86_64

2、本地安装(5.6版本默认root没有密码)

#?0.上传下载好的软件包到系统中

#?0.执行本地安装包之前必须先安装vim
??yum?install?-y?vim
#?1.安装步骤
??rpm?-ivh?perl-*
??rpm?-ivh?net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
??rpm?-ivh?mysql-community-common-5.6.42-2.el7.x86_64.rpm
??rpm?-ivh?mysql-community-libs-5.6.42-2.el7.x86_64.rpm
??rpm?-ivh?mysql-community-client-5.6.42-2.el7.x86_64.rpm
??rpm?-ivh?mysql-community-server-5.6.42-2.el7.x86_64.rpm

3、在线安装

#?1.添加官方的yum源创建并编辑mysql-community.repo文件
??vi?/etc/yum.repos.d/mysql-community.repo
#?2.粘贴以下内容到源文件中
??[mysql56-community]
????name=MySQL?5.6?Community?Server
????baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
????enabled=1
????gpgcheck=0
????gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
????
????注意:如果需要安装mysql5.7只需要将baseurl修改即可?
??????baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/

#?3.安装mysql
??sudo?yum?install?-y?mysql-community-server???

4、设置root用户密码

#?1.启动mysql数据库
??[root@localhost?mysql]#?systemctl?start?mysqld

#?2.修改mysql数据库密码
??mysqladmin?-u?root?-p?password?回车?输入原始密码?在输入新的密码
??
??注意:5.7之前版本安装完成之后没有密码,mysql5.7之后的版本的初始密码是随机生成的,放在了?/var/log/mysqld.log
??????使用命令?grep?‘temporary?password’?/var/log/mysqld.log?读出来即可
??????ROOT!Q2w
#?3.登录mysql
??[root@localhost?mysql]#?mysql?-u?root?-p??

5、开启远程访问

#?1.安装完成mysql时,发现mysql数据库,不允许我们远程连接需要修改设置
#?2.登录mysql,并选择使用mysql数据库
#?3.查看mysql库中的所有表
#?4.查询user表
#?5.执行如下命令
??grant?all?privileges?on?*.*?to?'root'@'%'?identified?by?'root'?with?grant?option;

#?6.刷新权限
??flush?privileges;

#?7.重启服务
??systemctl?restart?mysqld
#?8.测试连接

三、Mysql主从部署

1、架构规划

  • 两个linux上都安装了mysql 5.6.51版本

  • 192.168.5.128 master 主节点

  • 192.168.5.129 slave 从节点

2、修改mysql的配置文件

注意:MySQL安装完成后不象SQL Server默认安装在一个目录,它的数据库文件、配置文件和命令文件分别在不同的目录

  • 数据库目录 :/var/lib/mysql/

  • 配置文件 :/usr/share/mysql(mysql.server命令及my.cnf配置文件)

[root@localhost?mysql]#??vim?/etc/my.cnf

3、分别在配置文件中加入如下配置

  mysql(master):
    server-id=1
    log-bin=mysql-bin
    log-slave-updates
    slave-skip-errors=all
  
  msyql(slave):
    server-id=2
    log-bin=mysql-bin
    log-slave-updates
    slave-skip-errors=all
    
    #注意:两个机器的server-id不能一致
  • 主配置

[mysqld]
server-id=1
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

  • 从配置

[mysqld]
server-id=2
log-bin=mysql-bin
log-slave-updates
slave-skip-errors=all

4、重启mysql服务器

systemctl?restart?mysqld

5、登录mysql执行如下命令检测配置是否生效

  • 两个系统操作步骤一致

SHOW?VARIABLES?like?'server_id';

6、登录master节点执行如下命令

show?master?status;

7、 登录从节点执行如下命令:

change?master?to?
????master_host='192.168.5.128',
????master_user='root',
????master_password='root',
????master_log_file='mysql-bin.000001',
????master_log_pos=120;

8、开启从节点

start?slave;?
stop??slave;

9、查看从节点状态

(1)查看从节点状态

mysql>???show?slave?status\G??????

  • 注意:

?1.出现?Slave_IO_Running:?Connecting?和?Slave_SQL_Running:?Yes?说明成功,
?
?2.如果在搭建过程出现错误,可以查看查看错误日志文件?cat?/var/log/mysqld.log
?(我是因为克隆了虚拟机,所以他们的uuid一样了,
?解决办法参考:https://blog.csdn.net/lxypeter521/article/details/81866115)

(2)出错解决方案(不出错不管)

  • 解决办法参考:https://blog.csdn.net/lxypeter521/article/details/81866115

  • 查看auto.cnf 位置

find?/?-name?auto.cnf

  • 备份一份

mv?/var/lib/mysql/auto.cnf??/var/lib/mysql/auto.cnf.bk
  • 重新启动mysql

service?mysql?restart
  • 重复上面步骤,启动成功

10、通过客户端工具进行测试

(1)测试内容:master节点建表,从节点查看

SET?NAMES?utf8mb4;
SET?FOREIGN_KEY_CHECKS?=?0;

--?----------------------------
--?Table?structure?for?admin
--?----------------------------
DROP?TABLE?IF?EXISTS?`admin`;
CREATE?TABLE?`admin`??(
??`id`?int(11)?NOT?NULL?AUTO_INCREMENT,
??`username`?varchar(20)?CHARACTER?SET?utf8mb4?COLLATE?utf8mb4_general_ci?NOT?NULL,
??`password`?varchar(20)?CHARACTER?SET?utf8mb4?COLLATE?utf8mb4_general_ci?NOT?NULL,
??PRIMARY?KEY?(`id`)?USING?BTREE
)?ENGINE?=?InnoDB?AUTO_INCREMENT?=?5?CHARACTER?SET?=?utf8mb4?COLLATE?=?utf8mb4_general_ci?ROW_FORMAT?=?DYNAMIC;

SET?FOREIGN_KEY_CHECKS?=?1;

(2)master建的表

(3)从表中自动创建admin表了

11、关闭主从复制(在从节点执行)

stop?slave;
  • 注意:如果出现
  • #Slave I/O: Fatal error: 
    The slave I/O thread stops because master and slave have equal MySQL server UUIDs;
     these UUIDs must be different for replication to work. 
     
    #Error_code: 1593错误
    请执行如下命令,rm -rf /var/lib/mysql/auto.cnf删除这个文件,
    之所以出现会出现这样的问题,是因为我的从库主机是克隆的主库所在的主机,
    所以auto.cnf文件中保存的UUID会出现重复.
    

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-17 22:14:33  更:2022-03-17 22:16:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:35:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码