当前位置:   article > 正文

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

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

安装MySQL主从模式集群

配置MySQL节点

打开主节点的配置文件

sudo vim /etc/mysql/my.cnf
  • 1
[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

重启MySQL服务

sudo systemctl restart mysql
  • 1

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

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

配置主节点:

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

sudo vim /etc/mysql/my.cnf
  • 1
[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

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

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

重启MySQL服务

sudo systemctl restart mysql
  • 1

配置从节点:

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

vim /etc/mysql/my.cnf
  • 1

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

log_bin = /var/log/mysql/mysql-bin.log
gtid-mode = ON
enforce-gtid-consistency = ON
  • 1
  • 2
  • 3

然后重启MySQL服务:

sudo service mysql restart
  • 1

开放端口

(1)开放MySQL的端口

sudo ufw allow 3306/tcp
  • 1

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

sudo systemctl stop ufw
  • 1

最后查看防火墙状态

sudo ufw status
  • 1

启动主从库

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

show master status;
  • 1

进入从库控制台,输入:

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

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

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

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

开启从节点

start replica;  # 8.0.22版本之后
start slave;   # 8.0.22版本之前
  • 1
  • 2

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

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

如果要关闭从库

STOP REPLICA;   # 8.0.22版本之后
STOP SLAVE;     # 8.0.22版本之前
  • 1
  • 2

同步数据

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

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

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

 use test;
 select * from users;
  • 1
  • 2

测试集群

在从节点执行:

USE test;
SELECT * FROM users;
  • 1
  • 2

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/239998
推荐阅读
相关标签
  

闽ICP备14008679号