品牌网站建设大概费用,金华商城网站制作,深圳做网站开发,西安网红打卡景点排行榜CentOS 7上搭建MySQL集群 介绍一主一从步骤1#xff1a;准备工作步骤2#xff1a;安装MySQL步骤3#xff1a;配置主服务器步骤4#xff1a;创建复制用户步骤5#xff1a;备份主服务器数据#xff0c;如果没有数据则省略这一步步骤6#xff1a;配置从服务器步骤7#xf… CentOS 7上搭建MySQL集群 介绍一主一从步骤1准备工作步骤2安装MySQL步骤3配置主服务器步骤4创建复制用户步骤5备份主服务器数据如果没有数据则省略这一步步骤6配置从服务器步骤7配置主从复制步骤8测试主从复制 处理宕机情况处理Slave宕机处理Master宕机 一主多从多主多从 介绍
MySQL集群允许您创建高可用性的数据库环境提供故障容忍性和负载均衡。在本博客中我们将演示如何在两台CentOS 7服务器上搭建MySQL集群包括一主一从和多主多从的配置。
一主一从
步骤1准备工作
在开始之前确保您已经完成以下准备工作
两台CentOS 7服务器可以是物理机或虚拟机。确保服务器之间可以互相访问互相能ping通。演示环境是两台试用云服务器。 腾讯云服务器
步骤2安装MySQL
在两台服务器上安装MySQL请参考CentOS7服务器Yum安装MySQL5.7
步骤3配置主服务器
在主服务器上编辑MySQL配置文件
sudo vim /etc/my.cnf添加或修改以下配置项
[mysqld]
# 每个MySQL服务器都需要一个唯一的标识符server-id用于区分主从服务器以及避免复制冲突。
server-id22
# 用于开启MySQL的日志功能以便记录增删改操作。二进制日志文件将记录所有这些更改并用于主从复制。
log-bin mysql-bin
# 设置logbin格式
binlog_formatSTATEMENT
# 用于指定需要同步的数据库。如果你希望同步特定的数据库可以设置多个binlog-do-db选项每个选项指定一个数据库可设置为通配符模式ddz_*表示同步以ddz_开头的数据库
binlog-do-dbddz_test
# 屏蔽不需要同步的系统库
binlog-ignore-dbmysql
binlog-ignore-dbinformation_schema
# 从服务器是否记录自己的日志。如果启用(1)从服务器会记录在执行复制时的所有更改。
log-slave-updates1
# 用于指定错误日志的文件名和位置。
# log-error
# 指定MySQL服务器进程ID的文件名和位置。
# pid-file
# 控制MySQL在处理已经建立的连接时允许待处理的的最大连接数。
# back_log
# 限制MySQL的最大连接数。
# max_connections
# 限制每个用户允许的最大连接数。
# max_user_connections
# 限制通信缓冲区中的数据量大小默认大小为1MB。
# max_allowed_packet可更具自己需要灵活配置。 binlog_format 主要是用来调整binlog的记录格式。 MySQL的binlog二进制日志用于记录数据库中的所有更改这些日志可以用于主从复制和数据恢复等。binlog_format 选项可以控制binlog的记录格式它有三个可选值STATEMENT、ROW和MIXED。 STATEMENT每一条修改数据的SQL语句都会记录到binlog中但不会记录每一条sql语句和每一行的数据变化。在slave端复制时sql进程会解析成和原来master端执行过的相同的sql再次执行。优点是减少binlog日志量节约磁盘IO提高性能。缺点是在某些情况下会导致主从复制不一致比如sleep()函数、last_insert_id()以及user-defined functions(udf)等可能会出现问题。 ROW在ROW格式下binlog中会记录每一行数据被修改后的情况然后在slave端对相同的数据进行修改。优点是可以清楚地记录每一行数据修改的细节。缺点是数据量太大可能会增加磁盘IO和内存消耗。 MIXEDMIXED模式是以上两种模式的混合使用。一般的复制使用STATEMENT模式保存binlog对于STATEMENT模式无法复制的操作使用ROW模式保存binlog。MySQL会根据执行的SQL语句选择日志保存方式。 保存并关闭文件。然后重启MySQL服务
sudo systemctl restart mysqld步骤4创建复制用户
登录到MySQL服务器创建用于复制的用户
# 登录
mysql -u root -p# 在MySQL中执行以下命令
# 创建用户
CREATE USER replication% IDENTIFIED BY your_password;
# 指定IP
# CREATE USER replication192.168.1.13 IDENTIFIED BY your_password;
# 配置授权
GRANT REPLICATION SLAVE ON *.* TO replication%;
# 指定IP
# GRANT REPLICATION SLAVE ON *.* TO replication192.168.1.13;
# 刷新缓存
FLUSH PRIVILEGES;查看是创建成功只需执行一下SQL
SELECT USER,HOST FROM mysql.user;步骤5备份主服务器数据如果没有数据则省略这一步
在主服务器上创建数据备份
mysqldump -u root -p --database mydb mydb.sql步骤6配置从服务器
在从服务器上编辑MySQL配置文件
sudo vim /etc/my.cnf添加或修改以下配置项
[mysqld]
# 每个MySQL服务器都需要一个唯一的标识符server-id用于区分主从服务器以及避免复制冲突。
server-id33
# 用于指定需要同步的数据库。如果你希望同步特定的数据库可以设置多个binlog-do-db选项每个选项指定一个数据库可设置为通配符模式ddz_*表示同步以ddz_开头的数据库
binlog-do-dbddz_test
# 屏蔽不需要同步的系统库
binlog-ignore-dbmysql
binlog-ignore-dbinformation_schema
# 主从复制架构中非常重要的一部分它用于确保从服务器能够及时地获取和应用主服务器的更改以保持与主服务器的数据一致性。
relay-logmysql-relay保存并关闭文件重启mysql。
sudo systemctl restart mysqld然后导入主服务器的数据备份没有数据则省略这一步
mysql -u root -p mydb.sql步骤7配置主从复制
回到主服务器获取主服务器的状态
mysql -u root -p# 在MySQL中执行以下命令
SHOW MASTER STATUS;记录下返回的文件名和位置。
回到从服务器配置从服务器连接到主服务器
# 登录
mysql -u root -p# 在MySQL中执行以下命令将 file_name 和 position 替换为上一步中记录的值
CHANGE MASTER TO MASTER_HOST主服务器的IP地址, MASTER_USERreplication, MASTER_PASSWORDyour_password, MASTER_LOG_FILEfile_name, MASTER_LOG_POSposition;# 开启同步功能
START SLAVE;查看是否开启成功
SHOW SLAVE STATUS;这两项都为Yes则开启成功。
步骤8测试主从复制
在主服务器上创建一个新的数据库并添加一些数据然后在从服务器上验证是否同步。
# 创建数据库
CREATE DATABASE ddz_test;
# 创建表
CREATE TABLE ddz_test.test_user (id INT NOT NULL AUTO_INCREMENT,name VARCHAR ( 50 ) DEFAULT NULL,
PRIMARY KEY ( id )) ENGINE INNODB DEFAULT CHARSET utf8;
# 新增一条数据
INSERT INTO ddz_test.test_user(name)VALUES(测试你个老六);进入主从MySQL上验证是否都有数据。
处理宕机情况
处理Slave宕机
MySQL slave服务器宕机后重启它不会自动恢复同步复制Master的数据我们需要做一些操作来手动重新同步。具体步骤如下
首先你需要在Slave服务器上暂停复制。你可以使用以下SQL命令来操作
STOP SLAVE;进入Master服务备份数据
# 备份所有数据库
mysqldump -u root -p --all-databases --master-data backup.sql
# 备份指定数据库 ddz替换成你的数据库
mysqldump -u root -p --databases ddz --master-data backup.sql进入Slave导入数据
# 导入所有数据库
mysql -u [username] -p backup.sql
# 导入指定数据库
mysql -u [username] -p ddz backup.sql然后你需要获取Master服务器上当前的二进制日志文件和位置。在Master服务器上你可以使用以下SQL命令获取
SHOW MASTER STATUS;在Slave服务器上你需要配置Master服务器的这些信息。你可以使用以下SQL命令设置
RESET SLAVE;
CHANGE MASTER TO MASTER_HOSTmaster_ip, MASTER_USERreplication_user, MASTER_PASSWORDreplication_user_password, MASTER_LOG_FILErecorded_log_file, MASTER_LOG_POSrecorded_log_position;这里的 recorded_log_file 和 recorded_log_position 就是你备份时记录的 master 的 binlog 文件和位置。
最后你需要在Slave服务器上重新开始复制。你可以使用以下SQL命令开始复制
START SLAVE;如果步骤正确Slave服务器现在应该重新开始复制Master服务器上的数据。
另外如果你希望Slave服务器在重启后自动开始复制你可以在my.cnfMySQL配置文件中设置一个参数如下
[mysqld]
skip-slave-startfalse然后重启你的MySQL服务。 但是必须注意如果Master和Slave不处于同步状态开启这个选项可能会导致数据不一致的问题。所以按需开启。
处理Master宕机
调用 SHOW SLAVE STATUS 获取 Relay_Master_Log_File 和 Exec_Master_Log_Pos 记录下得到的这两个值。
SHOW SLAVE STATUS;调用 STOP SLAVE; 命令停止复制过程。调用 RESET MASTER; 命令清空二进制日志。
STOP SLAVE;
RESET MASTER;提升 Slave 为新 Master :
CHANGE MASTER TO MASTER_LOG_FILERelay_Master_Log_File, MASTER_LOG_POSExec_Master_Log_Pos;然后调用 START SLAVE; 在停止进程的位置启动复制进程。
START SLAVE;确保所有的 Slave 重新连接新的 Master如果有多个 Slave需要在每个 Slave 上更新他们的 Master 信息以指向新的 Master。 检查数据完整性在所有的重要操作之后别忘记对数据库进行必要的检验确保数据的完整性和准确性。 恢复原 Master 修复原 Master 服务器后可以将其设置为新的 Slave然后将数据从新的 Master 同步过去之后再将其提升为 Master完成故障恢复。
一主多从
要配置多主多从重复步骤6到步骤8在另一台服务器上。
多主多从
要配置多主多从重复步骤3到步骤8在另一对服务器上。
总结 通过完成上述步骤您将在两台CentOS 7服务器上成功搭建了MySQL集群包括一主一从和多主多从的配置。这将提高数据库的可用性和性能使您能够更好地处理数据库工作负载和故障容忍性。如果需要更多节点只需重复配置多主多从的步骤。希望这个博客对您有所帮助