共计 1992 个字符,预计需要花费 5 分钟才能阅读完成。
MySQL集群概念
数据库集群,顾名思义,就是利用至少两台或者多台数据库服务器,构成一个虚拟单一数据库逻辑映像,像单数据库系统那样,向客户端提供透明的数据服务。
采用MySQL集群,需要部署主从关系,主节点用来写数据,从节点用来读数据,所以主从节点一般为一对多的关系,使用MySQL集群,用户可以从多个从节点读取数据,大大缓解了读取数据的压力,使用MySQL集群,在主节点写入的数据会自动同步到从节点从而降低了数据丢失的可能性
从概念中我们可以知道,MySQL集群是由多个数据库服务器构成的,但这里为了方便我们就使用多个MySQL实例代替多个MySQL服务器,其实最后完成的效果是相同的
部署MySQL多实例的步骤在这就跳过了,今天我们就从安装MySQL多实例之后来开始讲解如何部署我们的MySQL集群
关于MySQL多实例安装部署的步骤我记录在这篇文章中了,有问题的小伙伴可以去看一下 MySQL多实例安装部署
部署MySQL集群
本次实验共有四个节点,一个主节点,三个从节点
1.停止所有mysql实例
这里我以端口为3307的实例为例,其他实例只需修改命令中的端口号即可
cd /usr/local/mysql/bin/
./mysql -uroot -p -P端口号 -h127.0.0.1
./mysql -uroot -p -P3307 -h127.0.0.1
执行SQL命令
shutdown;
查看MySQL进程
ps -ef | grep mysql
所有实例都已经关闭
2.配置my.cnf文件,确定主从节点
这里我将3307端口的实例设置为主节点,其余为从节点
主节点
vi /usr/local/mysql/data/3307/my.cnf
添加配置
log-bin=mysql-bin
server-id是唯一的,每个节点的server-id必须不同,这里以每个节点的端口号为例
server-id=3307
从节点
因为从节点有多个,这里以配置端口号为3308的节点为例,其他从节点只需修改server-id的值即可
vi /usr/local/mysql/data/3307/my.cnf
添加配置
server-id=3308
启动所有实例
cd /usr/local/mysql/bin/
./mysqld_safe –defaults-file=/usr/local/mysql/data/3307/my.cnf &
./mysqld_safe –defaults-file=/usr/local/mysql/data/3308/my.cnf &
./mysqld_safe –defaults-file=/usr/local/mysql/data/3309/my.cnf &
./mysqld_safe –defaults-file=/usr/local/mysql/data/3310/my.cnf &
查看MySQL进程
ps -ef | grep mysql
所有实例成功启动
查看主节点二进制日志指针位置
cd /usr/local/mysql/bin/
./mysql -uroot -p -P3307 -h127.0.0.1
执行SQL命令
show master status;
当主节点修改数据或修改配置时,指针的位置都会发生变化
从节点会根据这个指针的位置来判断主节点的数据库状态是否发生变化,从而将自身的数据库与主节点的数据库进行同步
3.在主节点中赋予从节点同步的权限,同步需要创建用户名和密码
执行SQL命令
grant replication slave on . to ‘用户名’@’%’ identified by ‘密码’
这是我创建的用户名(copy)和密码(123456)
再次查看主节点二进制日志指针位置
show master status;
因为我们修改了数据库的配置所以这里指针的位置发生了变化
初始化指针位置
reset master;
4.在从节点中添加主节点的主机名,端口号,同步用户名和密码,二进制日志文件名,指针起始位置
这里还是以一个从节点为例
cd /usr/local/mysql/bin/
./mysql -uroot -p -P3308 -h127.0.0.1
执行SQL命令
主节点主机名,端口号
change master to master_host=’10.100.119.19′,master_port=3307,
同步用户名,密码
master_user=’copy’,master_password=’123456′,
主节点二进制日志文件名,指针起始位置
master_log_file=’mysql-bin.000001′,master_log_pos=154;
启动从节点
start slave;
注意:每个从节点都要执行上面的配置
查看从节点状态
show slave status\G;
为了保险起见,最好还是查看一下所有的从节点状态
5.测试从节点自动同步主节点数据
创建的数据库自动同步
向表中添加的数据自动同步