自学内容网 自学内容网

Ubuntu系统安装MySQL主从模式集群(成功!)

安装MySQL主从模式集群

配置MySQL节点

打开主节点的配置文件

sudo vim /etc/mysql/my.cnf
[client]
port=3306
[mysqld]
default-time_zone='+8:00'
port=3306
# 默认binlog文件的名称
log_bin=mysql-bin
# 当前服务器的ID,不能重复,推荐用服务器IP D段
server-id=1
# 允许主节点读写
read-only=0
# 数据刷盘参数=1时,只要有1个事务提交就会触发写盘的操作,安全性最高,并发性最差
# 数据刷盘参数=0时,由文件系统控制写盘的频率,并发性能最好,但是意外丢失数据的风险最大,这里根据实际需求配置,不建议乱配。
sync_binlog=0
# 排除掉不需要同步的数据库列表
binlog-ignore-db=performance_schema
binlog-ignore-db=information_schema
binlog-ignore-db=sys

重启MySQL服务

sudo systemctl restart mysql

在主节点创建用户,将其权限赋予从节点,用于为从节点提供安全用户登录主节点拷贝二进制日志:

CREATE USER 'slave01'@'%' IDENTIFIED BY '12345678';
GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%';

配置主节点:

重新打开/etc/mysql/my.cnf文件:

sudo vim /etc/mysql/my.cnf
[client]
port=3306
[mysqld]
default-time_zone='+8:00'
port=3306
# 当前服务器的ID,不能重复
server-id=2
# 只允许从节点读
read-only=1
relay_log=mysql-relay-bin
binlog-format=ROW

打开/etc/mysql/mysql.conf.d/mysqld.cnf文件,开启MySQL的远程连接:

# 将bind-address改为0.0.0.0,表示允许远程连接
bind-address=0.0.0.0

重启MySQL服务

sudo systemctl restart mysql

配置从节点:

打开/etc/mysql/my.cnf文件:

vim /etc/mysql/my.cnf

[mysqld]部分下面添加以下行:

log_bin = /var/log/mysql/mysql-bin.log
gtid-mode = ON
enforce-gtid-consistency = ON

然后重启MySQL服务:

sudo service mysql restart

开放端口

(1)开放MySQL的端口

sudo ufw allow 3306/tcp

(2)或者直接关闭防火墙

sudo systemctl stop ufw

最后查看防火墙状态

sudo ufw status

启动主从库

进入主库,记录查询结果的前两列

show master status;

进入从库控制台,输入:

CHANGE REPLICATION SOURCE TO SOURCE_HOST='主库IP地址', SOURCE_USER='slave01',SOURCE_PASSWORD='12345678',SOURCE_LOG_FILE='binlog日志文件名',SOURCE_LOG_POS=binlog日志文件位置;

上述是8.0.23版本之后的,版本之前的如下:

CHANGE MASTER TO MASTER_HOST='IP地址', MASTER_USER='',MASTER_PASSWORD='',MASTER_LOG_FILE='',MASTER_LOG_POS=XXX;

其中里面的主节点ip、主库密码需要更换为自己的ip和密码,File和Postion是在前面主库输入查看主库状态得到的信息。

开启从节点

start replica;  # 8.0.22版本之后
start slave;   # 8.0.22版本之前

在从库输入指令查看从节点列表

show replica status\G;  # 8.0.22版本之后的指令
show slave status\G;  # 8.0.22版本之前的指令

如果要关闭从库

STOP REPLICA;   # 8.0.22版本之后
STOP SLAVE;     # 8.0.22版本之前

同步数据

在主节点创建数据库和表,并插入数据:

CREATE DATABASE test;
USE test;
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users VALUES (1, 'John');

在从节点查看是否存在表:

 use test;
 select * from users;

测试集群

在从节点执行:

USE test;
SELECT * FROM users;

能看到数据,则主从节点数据同步成功。


原文地址:https://blog.csdn.net/cleverstronge/article/details/136638525

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!