Mysql集群配置主从关系
目录
Mysql集群配置主从关系
一.Mysql集群安装
1.安装cmake(云主机,虚拟机环境无需安装)
1.#yum -y install cmake
2.安装包解压(/home/resources中)
1.创建一个空文件 PS:需要两个云主机
2.将资源移动到该文件夹中
3.解压该资源
3.安装数据库相关包
1.安装 要按顺序来,最好安装我的图来做,防止产生没必要的错误 -ivh 显示安装进度
2.安装第一个安装包 rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
3.安装第二个安装包 rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
4.安装第三个安装包 rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
5.安装第四个安装包 rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
4.检查相关两个文件夹
1./etc/my.cnf
2./var/lib/mysql
5.Mysql运行启动
1.数据库启动成功,
2.无需输入数据库密码直接通过指令进入
6.远程连接云主机Mysql
1.设置对应的账号,密码,远程连接需要账号和密码
2.连接成功
7.登录远程数据库
1.把所有账号root中的密码全部改成加密的字符串(root加密)
2.两台全部设置
8.主从搭建
1.选择一个云主机作为主节点 10.42.60.249 为主节点
2.编辑打开这个文件
3.重启服务
4.登录Mysql
5.\G:linux客户端执行的命令附加值,可以将执行的命令结果以纵向展示
6.获取观察结果
9.配置从节点
1.配置从节点my.cnf添加server-id
2.重启从节点
10.从节点挂接主从关系
1.登录从节点的mysql客户端执行命令
2.运行查询从节点状态
3.开启从节点(开启IO线程,SQL线程)
11.测试主从的关系
1测试主从数据同步
1.SHOW MASTER STATUS;查看结构
2.重新启动从节点即可实现主从数据同步
3.数据同步测试,
12.停止主从关系
1.停止主从关系
2.初始化所有数据
3.重新执行挂接
4.重启
13.暂告一段落
一.Mysql集群安装
1.安装cmake(云主机,虚拟机环境无需安装)
环境插件 空环境必须做这一项
yum 安装cmake gcc tcl*
1.#yum -y install cmake
2.安装包解压(/home/resources中)
1.创建一个空文件 PS:需要两个云主机
2.将资源移动到该文件夹中
3.解压该资源
3.安装数据库相关包
1.安装 要按顺序来,最好安装我的图来做,防止产生没必要的错误 -ivh 显示安装进度
2.安装第一个安装包 rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
调试
3.安装第二个安装包 rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
分片
4.安装第三个安装包 rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
客户端
5.安装第四个安装包 rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
PS:安装会出问题 参考文献
https://www.cnblogs.com/chuijingjing/p/10005922.html
servlet
两台云主机Mysql安装成功,PS:不只是我这一种安装方法
4.检查相关两个文件夹
1./etc/my.cnf
这个文件出现,才能说明安装成功
如果不存在,从有的服务器远程拷贝
远程拷贝:[root@IP]# scp xxx.txt [email protected]:/home/
2./var/lib/mysql
5.Mysql运行启动
1.数据库启动成功,
2.无需输入数据库密码直接通过指令进入
查看数据库信息,好久没敲,指令都快忘记了
6.远程连接云主机Mysql
1.设置对应的账号,密码,远程连接需要账号和密码
设置运行远程登录 在自动生成的Mysql数据库中有User表,用来设置运行远程登录,需要在云主机中设置
- 默认安装的mysql没有外部访问权限,所以需要开启访问权限
- grant [权限] on [数据库名].[表名] to ['用户名']@['web服务器的ip地址'] identified by ['密码'];
- "%" 表示所有10.0.0.1这样格式的ip地址 10-0-0-1
- mysql>grant all on *.* to 'root'@'%' identified by 'root';
给所有输入root,root的用户运行远程连接
2.连接成功
7.登录远程数据库
1.把所有账号root中的密码全部改成加密的字符串(root加密)
2.两台全部设置
此时,Mysql数据库基本搭建成功
8.主从搭建
上篇博客介绍了,主节点需要开启一个二进制日志文件,但是Mysql默认不开启
- 主节点:开启一个二进制日志文件(mysql默认不开二进制)
1.选择一个云主机作为主节点 10.42.60.249 为主节点
2.编辑打开这个文件
/etc/my.cnf中添加内容
- server-id=1
- log-bin=mysql-bin
3.重启服务
4.登录Mysql
5.\G:linux客户端执行的命令附加值,可以将执行的命令结果以纵向展示
区别
6.获取观察结果
- file文件名:从节点需要配置监听的二进制文件
- 000001是后缀自增的数字,会在重启之后自增1
- position指针值:初始化120,
- 随着新增数据,创建表格等写操作的进行,将会变大;从节点判断主节点更新数据的依据
保证主从挂接需要锁库
- flush tables with read lock;将当前库中所有表格锁定,只允许读;
- 防止高并发,多人使用时,指针值变化,捕捉不到,防止发生错误
- 保证在运行数据库的环境中,不会因为写操作对观察数据的影响
- unlock tables;放开锁定,在挂接主从完成后放开;
9.配置从节点
1.配置从节点my.cnf添加server-id
2.重启从节点
10.从节点挂接主从关系
- 需要的参数:二进制文件名称,position值,ip,port,username,password
- 登录从节点的mysql客户端执行命令
1.登录从节点的mysql客户端执行命令
master_log_file='mysql-bin.000002', 是什么写什么,我的是01
只要不报错,运行成功
注意!!!!!!!!!!!!!!222一定要写对应的,写错了完全不通过!!!
血的教训
2.运行查询从节点状态
IO线程 NO SQL线程 NO 还没开启,主从还没开启
3.开启从节点(开启IO线程,SQL线程)
start slave;开启 stop slave; 停止
查看状态
在开启主从关系之前的数据,从节点无法关联
11.测试主从的关系
1测试主从数据同步
1.SHOW MASTER STATUS;查看结构
在主节点中写入一些数据,更新从节点数据库,发下同步更新了
由于前面粗心,写错数字发下,主从关系,没法连接,关闭从节点,重新配置
2.重新启动从节点即可实现主从数据同步
3.数据同步测试,
PS:
- 我在从节点无法写创建表,主节点可以,
- 可能是我指令写错了,还是从节点无法创建表,可以试一试,
- 写数据没问题,但是主节点无法获取到值(下面我测试一下)
1.主节点数据
2.从节点数据
3.主节点添加数据
4.此时从节点,会更新数据吗?
- 依然保持原样,并且这是因为sql语句执行同步过来的insert命令已经出错了
- 因为SQL线程出现错误
- 主节点写操作,不会继续同步
原因:
- 在从节点添加了一个id=3,name=“杀死”的数据
- ,当主节点添加数据insert into student (id,name) values(3,ly'),
- io依然是监听获取更新sql语句的逻辑,
- 但是sql线程在执行insert通过语句时报错:Duplicat entry 'id',
- 主键重复错误
- Error 'Duplicate entry '3' for key 'PRIMARY'' on query. Default database: 'mysql1'. Query: 'INSERT INTO `user` (`id`, `name`, `age`) VALUES ('3', 'ly', '10')'
结论:主从关系一旦搭建,mysql虽然不限制从节点写数据,但是不能在从节点写,从节点只能读取操作
12.停止主从关系
1.停止主从关系
stop slave将io线程和sql线程停止; 出现错误都可以停止 PS:只限制在测试环境,因为会删除数据
2.初始化所有数据
将错误数据,导致主从出现问题的数据删除 保证两边数据一致
3.重新执行挂接
SHOW MASTER STATUS;
4.重启
13.暂告一段落