解决CentOS下MySQL的主从复制问题

什么是主从复制原理是什么

起初在Docker下部署和运行MySQL

  • 注意不建议在Docker中运行MySQL,无法保障数据安全,而且很麻烦

D1-准备CentOS虚拟机,并且完成安装JDK 和 Docker
D2-

su root 切换root账户

D3

 systemctl restart docker 启动docker

D4

 docker pull mysql   拉取mysql镜像

D4-1-创建目录 /tmp/mysql/data,挂载 /tmp/mysql/data 到mysql容器内数据存储目录
D4-2-创建目录 /tmp/mysql/conf,挂载 /tmp/mysql/conf/hmy.cnf 到mysql容器的配置文件

docker run 操作数据卷
D4-3 数据卷操作

docker run 
--privileged=true 
-d --name mysql-test01 
-v /tmp/mysql/data:/var/lib/mysql  
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf 
-p 3306:3306 
-e MYSQL_ROOT_PASSWORD=123456 
mysql:5.7.25
  • 操作数据卷内容,指定宿主机的配置文件位置和数据位置
  • 容器目录不知道可以自己查
  • 账户root 密码123456

D5 查看容器中配置好的mysql:5.7.25的id号

docker ps -a 

D6 启动mysql程序
docker start id号

D7 输入虚拟机ip 和账户密码远程连接MySQL

在CentOS下部署和运行MySQL

安装的几种方式

  • 源码编译
  • 压缩包解压(一般为tar.gz)
  • 编译好的安装包(RPM、DPKG等)
  • 在线安装(YUM、APT等)
    以上几种方式便捷性依次增加,但通用性依次下降,比如直接下载压缩包进行解压,这种方式一般需要自己做一些额外的配置工作,但只要掌握了方法,各个平台基本都适用,YUM虽然简单,但是平台受限,网络受限,必要的时候还需要增加一些特定YUM源。
    几种安装方式最好都能掌握,原则上能用简单的就用简单的:YUM>RPM>tar.gz>源码

CM1 -下载tar包,自己找资源,官网或者网盘
CM1-2-创建Msql账号,用来启动mysql,笔者此处用root账户,这里的账户root是linux账户而不是mysql账户(以后会踩坑)

[root@localhost mysql]# groupadd mysql
[root@localhost mysql]# useradd -r -g mysql -s /bin/false mysql

CM2-笔者这里采用压缩包tar.gz方法通过XFTP上传到虚拟机,再解压安装

tar -xvf /usr/loacl/mysql/mysql-8.0.15-linux-glibc2.12-i686.tar

CM3-解压目录 /usr/local/mysqlxxxx
CM4-解压后目录 mysqlxxxx mv指令 重命名为mysql文件夹
CM5-解压后目录内部创建data-mysql数据墓库
CM5-2 解压后目录创建config-mysql my.cnf配置文件(此处以后会踩坑!!)

初始化mysql

m01-进入mysql目录,初始化mysql,修改几个参数-datadir,–basedir,–user

[root@localhost mysql]# 
./bin/mysqld  --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

m0-修改账户密码

m0-启动mysql服务

m0- 配置mysql环境变量

m 关闭防火墙,放行mysql服务端口

m 解决mysql远程登录问题

m 使用图形化界面输入linxu的ip和账户密码名登录mysql

配置主从复制

概念

二进制日志
中继日志
主库
从库

详解命令

步骤

Master01-虚拟机克隆,克隆两台虚拟机

Master01-虚拟机克隆以后查看两台mysql的uuid,并修改,MySQLuuid相同以后会有坑

/usr/local/mysql/data/auto.cnf

主服务器
从服务器uuid

make sure their UUID different

修改MySQL uuid

Master01修改masterMysql的配置文件,开启二进制日志,和唯一的serverID

目录 /etc/my.cnf

在这里插入图片描述

Master01-创建io线程账户,密码,用于日后和slaveMysql进行数据通信

主441

Slave01-查看master satus 如果记录二进制日志文件的position(slaveMySQL要用)

Slave01-绑定master开启slave线程

change master to master_host='192.168.81.128',   # A. master_host : 主库的IP地址
master_user='xiaoming',master_password='Root@123',  # B. master_user : 访问主库进行主从复制的用户名(上面在主库创建的)                                        #C. master_password : 访问主库进行主从复制的用户名对应的密码
master_log_file='mysql-bin.000001',                 #从哪个日志文件开始同步(上述查询master状态中展示的有)
master_log_pos=441;                                 #从指定日志文件的哪个位置开始同步(上述查询master状态中展示的有)

start slave;                                        #开启从库 start slave;


Slave01-查看slave线程状态,查看是否绑定成功

show slave stastus\G;  #不加\G乱码

删除slave指令

Slave01-检验主从复制,以及注意事项

ok

  • Slave_IO_RUNING yes
  • Slave_SQL_RUNING yes

Slave01
主从复制的环境,已经搭建好了,接下来,我们可以通过Navicat连接上两台MySQL服务器,进行测试。测试时,我们只需要在主库Master执行操作,查看从库Slave中是否将数据同步过去即可。

注意:增删改的操作一定不要在从库操作,否则会导致Slave_SQL_Running线程会被终止的,从而导致主从复制失败了。解决方案:https://blog.csdn.net/u013829518/article/details/91869547

向主数据库插入两条信息,从库同步

主从复制解决

IO running collection 怎么办

问题1-什么是主从复制、原理

问题错误2-LinuxRoot账户下,mysql不能重新启动

问题错误3-无法开启MySQL二进制文件,原因配置文件位置错了

问题错误04-slaveStatus ioRuningthread-No,原因两台uuid相同

问题05-配置没问题,重新开机,重启mysql,IO-线程链接成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值