目录
Seconds_Behind_Master显示延时时间,会不断刷新
1.安装和配置mysql
mkdir bulid目录
由于要安装模块可能会缺少包,从软件仓库中安装
make
make install
添加变量
导入变量,创建数据目录,创建mysql使用的用户
修改数据库配置
初始化数据库
最后一行为数据库初始化的密码(*iFOoHhk0yeH)
复制启动脚本
启动数据库
设置新的数据库密码和数据库的安全初始化
如果不想要设置数据库的安全初始化去修改密码,可以直接使用给的初始化密码进入去修改密码
alter user root@localhost identified by 'westos';
或者
mysqld --initialize-insecure --user=mysql 在初始化阶段直接设置,第一次登陆直接为空密码
2.phpMyAdmin
直接通过网页图形去管理数据库
https://www.phpmyadmin.net/ #下载地址
下载并解压包
修改nginx配置文件并重新加载
在默认发布页面中加入php页面
[Pdo_mysql]
1056 pdo_mysql.default_socket=/data/mysql/mysql.sock
1165 mysqli.default_socket = /data/mysql/mysql.sock
通过浏览器进入登陆界面,输入管理数据库的用户名和密码
创建表
插入数据
3.mysql用户的建立和授权
1.用户的建立
首先先进入数据库,创建用户
%指的是能够远程登陆,本地登陆可以使用localhost
2.用户的授权
4.mysql的主从复制
主从复制:将主数据库中所做的操作通过二进制日志传输到从节点上,从节点将通过日志把操作重新执行;从而使得从数据库的数据与主数据库保持一致
1.配置主节点并把mysql安装到子节点
将主节点的mysql服务安装到子节点上
配置从节点的mysql
配置环境变量
复制配置文件
mysql --initialize --user=mysql
初始化数据库
配置主节点配置文件
在主节点上创建一个用户,给予复制权限
查看二进制日志是否开启
查看主节点二进制日志
查看主节点的server id
查看主节点二进制日志
2.配置从节点
配置从节点的配置文件
查看从节点的server id
进行主从复制之前,必须保持两个数据库的数据相同,保证数据一致性
在从节点中添加主节点主机,主节点的二进制文件一定是二进制列表中最后一个
启动slave线程
START SLAVE
查看从节点slave线程状态
通过页面在主节点server1中添加数据
查询从节点server2有添加的数据
5.GTID复制
1. 配置server1
2.配置server2
3.配置从节点server3
在主节点server1中
scp -r /usr/local/mysql server3:/usr/local
测试‘
从网页中向主节点server1插入数据
6.半同步复制
主库在执行完事务并写入二进制日志后,等待至少一个从库接收到并写到relay-log中才返回给客户端。
server2中
server3中
server1中
测试:
停掉server2的slave进程
在server1中插入数据,会等待10s,然后才会成功插入数据,因为超过10s就会切换到异步复制
由于停掉了slave,server2中没有数据
7.异步复制
mysql默认的复制方法,主库在执行完事务后,将操作写入二进制日志中,然后直接将日志发送,继续处理操作,并不关心从库是否接受并处理,而如果主crash掉,提交的信息可能并没有传递到从库上,同时另一个从提升为主时,可能会出现数据丢失等情况
8.延迟复制
延迟复制:使Slave节点和Master节点保持指定时间的复制间隔。
延迟只是对 SQL_Thread 线程的延迟,主库IO_Thread发生的任何操作所产生的日志都会同步到 slave,也就是说 IO_Thread 线程和主库是没有延迟的。只是SQL_Thread与主库有延迟。只是执行时间延迟,而不是读取二进制日志的时间延迟。
在slave端设置延时
在主库插入数据
Seconds_Behind_Master显示延时时间,会不断刷新
9.并行复制
基于组的并发复制,可以支持在一个database中,并发执行relaylog中的事务。相同的二进制日志组在master上提交并行应用到slave节点上,没有跨数据库的限制,并且不需要把数据分割到多个数据库。
修改slave端的配置文件
slave-parallel-type=LOGICAL_CLOCK #基于组提交的并行用户
slave-parallel-workers=16 #开启16个worker:单线程变成多线程(前两个必须加入,后面为优化)
master_info_repository=TABLE #优化选项,默认以文件存储,记录master信息,用表来记录,更新速度更快
relay_log_info_repository=TABLE #日志信息,用表来记录(原来是记录在磁盘)
relay_log_recovery=ON #激活recovery:读取master二进制日志,如果损坏,直接丢弃然后重新读取
开启slow_query_log
在slave端执行休眠10s,可以在日志中查询出来
信息以表的形式记录在数据库中
10.基于组复制
MySQL组复制分单主模式和多主模式,mysql 的复制技术仅解决了数据同步的问题,如果 master 宕机,意味着数据库管理员需要介入,应用系统可能需要修改数据库连接地址或者重启才能实现。(这里也可以使用数据库中间件产品来避免应用系统数据库连接的问题,例如 mycat 和 atlas 等产品)。组复制在数据库层面上做到了,只要集群中大多数主机可用,则服务可用,也就是说3台服务器的集群,允许其中1台宕机。多主模式下,所有 server 都可以同时处理更新操作。
1.还原主从节点的所有设置
server1中
删除数据库的原先数据,初始化数据库
修改配置文件,添加组复制的参数
2.设置组
SHOW PLUGINS;
SELECT * FROM performance_schema.replication_group_members;
查询组
3.设置server2
4.设置server3
测试