数据库集群(主从配置)
1.1数据库高可用主从备份
原理
master
开启一个二进制日志文件
bin-log
提供给从节点监听同步,从节点判断更新,position指针数值一旦发生变化,说明主节点更新内容
slaver
I/O线程
:通过给定的主节点信息,登陆到主节点 直接监听二进制文件对比上次监听的内容,获取position,查看是否发生了变动
如果抓取到了更新的内容,存放到节点本地的中继日志
中继日志
存储过度的更新的sql语句,交给sql现成处理,也有position判断更新的概念
sql线程
监听本地的中继日志,判断更新,执行更新的语句,保持和主节点的同步关系
将两个云主机安装数据库软件(Percona)
准备一个文件夹管理
Percona
解压后的文件
[root@10-9-104-184 software]# mkdir percona
拷贝安装包到文件夹中
[root@10-9-104-184 software]#
cp /home/resources/Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar ./percona/
解压出所有的rpm包
[root@10-9-104-184 percona]#
tar -xf Percona-Server-5.6.24-72.2-r8d0f85b-el6-x86_64-bundle.tar
按照顺序安装rpm安装包**=Percona-Server
debuginfo
[root@10-9-104-184 percona]#
rpm -ivh Percona-Server-56-debuginfo-5.6.24-rel72.2.el6.x86_64.rpm
shared
[root@10-9-104-184 percona]# rpm -ivh Percona-Server-shared-56-5.6.24-rel72.2.el6.x86_64.rpm
client
[root@10-9-104-184 percona]#
rpm -ivh Percona-Server-client-56-5.6.24-rel72.2.el6.x86_64.rpm
server
[root@10-9-104-184 percona]#
rpm -ivh Percona-Server-server-56-5.6.24-rel72.2.el6.x86_64.rpm
验证安装
#service mysql start/restart/stop
开启用户登录权限
开启一个使用root/root 登陆的用户
[root@10-9-104-184 percona]# mysqladmin -u root password 'root'
在
mysql.user
表格中添加了一个本地登录权限的root/root用户开启远程访问权限
mysql> grant all on *.* to 'root'@'%' identified by 'root';
意思:
对用户为
root
密码为root
登录的任何远程客户端,开启数据库所有权限
grant
权限(all
)
on
数据库.表格(*.*
)
to
'用户登录名'@'远程客户端的host地址'('root'@'%'
)
identified by
密码明文('root'
)连接数据库
修改所有的
root
用户名的登陆密码设置为root
配置主从关系
主节点配置
my.cnf
找到名为
/etc/my.cnf
配置文件中指定了各种数据,配置,日志的目录和启动环境加载的数据文件
可能出现的问题
找不到
my.cnf
1.将其他服务器的同名文件复制过来
2.删除,重新安装
yun -y remove Percona*
添加两个配置
server-id=1
当数据库单机时,server-id没有用处
一旦使用数据库搭建主从集群,需要指定一个主从集群中的不同server-id值
log-bin=mysql-log
指定主节点生成的二进制文件名称
该文件记录所有写操作的二进制文件
重启mysql
[root@10-9-104-184 percona]# service mysql restart
观察当前节点的主节点角色信息
mysql> show master status\G;
从
master
的status
中获取position值交给从节点所监听的配置
从节点配置
my.cnf
server-id=2
login-bin=mysql-log
:为双机热备双向主从做准备
重启mysql服务,重新加载配置文件
[root@10-9-100-26 home]#
service mysql restart
挂载从节点到主节点
CHANGE MASTER TO
MASTER_HOST='10.9.104.184',
MASTER_PORT=3306,
MASTER_USER='root',
MASTER_PASSWORD='root',
MASTER_LOG_FILE='mysql-log.000002',
MASTER_LOG_POS=323
检查一下从节点的status
mysql> show master status\G;
此命令待验证
主从关系测试
在从节点写入数据在teacher表格中
insert into teacher(id,name) values("4","Mr.CAO");
在主节点添加一条相同的数据,id相同,name不同
insert into teacher (id,name) values("4","曹老师")
从节点没有发生任何变化
数据同步失败原因
主从由于sql执行了带有错误的sql语句,同步关系已经崩溃(从节被限制写操作)
解决