什么是主从复制原理是什么
起初在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容器的配置文件
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
make sure their UUID different
Master01修改masterMysql的配置文件,开启二进制日志,和唯一的serverID
目录 /etc/my.cnf
Master01-创建io线程账户,密码,用于日后和slaveMysql进行数据通信
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乱码
Slave01-检验主从复制,以及注意事项
- Slave_IO_RUNING yes
- Slave_SQL_RUNING yes
Slave01
主从复制的环境,已经搭建好了,接下来,我们可以通过Navicat连接上两台MySQL服务器,进行测试。测试时,我们只需要在主库Master执行操作,查看从库Slave中是否将数据同步过去即可。
注意:增删改的操作一定不要在从库操作,否则会导致Slave_SQL_Running线程会被终止的,从而导致主从复制失败了。解决方案:https://blog.csdn.net/u013829518/article/details/91869547
主从复制解决
问题1-什么是主从复制、原理
问题错误2-LinuxRoot账户下,mysql不能重新启动
问题错误3-无法开启MySQL二进制文件,原因配置文件位置错了
问题错误04-slaveStatus ioRuningthread-No,原因两台uuid相同
问题05-配置没问题,重新开机,重启mysql,IO-线程链接成功